IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

While qui ne fait que boucler [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 60
    Points : 52
    Points
    52
    Par défaut While qui ne fait que boucler
    Bonjours,
    Voila je fais un site de reservation de chambres en ligne! J'ai un petit soucis avec un while qui ne fais que boucler
    voici mon code
    REquête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     $sql=	 "SELECT * FROM chambre,type,reserver 
    		where categorie='$type' 
    		and type.num_type=chambre.num_type 
    		and reserver.numchambre=chambre.numchambre 
    		and (reserver.datfin between ".$datedebu." and ".$datefin." 
    		or (reserver.datdebu between ".$datedebu." and ".$datefin.")
    		or (reserver.datdebu<".$datedebu." and reserver.datfin>".$datefin."))";
    $datedebu=le debut du sejour
    $datefin= la fin du sejours souhaité
    $type= le type de la chambre choisi ( simple , double ...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    	$result=mysql_query($sql,$dbh);
    	$row=mysql_num_rows($result);
    	while ($row>= mysql_fetch_array($result))
    		{
    			?><form name="dispo" action="choix.php" method="post">?>
    	            echo '<table>chambre : '.$type.' <tr><td>'.$prix.
                       ' euros <tr><td>du '.$datdebu.' au '.$datfin.' pour  
                        '.$nbadulte.' adulte(s) et '.$nbenfant.' enfant(s) </table>';
    	           ?> <input type="submit" name="bt_resa" value="reserver"><?
    	       }
    Donc le soucis c'est que ma boucle ne se ferme jamais et la je vous avoue que je ne vois pas pourquoi

  2. #2
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    mysql_fetch_array() retourne un tableau correspondant a une ligne tant qu'il y en a, apres la fonction retourne false.
    il faut donc faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $result=mysql_query($sql,$dbh);
    $row=mysql_num_rows($result);
    while ($ligne = mysql_fetch_array($result))
    {
    // utiliser $ligne dans le code

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 60
    Points : 52
    Points
    52
    Par défaut
    Non cette modification ne change rien

  4. #4
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Citation Envoyé par helene38250
    Non cette modification ne change rien
    Puis-je voir le code mis à jour ?
    Etes vous sur(e) d'etre en boucle infinie ??

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 60
    Points : 52
    Points
    52
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    $result=mysql_query($sql,$dbh);
     $row=mysql_num_rows($result);
    while ($ligne= mysql_fetch_array($result))
    {
    	?><form name="dispo" action="choix.php" method="post">
    	<fieldset>
    	<table border="0" cellpadding="0" cellspacing="0"width="100%" height="100%">
    	<?
    		echo '<table>chambre : '.$type.' <tr><td>'.$prix. ' euros <tr><td>du '.$datdebu.' au '.$datfin.' pour  '.$nbadulte.' adulte(s) et '.$nbenfant.' enfant(s) </table>';
    	?> <input type="submit" name="bt_resa" value="reserver">
    	</fieldset><td>
    	<tr> </fieldset>
    	<?
    }

  6. #6
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Ce code n'a pas de raison d'entrer en boucle infinie, par contre il y a des choses qui clochent :
    - le formulaire est ouvert dans la boucle while, donc on aura autant de formulaire que de résultats dans la requete
    - le formulaire n'est jamais fermé dans le code montré
    - les variables utilisées $datedbu par exemple ne semblent pas bonnes, elles correspondent surement à la ligne résultat donc plutot $ligne['datedbu'] non?
    - Etes vous sur(e) de bien rentrer dans la boucle while et de ne pas avoir des erreurs avant?
    - qu'est ce qui vous prouve qu'il y a une boucle infinie?

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 60
    Points : 52
    Points
    52
    Par défaut
    la variable $datedbu correspond à la date saisie par le client et ne corespond pas à la ligne resultat
    Je suis sure de rentré dans la boucle mais quaand je lance mon application sur le web cette page ne s'arrete jamais de charger et m'affiche tout le temps mes form

  8. #8
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Citation Envoyé par helene38250
    la variable $datedbu correspond à la date saisie par le client et ne corespond pas à la ligne resultat
    Je suis sure de rentré dans la boucle mais quaand je lance mon application sur le web cette page ne s'arrete jamais de charger et m'affiche tout le temps mes form
    hum... je ne vois pas de raisons a une boucle infinie la. Essaies ca a la place (juste pr le test)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $result=mysql_query($sql,$dbh);
     $row=mysql_num_rows($result);
    while ($ligne= mysql_fetch_array($result))
    {
    echo "boucle <br/>";
    }
    echo "fini<br/>";
    et dis moi si ca affiche "fini"

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 60
    Points : 52
    Points
    52
    Par défaut
    j'ai trouver c'est ma requête qui ne va pas !
    comment passer une date en format dans ma base de donnée comme suit :
    a ceci:
    ce que j'ai fais c'est la fonction suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    function string_to_date($date)
    {date('d-m-Y',$date);}
    Mais comment integrer maintenant cette fonction à
    reserver.datdebu et reserver.datfin les paramétre de ma requête ( champs de ma base de donnée)?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Une View qui ne fait pas ce que je veux
    Par EmmanuelleC dans le forum Langage SQL
    Réponses: 2
    Dernier message: 20/08/2009, 08h41
  2. [MySQL] Boucle while qui me fait des misères
    Par joboy84 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 06/08/2009, 14h40
  3. [Système] bouton qui ne fait pas se que je veut
    Par schats dans le forum Langage
    Réponses: 2
    Dernier message: 27/04/2007, 11h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo