2010-09-10 11 views
0

Une suggestion de quoi de mal avec ma boucle WHILE?Problème avec While Loop en PHP

<?php 
     include('header.php'); 
     $manage = "current_page_item"; 
     include('nav.php'); 
     include('sidebar.php'); 
    ?> 
    <div class="primary"> 
    <br/> 
    <?php 
    $userId = $_GET['id']; 
    echo "<div class=\"item_list\">"; 
    $sql = "SELECT * FROM user WHERE id = " . intval($userId); 
    $result = mysql_query($sql); 
    while($item = mysql_fetch_array($result, MYSQL_ASSOC)) 
    { 
     echo "<b>Title: </b>" . $item['item'] . "<br/><b>Email: </b>" . $item['email'] . "<br/>"; 
     echo "<b>Price: </b>" . $item['price'] . "</b><br/><b>Category: </b>" . $item['category'] . "</b><br/> <b>Extra: </b>" . ($item['extra'] ."</b><br/><b>Date Listed: </b>". $item['date']; 
    } 
    echo "</div>"; 
?> 
</div> 
<?php include('footer.php'); ?> 
+5

Pour référence, vous ne devriez pas modifier le code dans la question pour refléter les réponses. Les personnes qui examineront la question plus tard ne verront pas le code original à l'origine du problème à moins de regarder l'historique des révisions, et il est pénible de regarder l'historique des révisions et les réponses en même temps. – cHao

+2

Pour les autres éditeurs: soyez très, très sûr de ne pas modifier la syntaxe ou la signification du code lorsque vous essayez de le formater plus proprement. Comme le dit cHao, cela peut créer une confusion avec les réponses. – BoltClock

+0

@cHao Je pense que les changements apportés étaient juste le formatage et ne pas corriger le code lui-même –

Répondre

5

Votre erreur est ici. Vous utilisez le mauvais nom de la variable pour aller chercher des lignes:

while($userid = mysql_fetch_array($result, MYSQL_ASSOC)){ 

Il devrait être:

while($item = mysql_fetch_array($result, MYSQL_ASSOC)){ 

De plus, il y a une accolade de fermeture lâche } à la dernière ligne juste avant la balise de fermeture ?>. Je ne sais pas si cela a été rendu orphelin par un bloc d'ouverture que vous avez laissé hors de votre question, ou il était vraiment là par erreur.

+0

Je pense que c'est juste mais ne fonctionnait toujours pas. Qu'en est-il de cette déclaration? $ sql = "SELECT * FROM utilisateur WHERE id =".intval ($ userId); – Tim

+0

Que voulez-vous dire par «didnt work»? Cela vous donne-t-il une erreur? Essayez '$ result = mysql_query ($ sql) ou die (mysql_error());' et dites moi si cela dit quelque chose. Assurez-vous également que le rapport d'erreurs est entièrement activé. placez 'error_reporting (E_ALL);' au début de votre script. – BoltClock

+0

Ok, j'ai retourné les rapports d'erreur et je reçois Note: Undefined variable: userid in – Tim

0

Supprimer la dernière fermeture } sur la dernière ligne.

0

Vous semblez avoir mal nommé vos variables?

Vous avez passé $userid dans votre argument de fonction while mais vous utilisez $item dans votre boucle?

Vous avez également un } supplémentaire à moins que vous ayez seulement posté un extrait d'une fonction.

1

Sur la deuxième ligne d'écho, vous avez quelques parenthèses parasites. Sould être:

echo "<b>Price: </b>" . $item['price'] . "</b><br/> <b>Category: </b>" . $item['category'] . "</b><br/> <b>Extra: </b>" . $item['extra'] . "</b><br/><b>Date Listed: </b>" . $item['date']; 
2

Avec ce BoltClock dit et stoosh, vous avez également une erreur de syntaxe:

echo "<b>Price: </b>" . $item['price'] . 
    "</b><br/> <b>Category: </b>". $item['category'] . 
    "</b><br/> <b>Extra: </b>". $item['extra'] . 
    "</b><br/><b>Date Listed: </b>". $item['date']; 

Vous avez eu deux Parans où ils ne font aucun sens, et mon pari provoquent une syntaxe Erreur. Vous devriez vraiment avoir error_reporting mis à E_ALL et display_errors mis à on pour le développement! Cela rend la tâche de débogage plus facile.

Mise à jour

Pour mettre en place que temporaire pour un script ajouter ce au sommet (après <?php bien sûr)

error_reporting(E_ALL); 
ini_set("display_errors", "on"); 
+0

Est-ce que ceci est réglé dans le navigateur? – Tim

+0

@tim: Vous pouvez définir cela dans php.ini ou pour le définir lors de l'exécution, utilisez la fonction 'error_reporting()' (http://www.php.net/manual/en/function.error-reporting.php). –