• User Newbie •

    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 🙂


  • User •

    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...


  • User Newbie •

    Hai ragione!! come posso invece rendere $sTitle una variabile con solamente dentro il titolo? sbaglio nella dichiarazione dell'array??


  • User •

    cosa ti restituisce $sTitle? quando lo stampi con print_r ?


  • User Newbie •

    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


  • User •

    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.


  • User Newbie •

    No, a me serve nell'array perchè non devo solo stamparlo


  • User •

    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";
    }

    ?>


  • User Newbie •

    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


  • User •

    <?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??


  • User Newbie •

    $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


  • User Newbie •

    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


  • User •

    scusami invece di echo $value."\n"; fai print_r($value)."\n";


  • User Newbie •

    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 /


  • User •

    <?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


  • User Newbie •

    Funziona tutto grazie mille!!!!


  • User •

    bene 🙂