- Home
- Categorie
- Coding e Sistemistica
- Coding
- Php e mysqli problema con array
- 
							
							
							
							
							
Php e mysqli problema con arraySalve a tutti ho un problema con il seguente frammento di codice: <?php $mysqli=new mysqli("$host", "$username", "$psw", "$dbname"); $query="SELECT dzdom_musicbattle_media.image_id, dzdom_musicbattle_media.title FROM dzdom_musicbattle_media WHERE dzdom_musicbattle_media.user_id=42"; $result=$mysqli->query($query); $aUnits=array(); $i=1; $elements=$result->num_rows; while ($row = mysqli_fetch_array($result, MYSQLI_BOTH)){ $img=$row[0]; $titolo=$row[1]; if($i!=$elements){ $aUnits*=array($img=>$titolo); $i++; } } foreach ($aUnits as $sFilename=>$sTitle) { echo"<br>".$sFilename."/".$sTitle; } ?>La risposta ottenuta è la seguente: 1/Array 2/Array 3/Array 4/Array 5/Array 6/Array 7/Array 8/Array 9/Array 10/Array 11/Array 12/Array 13/Array 14/Array 15/Array 16/Array 17/Array 18/Array 19/Array 20/Array 21/Array 22/Array 23/Array 24/Array 25/Array 26/Array 27/ArrayPerche non mi stampa il contenute della variabile $sTitle? Grazie  
 
- 
							
							
							
							
							
prova a fare print_r($sTitle); vedi un po' che cosa ti restituisce... in pratica ti sta dicendo che sTitle è un array quindi non può essere stampata con echo... 
 
- 
							
							
							
							
							
Hai ragione!! come posso invece rendere $sTitle una variabile con solamente dentro il titolo? sbaglio nella dichiarazione dell'array?? 
 
- 
							
							
							
							
							
cosa ti restituisce $sTitle? quando lo stampi con print_r ? 
 
- 
							
							
							
							
							
il segmento è questo foreach ($aUnits as $sFilename=>$sTitle) { echo"<br>".$sFilename."/"; print_r($sTitle); }e mi restituisce: 1/Array ( [1] => Besugo ) 2/Array ( [28] => prova ) 3/Array ( [15] => test1 ) 4/Array ( [16] => test Friday ) 5/Array ( [17] => upload1 ) 6/Array ( [18] => upload2 ) 7/Array ( [19] => upload3 ) 8/Array ( [22] => prova ) 9/Array ( [24] => test Monday ) 10/Array ( [29] => when love takes over ) 11/Array ( [26] => prova2 ) 12/Array ( [27] => titolo dell mp3 ) 13/Array ( [31] => Samoyed ) 14/Array ( [32] => puzzle ) 15/Array ( [33] => paint red ) 16/Array ( [34] => Snow ) 17/Array ( [35] => Prima immagine quadrata ) 18/Array ( [36] => Prima immagine quadrata ) 19/Array ( [37] => ciao 1 ) 20/Array ( [38] => canzone 1 ) 21/Array ( [39] => FAQFEWWW ) 22/Array ( [40] => titolo 1 ) 23/Array ( [41] => REGGA ) 24/Array ( [42] => No one ) 25/Array ( [43] => So What ) 26/Array ( [44] => titolo mp3 ) 27/Array ( [45] => prova 1 )quelli a destra del => sono cio che dovrebbe essere stampato 
 
- 
							
							
							
							
							
io farei così: 
 <?php$mysqli = new mysqli("$host", "$username", "$psw", "$dbname"); 
 $query = "SELECT dzdom_musicbattle_media.image_id, dzdom_musicbattle_media.title FROM dzdom_musicbattle_media WHERE dzdom_musicbattle_media.user_id=42";
 $result = $mysqli->query($query);while ($row = mysqli_fetch_array($result, MYSQLI_BOTH)) { 
 $img = $row[0];
 $titolo = $row[1];echo $img . "/" . $titolo."\n";} 
 ?>Non ha senso inserire il contenuto del feth in un array e poi successivamente parsare nuovamente l'array creata... 
 il while percorre l'intero risultato della query fin quando trova elementi.. la dove non ne trova più termina il ciclo.
 
- 
							
							
							
							
							
No, a me serve nell'array perchè non devo solo stamparlo 
 
- 
							
							
							
							
							
