Pagina 1 di 2

Php esce dopo un while

Inviato: 24/09/2010, 18:11
da BMercer
Mi è capitato questo strano errore proprio oggi:
Ho il seguente codice:

Codice: Seleziona tutto

<div class="main">
                <?php while ($row = $db->fetch($this->get('posts'))) : ?>
                <div class="wBox">
                    <div class="message">
                        <?php echo $row['postMessage']; ?>
                    </div>
                    <div class="info">
                        <div class="infoUser left">
                            <span class="userName"><?php echo $row['posterUsername']; ?></span>
                            <span class="userId">(<?php echo $row['posterId']; ?>)</span>
                        </div>
                        <div class="infoMessage left">
                            <span class="messageTime"><?php echo date('F j, Y - g:i a', $row['postTime']); ?></span>
                            <span class="messageId">(<?php echo $row['postId']; ?>)</span>
                        </div>
                        <div class="clear"></div>
                    </div>
                </div>
                <?php endwhile; ?>
<div>Something</div>
</div>
Dove praticamente eseguo un loop per visualizzare dei post.
Tutto funziona alla grande, i post vengono mostrato e tutte le informazioni dell'array $row richiamate nel codice sopra vengono fornite correttamente.
L'unico problema è che la scritta "Something" che è definita dopo l'endwhile; non viene visualizzata come tutto ciò che viene appunto dopo l'endwhile; Ho provato a sostituire i : e l'endwhile con il classico { e } ma non cambia praticamente nulla. Se tolgo l'endwhile mi dice che c'è un $end inaspettato (che è classico dei while o dei foreach lasciati in sospeso).
Non so proprio dove sto sbagliando, anche perchè di errori non compaiono.

Re: Php esce dopo un while

Inviato: 25/09/2010, 17:49
da Carlo
Nessun errore ti appare?

P.S.: Assicurati però che gli errori vengano mostrati nella pagina.

Re: Php esce dopo un while

Inviato: 26/09/2010, 13:17
da BMercer
Non mi mostra alcun errore e sono quasi certo che ogni tipo di errore venga mostato.
Anche perchè ho settato la visibilità degli errori a E_ALL tramite lo script php.
Notate qualche errore?

Re: Php esce dopo un while

Inviato: 26/09/2010, 13:21
da BMercer
Non mi mostra alcun errore e sono quasi certo che ogni tipo di errore venga mostato.
Anche perchè ho settato la visibilità degli errori a E_ALL tramite lo script php.
Notate qualche errore?

Re: Php esce dopo un while

Inviato: 28/09/2010, 9:07
da ldm
questa riga :

Codice: Seleziona tutto

                <?php while ($row = $db->fetch($this->get('posts'))) : ?>
non dovrebbe essere così :

Codice: Seleziona tutto

                <?php while ($row = $db->fetch($this->get('posts'))) ; ?>
ovvero non capisco quei due punti , non dovrebbe essere la fine di una istruzione con punto e virgola.

Re: Php esce dopo un while

Inviato: 28/09/2010, 17:23
da BMercer
Non proprio. L'istruzione while prevede (credo) per forza il seguito di { o : . Come detto da te (credo) cadrebbe in un parse error. Comunque la formula:

Codice: Seleziona tutto

while (condizione) :
      // istruzioni
endwhile;
 
E' supportata correttamente da php 5. E' una forma leggermente diversa dalla classica

Codice: Seleziona tutto

while (condizione)
{
      // istruzioni
}
 
.

Re: Php esce dopo un while

Inviato: 28/09/2010, 23:07
da ldm
Infatti, non ho mai usato l'endwhile e anche il (;) va' messo alla fine della istruzione.
Comunque se è un problema che consiste solo nella mancata visualizzazione della scritta Somethime -prova a mettere il relativo div alla fine dopo la chiusura del </DIV>

ovvero:

Codice: Seleziona tutto

</div>
<div>somethime</div>
e vedi cosa succede.

Re: Php esce dopo un while

Inviato: 29/09/2010, 18:17
da BMercer
Non è un errore di html. Infatti guardando il codice sorgente della pagina, il div con dentro Something non esiste.

Re: Php esce dopo un while

Inviato: 01/10/2010, 19:55
da BMercer
Idee? UP?

Re: Php esce dopo un while

Inviato: 01/10/2010, 20:02
da Micogian
Hai provato con la forma classica ?

Codice: Seleziona tutto

while (condizione)
{
      // istruzioni
}