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

    Loop infinito su mysql_fetch_array

    Sto impazzendo, e non capisco l'errore.
    Ho questo codice,
    codice:
    <label>Regione: <select name="regione" >
    <?php
    while($regione = mysql_fetch_array(mysql_query("SELECT * FROM regioni ORDER BY regione"))){
    echo '<option value="'.$regione[0].'">'.$regione[1].'</option>';
    }
    ?>
    </select></label>
    Lo provo, e teoricamente non ci trovo errori, faccio il test sulla pagina e mi va in loop infinito! Subito mi caricava il primo valore ma infinitamente, ora mi va in caricamento infinito, cioè mi rimane la pagina precedente con il caricamento (pagina troppo pesante diciamo). Non riuscendo a capire il problema ho smanettato un po e sono arrivato a questo codice.

    codice:
    <?php            
    $queryregione= mysql_query("SELECT * FROM regioni ORDER BY regione");
    ?>
    <label>Regione: <select name="regione" >
    <?php
    while($regione = mysql_fetch_array($queryregione)){
    echo '<option value="'.$regione[0].'">'.$regione[1].'</option>';
    }
    ?>
    </select></label>
    Subito me lo caricava bene quindi elenco delle regioni da database ordinate in ordine alfabetico, poi testardo io per cercare di capire dove stava l'errore ho riprovato a rimetterlo come prima e ogni tanto me lo carica giusto e ogni tanto no!

    Cosa può essere?

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Stavi operando nel modo sbagliato, al fetch devi passargli il risultato della query, se gli fai rieseguire ogni volta la query è ovvio che non finirà mai, ad ogni cilco ricomincia dall'inizio.
    Si fa così (in pratica il secondo metodo che hai postato)
    Codice PHP:
    $query "SELECT * FROM regioni ORDER BY regione";

    $result mysql_query($query); //così viene eseguita adesso e basta

    while($regione mysql_fetch_array($result))
    {
        echo 
    '<option value="'.$regione[0].'">'.$regione[1].'</option>';


  3. #3
    Grazie Alhazred.

    Però non capisco una cosa... ed è... nel primo esempio che ho scritto posso capire il tuo discorso, difatti lo avevo pensato anche io.

    Ma non capisco nel secondo perchè mi faccia quello scherzo? cache?
    Alla fine invece di assegnare una query ad una variabile, e poi farla eseguire cercavo di farla tutto nella stessa riga...
    cercavo di risparmiare un po di righe

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Nel secondo caso cosa intendi per "a volte me lo carica giusto e a volte no"? Sempre lo stesso problema? Resta a caricare e non appare niente?

    Questo non c'entra sicuramente col problema, comunque ricorda che le istruzioni mysql_ sono deprecate, sugli hosting più aggiornati non funzioneranno, quindi sostituiscile con le istruzioni mysqli_ oppure usa PDO.

  5. #5
    Si praticamente mi rimane la pagina in caricamento continuo... e difatti non capivo... ho provato ad usare la funzione tutta sul while perchè vista online in qualche tutorial... però ho sempre usato l'altra versione, e infatti sono andato in panico perchè poi non mi funzionava più nulla! ne nella vecchia maniera ne nella nuova... ma l'unica cosa che mi viene da pensare è per un problema di cache!
    anche perchè ho un raspberry che uso come server locale (è dove sto lavorando).
    E di solito era reboot/carico con il codice funzionante/va tutto/modifico/va in loop/rimodifico con il codice funzionante/non va di nuovo nulla!

    e grazie per le istruzioni, me le studierò un po, effettivamente ho studiato PHP su vecchi manuali (PHP4 mi pare) e a scuola, ed ho sempre usato quelle funzioni, avevo letto qualche cosina online su queste nuove istruzioni ma per pigrizia non sono mai andato a studiarmele. Tanto che sei così gentile, cosa cambia tra le 2, cosa conviene?

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Sì probabilmente allora si tratta di ritardo nell'aggiornamento dello script, quando fai qualche modifica e ti sembra strano che non funzioni (come in questo caso), prova a riavviare il server.

    Per quanto riguarda mysqli_ cambia che ne esistono 2 versioni, quella Object oriented e quella procedurale, così puoi scegliere quella adatta al progetto che stai sviluppando.
    La versione procedurale è praticamente identica all'uso di mysql_ ad eccezione del fatto che per alcune funzioni è obbligatorio passare anche la variabile contenente la connessione al db, mentre per mysql_ è opzionale, quindi in realtà non c'è niente di nuovo da imparare.

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.