Dividere Stringhe per MySQL

  • Creatore Discussione Creatore Discussione matador
  • Data di inizio Data di inizio

matador

Utente Attivo
26 Nov 2011
68
0
0
Weila' raga! Rieccomi con una nuova domanda.. :D
Ultimamente vi ho chiesto aiuto su come potevo dividere una stringa per l'inserimento al DataBase,
e grazie a Borgo devo dire di aver risolto tutto alla grande...
Adesso pero' avrei bisogno di un nuovo aiuto...
Vorrei poter suddividere una TextArea per l'Inserimento al Database.

Ritornando al semplice esempio che io abbia queste 3 Float: X,Y,Z,
vorrei poter dividere una TextArea del Genere:

Funzione(10.0,5.8,2.1);
Funzione(13.0,5.6,7.3);

Dove:
Funzione( & ); vengono eliminati, e le restanti Float vengano suddivise con Explode.
E' possibile fare una cosa del genere?
La mia difficolta' sta' nel suddividere una stringa su 2 righe, non so' come fare...

10.0 - Da inserire in X
5.8 - Da inserire in Y
2.1 - Da inserire in Z

13.0 - Da inserire in X
5.6 - Da inserire in Y
7.3 - Da inserire in Z

Grazie raga! Spero solo di essermi riuscito a spiegare bene :(
 
Allora io praticamente ho una textarea, e in questa TextArea inserisco questo:
(Faccio un esempio piu' semplice)

10.0,5.8,2.1
13.0,5.6,7.3


Proprio cosi' come sta', anche la funzione a capo.
Una volta inserito questo, vorrei che questo testo venga suddiviso come gia' mi spiegasti con l'Explode.

Ecco ti copio la discussione: http://forum.mrwebmaster.it/php/28314-float-mysql.html

Adesso io vorrei praticamente dividerle le 2 stringhe, non so' in poche parole come calcolare la stringa sotto...
Capita che devo inserire piu' Float, e metterle una alla volta e' impossibile, con questo metodo dovrei fare prima...
Capito cosa intendo?
 
Prova con le PCRE. Qualcosa del genere:
PHP:
<?php

$data = <<<EOF
Funzione(10.0,5.8,2.1);
Funzione(13.0,5.6,7.3);
EOF;

preg_match_all('/Funzione\(([0-9\.\,]+)\);/', $data, $matches);

$values = array();

foreach ($matches[1] as $match) {
    $values[] = explode(',', $match);
}

print_r($values);
Visualizza:
Codice:
Array
(
    [0] => Array
        (
            [0] => 10.0
            [1] => 5.8
            [2] => 2.1
        )

    [1] => Array
        (
            [0] => 13.0
            [1] => 5.6
            [2] => 7.3
        )

)
 
Grazie 1000 Alessandro, anche se non ho ben capito come applicarlo al Form sinceramente...
 
ciao
scusa una cosa, ma nel campo di text tu scrivi:
Funzione(10.0,5.8,2.1)
Funzione(13.0,5.6,7.3)

oppure semplicemente

10.0,5.8,2.1
13.0,5.6,7.3
?
evidentemente andando a capo ad ogni riga
se vai a capo la stringa conterrà uno o più /n (più se immetti più righe di due)
nel secondo caso (dove non c'è scritto funzione)
potresti fare in questo modo (immagino che tu legga la stringa con un $_post)

PHP:
<?php
//$stringa=nl2br($_POST['nome_campo_testo'];//se proviene da un form con nl2br trasformo /n in <br />
var_dump("10.0,5.8,2.1\n13.0,5.6,7.3");echo "<br>";//toglere se da form
$stringa=nl2br("10.0,5.8,2.1\n13.0,5.6,7.3");//con nl2br trasformo /n in <br />, togliere se da form
var_dump($stringa);echo "<br>";
$prima_divisione=explode("<br />",$stringa);
var_dump($prima_divisione);echo "<br>";
//in $prima_divisione[0] => 10.0,5.8,2.1
//in $prima_divisione[1] => 13.0,5.6,7.3
//ti metto in modo che non devi considerare quante righe hai immesso
foreach($prima_divisione as $chiave => $valore){
	var_dump($valore);echo "<br>";
	$singoli[$chiave]=explode(",", $valore);
}
var_dump($singoli);echo "<br>";
/*
$singoli[0][0] => 10.0
$singoli[0][1] => 5.8
$singoli[0][2] => 2.1
$singoli[1][0] => 13.0
$singoli[1][1] => 5.6
$singoli[1][2] => 7.3
*/
//verifica
foreach($singoli as $ch_1 => $val_1){
	echo "la ".($ch_1+1)."° riga è formata dai valori:<br>";
	foreach($val_1 as $ch_2 => $val_2){
		echo "&nbsp;&nbsp;&nbsp;".($ch_2+1).": $val_2<br>";
	}
}
?>

p.s.
ti ho messo i var_dump per capire cosa succede
 
Grazie 1000 Borgo!
Dopo provo il Code e ti faccio sapere, anche se mi e' tutto chiaro non dovrei avere problemi :)
 

Discussioni simili