• Home
  • Forum
  • Fare Web
  • PHP

Divisione in blocchi

  • Creatore Discussione Creatore Discussione miagy
  • Data di inizio Data di inizio 24 Dic 2015
M

miagy

Utente Attivo
2 Nov 2014
83
1
8
  • 24 Dic 2015
  • #1
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.044
150
63
PR
www.borgo-italia.it
  • 28 Dic 2015
  • #2
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
 
M

miagy

Utente Attivo
2 Nov 2014
83
1
8
  • 1 Gen 2016
  • #3
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.044
150
63
PR
www.borgo-italia.it
  • 2 Gen 2016
  • #4
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
 
Devi accedere o registrarti per poter rispondere.

Discussioni simili

Eseguire un'azione con php ad ogni condivisione su Facebook
  • maxnegri
  • 9 Apr 2019
  • PHP
Risposte
0
Visite
1K
PHP 9 Apr 2019
maxnegri
M
[HTML] Tasto condivisione social e immagine
  • memoria
  • 7 Feb 2019
  • HTML e CSS
Risposte
2
Visite
1K
HTML e CSS 8 Feb 2019
memoria
M
[PHP] Arrotondare risultato di una divisione con round
  • elpirata
  • 20 Dic 2017
  • PHP
Risposte
4
Visite
2K
PHP 21 Dic 2017
tess
T
D
App in webview condivisione
  • djjunior
  • 29 Giu 2017
  • Sviluppo app per Android
Risposte
0
Visite
1K
Sviluppo app per Android 29 Giu 2017
djjunior
D
C
Vendo ,COMMENTI,LIKE,CONDIVISIONE VENDO
  • Citywebnew
  • 10 Apr 2017
  • Annunci servizi di Social Media Marketing
Risposte
0
Visite
1K
Annunci servizi di Social Media Marketing 10 Apr 2017
Citywebnew
C
H
Condivisione posizione Google Maps e navigazione automatica
  • husky82h
  • 25 Mar 2017
  • Sviluppo app per Android
Risposte
0
Visite
1K
Sviluppo app per Android 25 Mar 2017
husky82h
H
G
Offriamo lavoro di publisher per condivisione link sui social
  • guercio
  • 28 Feb 2017
  • Offerte e Richieste di Lavoro e/o Collaborazione
Risposte
7
Visite
2K
Offerte e Richieste di Lavoro e/o Collaborazione 21 Ago 2017
Giuliana Candiano
G
N
[PHP] Lunghezza celle tabella dopo divisione dati query in pagine
  • niuzz0
  • 2 Dic 2016
  • PHP
Risposte
0
Visite
2K
PHP 2 Dic 2016
niuzz0
N
[cerco] sviluppatore Magento e Wordpress e-commerce per condivisione incarico
  • grazia
  • 3 Ago 2016
  • Offerte e Richieste di Lavoro e/o Collaborazione
Risposte
5
Visite
2K
Offerte e Richieste di Lavoro e/o Collaborazione 13 Ago 2016
dariotana
D
Z
Problema condivisione FB
  • z.cristiano
  • 6 Giu 2016
  • Social Media Marketing
Risposte
1
Visite
2K
Social Media Marketing 21 Giu 2016
filomeni
M
creare condivisione NFS come utente
  • m.pittini
  • 25 Mar 2016
  • Server Dedicati e VPS
Risposte
0
Visite
1K
Server Dedicati e VPS 25 Mar 2016
m.pittini
M
C
Reindirizzamento automatico ad una pagina del proprio sito dopo condivisione su facebook
  • Cirano86
  • 8 Gen 2016
  • PHP
Risposte
1
Visite
2K
PHP 8 Gen 2016
alankanz
A
suddivisione dati mysql in tabella
  • achille610
  • 22 Set 2015
  • PHP
Risposte
15
Visite
4K
PHP 2 Ott 2015
borgo italia
R
problema con la condivisione
  • Raffaele95
  • 24 Ago 2015
  • WordPress
Risposte
7
Visite
2K
WordPress 28 Ago 2015
Raffaele95
R
F
pulsanti condivisione social su singola foto
  • fabry085
  • 28 Giu 2015
  • HTML e CSS
Risposte
1
Visite
1K
HTML e CSS 29 Giu 2015
filomeni
L
Problema plugin condivisione articoli sui social
  • Littlebon WP
  • 12 Mag 2015
  • WordPress
Risposte
2
Visite
2K
WordPress 13 Mag 2015
Littlebon WP
L
G
Condivisione in rete locale non funzionante
  • Giovannino60
  • 19 Mar 2015
  • Reti LAN e Wireless
Risposte
2
Visite
2K
Reti LAN e Wireless 25 Mar 2015
Giovannino60
G
D
[Android] Condivisione file cartelle su router Wi-Fi
  • DamianoBaffoni
  • 3 Feb 2015
  • Sviluppo app per Android
Risposte
0
Visite
2K
Sviluppo app per Android 3 Feb 2015
DamianoBaffoni
D
M
Partitioning o divisione in più tabelle?
  • manuel.gentili
  • 6 Nov 2014
  • MySQL
Risposte
1
Visite
955
MySQL 7 Nov 2014
Longo8
Facebook: problemi nella condivisione di un URL.
  • felino
  • 14 Ott 2014
  • Social Media Marketing
Risposte
0
Visite
1K
Social Media Marketing 14 Ott 2014
felino
Condividi:
Facebook X (Twitter) LinkedIn WhatsApp e-mail Condividi Link
  • Home
  • Forum
  • Fare Web
  • PHP
  • Italiano
  • Termini e condizioni d'uso del sito
  • Policy Privacy
  • Aiuto
  • Home
Community platform by XenForo® © 2010-2024 XenForo Ltd. | Traduzione a cura di XenForo Italia
Menu
Accedi

Registrati

  • Home
  • Forum
    • Nuovi Messaggi
    • Cerca...
  • Novità
    • Featured content
    • Nuovi Messaggi
    • Ultime Attività
X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?

X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?