Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503

    Ciclo for: incremento che non mi spiego

    Ho questo codice all'interno di una mia pagina:
    Codice PHP:
    for ($i=0$i<$AffectedRows$i++) {
        print 
    "<tr bgcolor=".$colori[$riga%2].">";
        print 
    "<td>".mysql_result($dbresult,$i,"nome")."</td>";
        print 
    "<td>".mysql_result($dbresult,$i,"cognome")."</td>";
        print 
    "<td>".mysql_result($dbresult,$i,"specializzazione")."</td>";
        print 
    "<td>".mysql_result($dbresult,$i,"sede")."</td>";
        print 
    "<td>".mysql_result($dbresult,$i,"citta")."</td>";
        print 
    "<td>".$i."</td>";
        print 
    "<td><a href='dettagli_medico.php?id=".mysql_result($dbresult,$i,"codice").">Visualizza</a></td>";
        print 
    "<td>".$i."</td>";
        print 
    "</tr>";
        
    $riga++;

    le istruzioni
    print "<td>".$i."</td>";
    le ho aggiunte io per controllare il comportamento di $i ed ecco cosa accade:

    Inizio prima iterazione
    - prima istruzione print "<td>".$i."</td>"; --> $i = 0
    - secnda istruzione print "<td>".$i."</td>"; --> $i = 1 (chi l'ha incrementata???)

    inizio seconda iterazione
    - prima istruzione print "<td>".$i."</td>"; --> $i = 2
    -seconda isctruzione print "<td>".$i."</td>"; --> $i = 2 (perché stavolta non ha fatto la stessa cosa strana??)

    Da cosa può dipendere questo comportamento?

  2. #2

    Re: Ciclo for: incremento che non mi spiego

    Beh... il comportamento strano non me lo spiego, ma onestamente, trovo tu possa fare moooolto di più per ottimizzare il codice in partenza.
    C'è una profusione di cose inutili nel codice, che appesantisce tutto.

    Io ti consiglio di fare come segue:
    Codice PHP:
    // qui esegui la tua query
    $w 1// il contatore

    /* qui devi mettere in echo i tag di apertura della tabella */


    while ($fetch mysql_fetch_array($query)) {
     
    echo 
    "
    <tr bgcolor="
    .$colori[$w%2].">
       <td>
    $w</td>
       <td>"
    .$fetch['nome']."</td>
       <td>"
    .$fetch['cognome']."</td>
       <td>"
    .$fetch['specializzazione']."</td>
       <td>"
    .$fetch['sede']."</td>
       <td>"
    .$fetch['citta']."</td>
       <td>
         [url='dettagli_medico.php?id="
    .$fetch[']Visualizza[/url]
       </td>
    </tr>
    ";
    $w++;
    }
    /* qui devi mettere in echo i tag di chisura della tabella */ 
    Ora, a prescindere che io odio le tabelle, ma che talvola sono comode, come vedi con questo metodo risparmi codice, e con il ciclo di WHILE abbinato al fecthing dei risultati della query, risula anche più leggibile.

    Prova così se ottieni risultati strani, ma controlla un minimo la sintassi perché ho scritto di getto qui sul forum e non ho ricontrollato eventuali errori.
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Grazie, in effetti sono alle prime armi col PHP, lo sto imparando di pari passo con questa mia applicazione, quindi sono sicuro che di ottimizzazioni su tutto il codice che ho scritto ce ne sarebbero da fare... ma non sono ancora abbastanza scaltro da rendermene conto.

    Ho comunque risolto il problema del ciclo facendolo diventare così:
    Codice PHP:
    for ($i=0$i<$AffectedRows$i++) {
        
    $codice mysql_result($dbresult,$i,"codice");
    //i comandi print qui sono rimaste uguali
        
    print "<td>[url='dettagli_medico.php?codice=".$codice."']Visualizza[/url]</td>";
        print 
    "</tr>";
        
    $riga++;

    In pratica era un errore sulla sintassi dove scrivo il link.

    Proverò ad apportare le modifiche che mi hai proposto.

  4. #4

    Re: Re: Ciclo for: incremento che non mi spiego

    Originariamente inviato da alcio74
    Ora, a prescindere che io odio le tabelle, ...
    ?? :master:

  5. #5

    Re: Re: Re: Ciclo for: incremento che non mi spiego

    Originariamente inviato da mondobimbi
    ?? :master:
    Intendevo dire, semplicemente, che non mi piace usare le tabelle e che (soprattutto nel caso esposto da Alhazred) le trovo solo un inutile quanto dispendioso spreco di codice!

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

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.