Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Discussione: da array a variabili

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074

    da array a variabili

    Dunque, richiamo da una tabella del db una serie di valori, con questo codice:
    -----------------------------------
    $result = mysql_query("SELECT * FROM `utenti`");
    while ($row = mysql_fetch_array($result)) {
    if ($row['crs']) {
    echo "<font color=\"#003399\" size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\">[b]CORSO: ";
    echo $row["crs"];
    echo "
    ";
    }
    }
    -----------------------------------
    il passaggio successivo, nella medesima pagina, e richiamare sempre dal db altri valori, ma che, di volta in volta, rispondano alla condizione che un determinato valore corrisponda ad uno di quelli precedenti.
    Provo a spiegarmi meglio: la query di prima mi restituisce, ad es., i valori
    Corso n°1
    Corso n°2
    Corso n°3
    quindi io devo richiamare tutti gli allievi del corso n°1, poi del 2 e del 3, utilizzando la condizione WHERE nella query.
    Ad es. con questo codice:
    -----------------------------------
    $result2 = mysql_query("SELECT * FROM `utenti` WHERE `corso`='$chkcorso' and `identita`='$qlf1'");
    while ($row2 = mysql_fetch_array($result2)) {
    echo "<font color=\"#003399\" size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\">[b]";
    echo "DOCENTI: ";
    echo $row2["nome"];
    echo "";
    echo $row2["cognome"];
    echo "
    ";
    }
    -----------------------------------
    Ma come faccio ad ottenere la variabile 'di controllo' $chkcorso?
    In realtà, poi, mi servono 'n' variabili, una per ciascun possibile corso presente nel db... quindi, in effetti, il (mio) problema è anche un tantino più ampio...
    Insomma, quel che vorrei ottenere è qualcosa del genere:
    -----------------------------------
    Corso n°1
    Docenti: Pippo, Ciccio, Lucia
    Tutor: Enza
    Allievi: Maria, Luca, Giorgio, etc...
    Corso n°2
    Docenti: Maria, Giorgio
    Tutor: Lucia
    Allievi: Enza, Luca, Peppe, etc...
    Corso n°3
    Docenti: Antonio, Giorgio
    Tutor: Sergio
    Allievi: Enzo, Luciana, Marina, etc...
    -----------------------------------
    Come faccio ad ottenerlo?
    1Mb di grazie a che mi aiuta!

  2. #2
    puoi fare un foreach o metti due while insieme

    prima soluzione:

    codice:
    $query = mysql_query ( "SELECT * from tabella" ) ;
    
    while ( $result = mysql_fetch_array ( $query ) )
    {
        // ... codice php che ti interessa ...
    
        $query_b = mysql_query ( "SELECT * from tabella2 where campo=".$result['nome_campo'].") ;
    
        while ( $result_b = mysql_fetch_array ( $query_b ) )
        {
            // ... codice php che ti interessa ...
        }
    }
    o usi il foreach e fai in questo modo

    codice:
    $query = mysql_query ( "SELECT * from tabella" ) ;
    
    while ( $result = mysql_fetch_array ( $query ) )
    {
        // ... codice php che ti interessa ...
        // Creo un array con tutti i valori
        $return[] = $result['nome_campo'] ;
    }
    
    foreach ( $return as $k => $v )
    {
        $query = mysql_query ( "SELECT * from tabella2 where campo=".$v."" ) ;
    
        while ( $result = mysql_fetch_array ( $query ) )
        {
            // ... codice php che ti interessa ...
        }
    }
    al posto del foreach puoi usare il for stessa cosa, cambia solo qualcosina, ci sono altri metodi, ma penso che questo vada bene per quello che vuoi fare te
    Chiamatemi sven se volete non ho voglia di fare una nuova email per una nuova registrazione xD
    Mac Future User , Ventilatore for PC Cooler user , - dry is coming -

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    Huum... grazie ma (certamente sbaglio da qualche parte), adesso mi funziona solo la prima parte del problema...
    Questo è il codice che uso:
    --------------------------------
    <?
    $link = mysql_connect($host, $dbuser, $dbpass)
    or die("Impossibile connettersi al database");
    mysql_select_db($dbname)
    or die("Impossibile selezionare il database");
    $qlf1="docente";
    $qlf2="tutor";
    $query = mysql_query ( "SELECT * FROM `utenti`" );
    while ($result = mysql_fetch_array ($query)) {
    if ($result['crs']) {
    echo "<font color=\"#003399\" size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\">[b]CORSO: ";
    echo $result["crs"];
    echo "
    ";
    }
    $query2 = mysql_query ( "SELECT * FROM `utenti` WHERE `corso`=".$result['crs']." and `identita`='$qlf1'") ;
    while ($row2 = mysql_fetch_array ($query2)) {
    echo "<font color=\"#003399\" size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\">[b]";
    echo "DOCENTI: ";
    echo $row2["nome"];
    echo "";
    echo $row2["cognome"];
    echo "
    ";
    }
    $query3 = mysql_query("SELECT * FROM `utenti` WHERE `corso`=".$result['crs']." and `identita`='$qlf2'");
    while ($row3 = mysql_fetch_array($query3)) {
    echo "<font color=\"#003399\" size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\">";
    echo "TUTOR: ";
    echo $row3["nome"];
    echo "";
    echo $row3["cognome"];
    echo "
    ";
    }
    }
    echo "
    </font><hr align=\"center\" width=\"400\">";
    ?>
    --------------------------------
    e questo è quanto mi stampa a video:
    --------------------------------
    CORSO: Tomaie

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/ilsitode/public_html/verificacal.php on line 36

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/ilsitode/public_html/verificacal.php on line 46
    CORSO: C.A.D.

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/ilsitode/public_html/verificacal.php on line 36

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/ilsitode/public_html/verificacal.php on line 46
    --------------------------------
    laddove le righe 36 e 46 sono, rispettivamente:
    --------------------------------
    while ($row2 = mysql_fetch_array ($query2)) {
    e
    while ($row3 = mysql_fetch_array ($query3)) {
    --------------------------------
    Dove sbaglio?

  4. #4
    i while li devi mettere uno dentro l'altro, no uno fuori all'altro, cmq se devi fare tanti campi ti consiglierei quasi la ricorsione
    Chiamatemi sven se volete non ho voglia di fare una nuova email per una nuova registrazione xD
    Mac Future User , Ventilatore for PC Cooler user , - dry is coming -

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    ma la struttura del codice è:
    1° while {
    2° while {
    }
    3° while {
    }
    }
    quindi il primo contiene sia il secondo che il terzo...
    non credo che il secondo debba contenere il terzo, in un annidamento progressivo...
    comunque, in effetti di campi ce ne sono ancora (mi sono limitato a questi per semplificare); quindi, cosa sarebbe la 'ricorsione' - se me la consigli - e come funziona?

  6. #6
    ah scusa, ma se nn usi l'indetazione il codice e molto difficile da interpretare
    Chiamatemi sven se volete non ho voglia di fare una nuova email per una nuova registrazione xD
    Mac Future User , Ventilatore for PC Cooler user , - dry is coming -

  7. #7
    Prova cosi, nn ho risolto il problema ma con gli ordie (mysql_error()) alla fine delle query, ti dovrebbe dare un errore piu dettagliato
    codice:
    <?
    
    $link = mysql_connect($host, $dbuser, $dbpass) or die("Impossibile connettersi al database");
    
    mysql_select_db($dbname) or die("Impossibile selezionare il database");
    
    $qlf1="docente";
    
    $qlf2="tutor";
    
    $query = mysql_query ( "SELECT * FROM utenti" );
    
    while ($result = mysql_fetch_array ($query))or die(mysql_error()) ;
    {
        if ( $result['crs'] )
        {
            echo "<font color=\"#003399\" size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\">[b]CORSO: ";
            echo $result["crs"];
            echo "
    ";
        }
        $query2 = mysql_query ( "SELECT * FROM utenti WHERE corso=".$result['crs']." and identita='".$qlf1."'")or die(mysql_error()) ;
        while ($row2 = mysql_fetch_array ($query2))
        {
            echo "<font color=\"#003399\" size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\">[b]";
            echo "DOCENTI: ";
            echo $row2["nome"];
            echo " ";
            echo $row2["cognome"];
            echo "
    ";
        }
        $query3 = mysql_query("SELECT * FROM utenti WHERE corso=".$result['crs']." and identita='".$qlf2."'")or die(mysql_error()) ;
        while ($row3 = mysql_fetch_array($query3))
        {
            echo "<font color=\"#003399\" size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\">";
            echo "TUTOR: ";
            echo $row3["nome"];
            echo " ";
            echo $row3["cognome"];
            echo "
    ";
        }
    }
    
    echo "</font><hr align=\"center\" width=\"400\">";
    ?>
    Chiamatemi sven se volete non ho voglia di fare una nuova email per una nuova registrazione xD
    Mac Future User , Ventilatore for PC Cooler user , - dry is coming -

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    restituisce quest'errore:
    Parse error: parse error, unexpected T_LOGICAL_OR in /home/ilsitode/public_html/verificacal.php on line 30
    La riga 30 é:
    while ($result = mysql_fetch_array ($query)) or die (mysql_error()) ;
    (quella con il primo while).

  9. #9
    ops, toglici il ; dopo il while, scusa errore mio
    Chiamatemi sven se volete non ho voglia di fare una nuova email per una nuova registrazione xD
    Mac Future User , Ventilatore for PC Cooler user , - dry is coming -

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    idem: restituisce lo stesso errore, stessa riga...

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.