Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Help me!!.. cicli while annidati non funzionano

    Ciao a tutti e scusate in anticipo se non posto correttamente.
    io ho questo problema
    ho scritto uno script che dovrebbe recuperare dei valori da una tabella del db
    con il primo ciclo while recupero i NOMI DEI CAMPI DELLA TABELLA, mentre con il secondo dovrei recuperare i VALORI DEI CAMPI ( dopo aver eseguito una select per un determinato valore).
    il recupero dei nomi di campi della tabella funziona, quello che funziona è il recupero dei valori dei campi del quale ne recupera solo uno.
    questo il codice che ho scritto:

    Codice PHP:
    while ($y $numColumns1
          {       
                
    $colname1 mysql_fetch_row($qColumnNames1);
                
    $col1[$colname1[0]] = $colname1[0];
                
    //$nomecol1=$col1[$colname1[0]];
                
                
    echo "<br><div class='divTable'> ";
                echo 
    "<div class='divRow'> ";
                echo 
    "<div class='divCell'> "$col1[$colname1[0]].  "</div>";
                while (
    $row $query->fetch_assoc())
                  {  
                      echo 
    "<div class='divCell'>"$row [$col1[$colname1[0]]] . "</div>"
                  }
                echo 
    "</div>";
                echo 
    "</div>";
              
    $y++;
          } 
    questo quello che dovrei ottenere:

    ldap XXXXXXXX

    nominativo xxxxxxxx

    kpi xxxxxxxx

    skcli xxxxxxx

    updateskcli xxxxxxx

    questo quello che ottengo:

    ldap XXXXXXXX

    nominativo

    kpi

    skcli

    updateskcli


    solo il primo valore e poi il nulla
    mi date una mano a capire dove sto sbagliando??
    gazie

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Mostra anche come assegni $qColumnNames1 e $query.

  3. #3
    Ciao ecco i passaggi iniziali
    Codice PHP:
    //connect with the database
    $db1 mysql_connect($dbHost,$dbUsername,$dbPassword);
    mysql_select_db($dbName,$db1 );
    $query1="SHOW COLUMNS FROM elenco";
    $qColumnNames1 mysql_query($query1);
    $numColumns1 mysql_num_rows($qColumnNames1);
    $db2 = new mysqli($dbHost,$dbUsername,$dbPassword,$dbName);
     if(isset(
    $_POST["submit"]))
        {
    $NOME $_POST['skill'];
        
    $query $db2->query("SELECT * FROM elenco WHERE nominativo ='".$NOME."'"); 
    la parte dei nomi di colonna funziona.. purtropo è solo il recupero dei valori che non va...
    se separo le due query e recupero solo i valori dei campi funziona...
    ma se metto insieme i due cicli while ..stop.. si ferma al primo valore dei campi..
    grazie per l'aiuto

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Perché mischi mysql e msqli? Non è una buona idea, usa solo mysqli, le funzioni mysql_ sono state abbandonate.

    Anche per il primo while, invece di basarti sul numero di record restituiti, usa un ciclo while come fai per $query.
    Io farei così (un po' ad intuito non sapendo come è fatta la tabella, ma dovrebbe darti l'idea):
    Codice PHP:
    // se il db è lo stesso basta farla una volta sola la connessione
    $db = new mysqli('localhost''user''pass''database');

    $colonne $db->query("SHOW COLUMNS FROM elenco");

    $query $db->query("SELECT * FROM elenco WHERE nominativo ='".$NOME."'");

    while ( 
    $col $colonne->fetch_assoc() )
    {
        echo 
    "<br><div class='divTable'> ";
        echo 
    "<div class='divRow'> ";
        echo 
    "<div class='divCell'> "$col['Field'].  "</div>";

        while (
    $row $query->fetch_assoc())
        {  
            echo 
    "<div class='divCell'>"$row[$col['Field']] . "</div>"
        }

        echo 
    "</div>";
        echo 
    "</div>";


  5. #5
    grazie per l'aiuto.
    effettivamente non ci avevo pensato al metodo deprecato ;
    ho provveduto a modificare il codice come mi ha coonsigliato ma continuava a darmi sempre lo stesso problema.
    ... poi mi è venuto il lampo di genio!!!
    ho invertito i due cicli while....
    e TADAAAA!!!
    magicamente funziona tutto
    grazie per l'aiuto...sei stato preziosissimo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.