allora fai: 
 <?php$mysqli = new mysqli("$host", "$username", "$psw", "$dbname"); 
 $query = "SELECT dzdom_musicbattle_media.image_id, dzdom_musicbattle_media.title FROM dzdom_musicbattle_media WHERE dzdom_musicbattle_media.user_id=42";
 $result = $mysqli->query($query);
 $aElement = array();
 while ($row = mysqli_fetch_array($result, MYSQLI_BOTH)) {
 $img = $row[0];
 $titolo = $row[1];
 $aElement[] = $img . "/" . $titolo;
 }foreach($aElement as $value){ 
 echo $value."\n";
 }?> 
 
- 
							
							
							
							
							
mi spiego meglio a me servirebbe un array di questo formato array=('elemento1'=>'elementoassociato1', 'elemento2'=>'elementoassociato2', 'elemento3'=>'elementoassociato3', 'elemento4'=>'elementoassociato4',); ma di n elementi che vanno ad inserirsi nel ciclo 
 
- 
							
							
							
							
							
<?php $mysqli = new mysqli("$host", "$username", "$psw", "$dbname"); 
 $query = "SELECT dzdom_musicbattle_media.image_id, dzdom_musicbattle_media.title FROM dzdom_musicbattle_media WHERE dzdom_musicbattle_media.user_id=42";
 $result = $mysqli->query($query);
 $aElement = array();
 while ($row = mysqli_fetch_array($result, MYSQLI_BOTH)) {
 $img = $row[0];
 $titolo = $row[1];
 $aElement[] = array($img => $titolo);
 }foreach($aElement as $k =>$value){ 
 echo $value."\n";
 }?> Scrivimi un po' che ti stampa?? 
 
- 
							
							
							
							
							
$aUnits=array(); 
 while ($row = $result->fetch_row()){
 $img=$row[0];
 $titolo=$row[1];
 $aUnits=array($img=>$titolo);
 }questo funziona ma salva solo l'ultimo elemento 
 
- 
							
							
							
							
							
stampa 
 Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array Array
 
- 
							
							
							
							
							
scusami invece di echo $value."\n"; fai print_r($value)."\n"; 
 
- 
							
							
							
							
							
stampa lo stesso array 1/Array ( [1] => Besugo ) 2/Array ( [28] => prova ) 3/Array ( [15] => test1 ) 4/Array ( [16] => test Friday ) 5/Array ( [17] => upload1 ) 6/Array ( [18] => upload2 ) 7/Array ( [19] => upload3 ) 8/Array ( [22] => prova ) 9/Array ( [24] => test Monday ) 10/Array ( [29] => when love takes over ) 11/Array ( [26] => prova2 ) 12/Array ( [27] => titolo dell mp3 ) 13/Array ( [31] => Samoyed ) 14/Array ( [32] => puzzle ) 15/Array ( [33] => paint red ) 16/Array ( [34] => Snow ) 17/Array ( [35] => Prima immagine quadrata ) 18/Array ( [36] => Prima immagine quadrata ) 19/Array ( [37] => ciao 1 ) 20/Array ( [38] => canzone 1 ) 21/Array ( [39] => FAQFEWWW ) 22/Array ( [40] => titolo 1 ) 23/Array ( [41] => REGGA ) 24/Array ( [42] => No one ) 25/Array ( [43] => So What ) 26/Array ( [44] => titolo mp3 ) 27/Array ( [45] => prova 1 ) ma noto che l'id immagine è quello contenuto tra parentesi non quello prima del / 
 
- 
							
							
							
							
							
<?php $mysqli = new mysqli("$host", "$username", "$psw", "$dbname"); 
 $query = "SELECT dzdom_musicbattle_media.image_id, dzdom_musicbattle_media.title FROM dzdom_musicbattle_media WHERE dzdom_musicbattle_media.user_id=42";
 $result = $mysqli->query($query);
 $aElement = array();
 while ($row = mysqli_fetch_array($result, MYSQLI_BOTH)) {
 $img = $row[0];
 $titolo = $row[1];
 $aElement[] = array($img => $titolo);
 }foreach($aElement as $k =>$value){ 
 foreach(value as $kV => $vV){
 echo $kV.'/'.$vV."\n";
 }
 }?> credo che ora debba funzionare 
 
- 
							
							
							
							
							
Funziona tutto grazie mille!!!! 
 
- 
							
							
							
							
							
bene 