- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- Php e mysqli problema con array
-
Php e mysqli problema con array
Salve 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/Array
Perche 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