Divisione in blocchi

miagy

Utente Attivo
2 Nov 2014
83
1
8
Ciao ragazzi e buona vigilia :love:
Premetto che il codice funziona e dunque mi sono permesso di aggiungere le parti principali.
Dato un testo di 1000 caratteri scritto in una textarea come maxlenght 1000 e che viene inserito/calcolato in questo modo:

PHP:
$Msg = stripslashes($Msg);
$Msg = substr($Msg, 0, min(strlen($Msg), 1000));
$Msg = addslashes($Msg);

[...]

$Msg = htmlspecialchars($Msg);
            $MySql = "INSERT INTO Brani (Stanza, Mittente, Destinatario, Ora, Testo)";
            $MySql .= "VALUES ('".addslashes($Stanza)."', '$pg', '$pg', NOW(), '$Msg')";
	        mysql_query($MySql);
                                       
}

volevo chiedervi una modifica.
Se io aumentassi il maxlenght del textarea a infinito ma volessi, nel momento dell'inserimento, suddividere in blocchi da 1000 un testo di, ad esempio, 3000 caratteri, come mi converrebbe farlo?
E la suddivisione in blocchi che mi frena un attimo e mi sta facendo entrare in pappa il cervello.

Faccio un esempio pratico:
- Scrivo un testo di 2000 caratteri (spazi inclusi)
- Inserisco
- Anziché mettermi il testo di 2000 caratteri, me lo divide in 2 (primo: primi 1000 caratteri/secondo: rimanenti).

:byebye:
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
per dividere in blocchi forse ti conviene usare un array
PHP:
<?php
//es $msg lungo 7.654 caratteri
$blocco=array();
$lunghezza=strlen($msg)-1;
//da suddivi in blocchi da 1.000
for($k=0; $k < $lunghezza; $k+=1000){
	$blocco[]=substr($msg, $k, 1000);
}
var_dump($blocco);//per vedere come viene suddiviso
/*
in teoria dovresti trovrti così
in $blocco[0] i primi 1000 caratteri
in $blocco[1] i secondi 1000 caratteri
..ecc..
in $blocco[6] i caratteri rimanenti
*/
?>
però da quello che vedo tu poi fai l'insert in un campo chiamato 'testo' di una tabella quindi in 'testo' cosa metti? la tabella dovrebbe avere tanti campi 'testo' quanti sono i gruppi e non puoi fare una tabella che si allunghi o accorci in funzione dei gruppi che hai, il numero di campi deve essere predisposto prima
 

miagy

Utente Attivo
2 Nov 2014
83
1
8
Ma se invece facessi una cosa simile:

PHP:
$blocchi = array();
$arrayParole = explode($azione, " ");

$txt = "";
while($parola = array_shift($arrayParole)) {
    if (strlen($txt." ".$parola) < 1000) {
         $txt .= " ".$parola;
    } else {
         $blocchi[] = $txt;
         $txt = $parola;
    }
}
$blocchi[] = $txt;

E poi inserissi tanti INSERT quanti sono i blocchi per ovviare al problema?
L'unico dubbio è che una manovra simile non l'ho mai applicata quindi mi trovo in difficoltà con l'inserimento INSERT .-.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
probabilmente si, se non ho capito male quello che vuoi fare probabilmente dovrai usare due tabelle e collegarle.
provo a farti uno schema anche per vedere se ho capito quello che vuoi fare
1) tu hai una tabella chiamata brani in cui metti Stanza, Mittente, Destinatario, Ora, immagino come sarebbe giusto che ogni record sia individuato da una chive primaria
chiamata (es) id
2) il testo essendo molto lungo lo vuoi dividere in blocchi ciascuno con max 1000 caratteri, giusto sin qui?
ti conviene allora fare un'altra tabella così strutturata chiamata es. testi
Codice:
id int(3) autoincrement primarikey
id_brano int(3) //questo lega la tabella brani alla tabella testi
blocco lengtext
3) nella tabella brani elimini il campo testo
schematizzioamo come dovresti fare
4) fai l'insert nella tabella "brani"
5) da qull'insert leggi l'id del record appena inserito con int mysql_insert_id ($ris )
6) crei i blocchi di testo ottenendo l'array
7) fai l'insert dei blocchi di testo
schematizzando e riassumendo
PHP:
<?php
//dati di connessione
$MySql = "INSERT INTO Brani (Stanza, Mittente, Destinatario, Ora)";
$MySql .= "VALUES ('".addslashes($Stanza)."', '$pg', '$pg', NOW()";
$ris=mysql_query($MySql);//fai l'insert in brani
$id_brano_inserito=mysql_insert_id($ris);//ricavi l'id dell'ultimo record inserito
//dividi in blocchi il testo ottenendo l'array $blocchi[]
foreach($blocchi as $blocco){
	$query="INSERT INTO testi (id_brano, blocco) VALUES($id_brano_inserit, '$blocco')";
	$ris=mysql_query($query);
}
//....
?>
poi quando devi leggere
PHP:
<?php
$query_1=mysql_query("SELECT * FROM brani");//con l'eventuale WHERE
while($riga_b=mysql_fetch_array($query_1)){
	$id=$riga_b['id'];
	$stanza=$riga_b['stanza'];
	//...mittente destinatario, ora e visualizzi
	$query_2="SELECT * FROM testi WHERE id_brano=$id";
	$txt="";
	while($riga_t=mysql_fetch_array($query_2)){
		$txt.=$riga_t['blocco'];//ricostruisci il testo
	}
	// e lo mostri a video
}
//.....
?>
tutto se ho capito bene e comunque devi fare delle prove

p.s.
abbandona le vecchie isreuzioni mysql obsolete e passa alle mysqli
 
Discussioni simili
Autore Titolo Forum Risposte Data
elpirata [PHP] Arrotondare risultato di una divisione con round PHP 4
N [PHP] Lunghezza celle tabella dopo divisione dati query in pagine PHP 0
M Partitioning o divisione in più tabelle? MySQL 1
C Risultato della divisione PHP 1
Monital Divisione di una query e resto della divisione PHP 3
F Problema divisione smiles aggiuntivi per pagine Javascript 1
G Ricerca personale per divisione programmatori -Bergamo Offerte e Richieste di Lavoro e/o Collaborazione 0
M Divisione in Pagine PHP 1
G semplice divisione Classic ASP 2
K Visualiuzzare 0 al posto di #Errore in una divisione Database 3
T divisione in pagine... PHP 0
gara1 MIT app: blocchi relazionali Sviluppo app per Android 1
trattorino [Javascript] aprire blocchi via via che si scorre Javascript 0
trattorino [PHP] blocchi div che si posizionano in alto automaticamente PHP 5
V misure blocchi non conformi HTML e CSS 9
D [Risolto] Invio mail a blocchi Classic ASP 31
P Impossibile completare immediatamente l'operazione sul socket non a blocchi. PHP 1
J while dentro while per invio email blocchi PHP 0
N Invio email a blocchi PHP 9
maxbossi Aggiungere blocchi alla sidebar di vB4 CMS (Content Management System) 2
C drupal: blocchi diversi per ogni "pagina" CMS (Content Management System) 5
S Inserimento Video dentro blocchi Javascript 1
M schema a blocchi! HTML e CSS 2
B Evitare che explorer blocchi pulsanti flash Flash 3
C PHP-NUKE: I blocchi LINKS CORRELATI e ARTICLE RATING PHP 0
A Explorer i suoi blocchi HTML e CSS 2
A creare blocchi in aspnuke 2.0.4 Classic ASP 0
A crea blocchi asp nuke 2.0.4 Classic ASP 0

Discussioni simili