Visualizzazione dei risultati da 1 a 9 su 9

Visualizzazione discussione

  1. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Ciao, sì, il problema è nel ciclo, ma prima di tutto voglio darti un consiglio.
    Chiaramente sei all'inizio con PHP e di conseguenza con l'interfacciamento ad un database, il consiglio è: NON usare le funzioni mysql_ sono state tempo fa abbandonate e più recentemente rimosse, se ti funzionano vuol dire che stai usando una versione di PHP vecchia, così come vecchi sono gli esempi a cui ti sei ispirato per creare quello script.
    Impara da subito ad usare PDO per dialogare col database, in questo modo dovrai imparare una cosa invece che 2 perché appena i tuoi script si troveranno a girare su una versione nuova di PHP non funzioneranno più e dovrai correre a modificare il codice.

    Veniamo al tuo problema.
    la variabile contatore $i è usata male.
    Ad ogni ciclo vale una unità in più, ma ad ogni ciclo cambi anche riga di risultato per via del fetch nel while, quindi è giusto ciò che ottieni ovvero primo ciclo prendi la colonna 0 della prima riga, poi $i+1 e nuova riga, quindi colonna 1 della seconda riga...

    D'altro canto la variabile $i neanche serve, il numero di colonne della tabella non è variabile, lo sai quante sono e sai anche come si chiamano, quindi quel ciclo lo farei così (mantengo le mysql_ per usare qualcosa a te familiare, ma resta il consiglio di passare a PDO)

    Codice PHP:
    // se vuoi usare gli indici delle colonne
    while ( $row mysql_fetch_array($result) )
    {
        echo 
    '<td>' $row[0] . '</td><td>' $row[1] . '</td><td>' $row[2] . '</td>';
    }

    // visto che sai i nomi delle colonne, così il codice è più leggibile, 
    // sai subito che colonna stai visualizzando, senza doverti ricordare le posizioni
    // i nomi sono case sensitive, quindi devi rispettare maiuscole e minuscole, 
    // io li ho scritti così come lì hai proposti tu
    while ( $row mysql_fetch_assoc($result) )
    {
        echo 
    '<td>' $row['ID'] . '</td><td>' $row['DESCRIZIONE'] .  '</td><td>' $row['CERTIFICAZIONE'] . '</td>';



    EDIT: ho erroneamente tralasciato il fatto della selezione della tabella, quindi non sai effettivamente numero di colonne e nomi. Il discorso PDO resta valido, così come l'uso errato di $i, appena ho un attimo correggo la risposta riguardante il resto.
    Ultima modifica di Alhazred; 10-04-2019 a 09:05

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.