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 :

Problème de Boucle


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé Avatar de Jiraiya42
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    671
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 671
    Par défaut Problème de Boucle
    Bonjour,

    J'essai de récupérer le nom, le genre et un nombre contenus dans une table "films" et le nom de l'emprunteur contenu dans la table "emprunteur" seulement j'ai un problème en ce qui concerne le nom de l'emprunteur, je n'arrive pas à l'afficher correctement:

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    <?PHP
    			// on se connecte à MySQL et on sélectionne la base
    			require ("./connect.php");
    	    	        mysql_connect (SERVEUR, NOM, PASSE) or die(mysql_error);
           		        mysql_select_db (BASE) or die(mysql_error);
     
    			// on crée la requête SQL
    			$requete = "SELECT nomfilm, genrefilm, posfilm FROM films ORDER  BY nomfilm LIMIT 0 , 13;";
    			$res = mysql_query($requete) or die('Erreur SQL !<br>'.$requete.'<br>'.mysql_error());
     
    			// autre requete
    			$request = "SELECT nomemp FROM emprunteur e, films f WHERE e.nomfilm = '".$res['nomfilm']."';";
    			$resultat = mysql_query($request) or die('Erreur SQL !<br>'.$request.'<br>'.mysql_error());
     
    			// on fait une boucle qui va faire un tour pour chaque enregistrement
    			while($data = mysql_fetch_assoc($res))
        			{
        				// on affiche les informations dans un tableau
        	?>
        		<TR>
        			<TD><?PHP echo stripslashes($data['nomfilm']); ?></TD>
        			<TD><?PHP echo stripslashes($data['genrefilm']); ?></TD>
        			<TD><?PHP echo stripslashes($data['posfilm']); ?></TD>
        			<TD><?PHP
        					if($resultat = "")
        						{
        							echo 'Nom emprunté';
    							}
        					else
        						{
        							echo '".$resultat."';
    							}
        				?>
        			</TD>
        		</TR>
     
        	<?PHP
        			}
     
    			// on ferme la connexion à mysql
    			mysql_close();
    		?>
    Quelqu'un peut m'aider svp ?

    Merci d'avance...

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 774
    Par défaut
    explique davantage!
    s'affiche pas correctement??
    autrement le reste des elements selectionnés s'affiche correctement?

  3. #3
    Membre éclairé Avatar de Jiraiya42
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    671
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 671
    Par défaut
    Citation Envoyé par ouatmad
    explique davantage!
    s'affiche pas correctement??
    autrement le reste des elements selectionnés s'affiche correctement?
    En fait, j'obtiens dans mon tableau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    nom             genre                 num              ".$resultat."
    Et moi je voudrait avoir à la place du ".$resultat." rien s'il n'a pas été emprunté et le nom de l'emprunteur s'il est emprunté

    Une idée svp ?

  4. #4
    Membre émérite
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Par défaut
    Remplace... .. .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo '".$resultat."';
    par

    Php n'interprète pas ce qui se trouve entre simple quotes... .. .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $resultat = 10;
     
    echo '$resultat'; // affichera : $resultat
    echo $resultat; // affichera : 10
    @ tchaOo°

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 774
    Par défaut
    je vois deux(2) erreurs dans ton code
    1. primo, il faut savoir que resultat est une ressource, donc n'est pas le nom de l'emprunteur. il faut plutot d'abord un mysql_fetch_array(assoc) de $resultat avant de commencer a tester son contenu.
      exemple:
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
       while ($emprunteur=mysql_fetch_array($resultat)){
           if($emprunteur['nom_empr']==xxxxxxxxxxxxx
       }
    2. secundo: pourquoi ne ferais tu pas simplement
      echo "Emprunteur:".$emprunteur['nom_empr'];

  6. #6
    Membre éclairé Avatar de Jiraiya42
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    671
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 671
    Par défaut
    Citation Envoyé par ouatmad
    je vois deux(2) erreurs dans ton code
    1. primo, il faut savoir que resultat est une ressource, donc n'est pas le nom de l'emprunteur. il faut plutot d'abord un mysql_fetch_array(assoc) de $resultat avant de commencer a tester son contenu.
      exemple:
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
       while ($emprunteur=mysql_fetch_array($resultat)){
           if($emprunteur['nom_empr']==xxxxxxxxxxxxx
       }
    2. secundo: pourquoi ne ferais tu pas simplement
      echo "Emprunteur:".$emprunteur['nom_empr'];
    Ben je voudrais que pour chaque ligne (et donc chaque livre) ça m'affiche l'emprunteur ou "Non emprunté" s'il ne l'est pas j'ai mis ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <TD><?PHP
        			if($resultat == "")
        				{
        					echo 'Nom emprunté';
    				}
        			else
        				{
        					while($ligne = mysql_fetch_assoc($resultat))
        						{
    	    					       echo $ligne['nomemp'];
        						}
    				}
        		   ?>
        	 </TD>
    Mais ça n'affiche rien du tout, pas le nom de l'emprunteur ni "Nom emprunté"

    Une idée svp ?

  7. #7
    Membre émérite
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if(mysql_num_rows($resultat) === 0)
      echo 'Nom emprunté';
    else
    {
        	while($ligne = mysql_fetch_assoc($resultat))
        		echo $ligne['nomemp'];
    }
    @ tchaOo°

  8. #8
    Membre éclairé Avatar de Jiraiya42
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    671
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 671
    Par défaut
    Merci beaucoup,

    J'ai un autre problème je fais un formulaire de mise à jour et j'essai de récupérer mes champs dans des champs texte seulement ça ne marche pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    echo 'while($ligne = mysql_fetch_assoc($res))'
    					 . '{'
    					 . '<p align=center><font face=Comic Sans MS size=3 color=#000000>'
    					 . 'Titre: <INPUT TYPE=TEXT SIZE=20 NAME=titre VALUE="$ligne[nomfilm]"><BR>'
    					 . 'Genre: <INPUT TYPE=TEXT SIZE=20 NAME=genre VALUE="$ligne[genrefilm]"><BR>'
    					 . 'Position: <INPUT TYPE=TEXT SIZE=20 NAME=position VALUE="$ligne[posfilm]"><BR>'
    					 . 'Emprunteur: <INPUT TYPE=TEXT SIZE=20 NAME=emprunteur VALUE=$res[nomemp]><BR>'
    					 . '<p align=right><input type="submit" name="submit" value="Envoyer"></p><BR>'
    					 . '}';
    J'obtiens par exemple: $ligne[nomfilm] à la place, j'ai essayé sans " mais c'est pareil...

    Quelqu'un peut m'aider svp ?

    Merci d'avance...

  9. #9
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 774
    Par défaut
    tiens compte de ceci lorsque tu fais tes echo:
    lorsqu'un echo est delimité par de simple quote, il n'y a pas d'interpretation du contenu d'une variable a l'interieur de ces quotes là.
    par contre lorsque la variable est entre des doubles quotes, le contenu est affiché.
    exemple
    $variable="1 millions";
    echo 'le contenu est $variable'====>resultat: le contenu est $variable
    echo "le contenu est $variable"====>resultat: le contenu est 1 million

  10. #10
    Membre éclairé Avatar de Jiraiya42
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    671
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 671
    Par défaut
    Citation Envoyé par ouatmad
    tiens compte de ceci lorsque tu fais tes echo:
    lorsqu'un echo est delimité par de simple quote, il n'y a pas d'interpretation du contenu d'une variable a l'interieur de ces quotes là.
    par contre lorsque la variable est entre des doubles quotes, le contenu est affiché.
    exemple
    $variable="1 millions";
    echo 'le contenu est $variable'====>resultat: le contenu est $variable
    echo "le contenu est $variable"====>resultat: le contenu est 1 million
    Ah ok ben j'ai mis ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    echo "while($ligne = mysql_fetch_assoc($res))'
    . '{'
    . '<p align=center><font face=Comic Sans MS size=3 color=#000000>'
    . 'Titre: <INPUT TYPE=TEXT SIZE=20 NAME=titre VALUE=$ligne[nomfilm]><BR>'
     . 'Genre: <INPUT TYPE=TEXT SIZE=20 NAME=genre VALUE=$ligne[genrefilm]><BR>'
     . 'Position: <INPUT TYPE=TEXT SIZE=20 NAME=position VALUE=$ligne[posfilm]><BR>'
    . 'Emprunteur: <INPUT TYPE=TEXT SIZE=20 NAME=emprunteur VALUE=$res[nomemp]><BR>'
    . '<p align=right><input type="submit" name="submit" value="Envoyer"></p><BR>}"; <=========== ligne 40
    Et ça me met cette erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Parse error: parse error, unexpected T_STRING, expecting ',' or ';' in c:\program files\easyphp1-7\www\films\fonctions\fonc_maj_film.php on line 40
    Le ";" y est pourtant à la fin de la ligne

    Quelqu'un peut m'aider svp ?

    Merci d'avance...

  11. #11
    Membre émérite
    Avatar de jc_cornic
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    623
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 623
    Par défaut
    Salut

    tu as remplacé la quote au début de ton echo, pas à la fin...

    echo "while($ligne = mysql_fetch_assoc($res))'
    Sinon, généralement, quand tu code de l'html dans un echo en php, n'oublie pas d'ajouter \ avant chaque "

    ex:
    echo "<input name=\"toto\".........";
    au lieu de
    echo "<input name="toto".......";

    sinon php envoie à ton explorateur la ligne suivante.

    <input name=

    et après il comprend pas et t'affiche le message du style.
    Missing ; or , line 40

    ++
    JC

  12. #12
    Membre éclairé Avatar de Jiraiya42
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    671
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 671
    Par défaut
    Oki merci, j'ai mis ça:

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    while($ligne = mysql_fetch_assoc($res))
    			{
        			echo $ligne['nomfilm'];
        			echo $ligne['genrefilm'];
        			echo $ligne['posfilm'];
    			}
     
    	    if (!$res)
               {
                	echo '<p align=center><font face="Comic Sans MS" size="3" color=#000000>Impossible d\'exécuter la requête :</font> ' . mysql_error();
                    exit;
               }
    		else
    		   {
    				echo "while($ligne = mysql_fetch_assoc($res))"
    					 . "{"
    					 . "<p align=center><font face=Comic Sans MS size=3 color=#000000>"
    					 . "Titre: <INPUT TYPE=TEXT SIZE=20 NAME=titre VALUE=$ligne[nomfilm]><BR>"
    					 . "Genre: <INPUT TYPE=TEXT SIZE=20 NAME=genre VALUE=$ligne[genrefilm]><BR>"
    					 . "Position: <INPUT TYPE=TEXT SIZE=20 NAME=position VALUE=$ligne[posfilm]><BR>"
    					 . "Emprunteur: <INPUT TYPE=TEXT SIZE=20 NAME=emprunteur VALUE=$res[nomemp]><BR>"
    					 . "<p align=right><input type=submit name=submit value=Envoyer></p><BR>}";
     
     
    		   }
    Mais je n'obtiens toujours pas ce que je veux, lex champs textes sont vides... comment puis je faire svp ?

  13. #13
    Membre émérite
    Avatar de jc_cornic
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    623
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 623
    Par défaut
    A la place de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    VALUE=$ligne[nomfilm]
    essaye

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    VALUE=$ligne['nomfilm']
    Je crois que sinon, il cherche dans ton tableau $ligne un arg n'existant pas et ne met pas de valeur...

    ++
    JC

  14. #14
    Membre éclairé Avatar de Jiraiya42
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    671
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 671
    Par défaut
    Citation Envoyé par jc_cornic
    A la place de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    VALUE=$ligne[nomfilm]
    essaye

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    VALUE=$ligne['nomfilm']
    Je crois que sinon, il cherche dans ton tableau $ligne un arg n'existant pas et ne met pas de valeur...

    ++
    JC
    Ca me met

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in c:\program files\easyphp1-7\www\films\fonctions\fonc_maj_film.php on line 36
    La ligne 36 est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    . "Titre: <INPUT TYPE=TEXT SIZE=20 NAME=titre VALUE=$ligne['nomfilm']><BR>"
    Donc je suppose que c'est les "'" qu'il aime pas

  15. #15
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 774
    Par défaut
    salut ! faut prendre la peine de te concentrer sur le code et lit un peu la doc.
    Pour ton code essaie ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    else
    		   {
    		      while($ligne = mysql_fetch_assoc($res))
    			  {
    					 echo"<p align=center><font face=Comic Sans MS size=3 color=#000000>"
    					 . "Titre: <INPUT TYPE=TEXT SIZE=20 NAME=titre VALUE='".$ligne[nomfilm]."'><BR>"
    					 . "Genre: <INPUT TYPE=TEXT SIZE=20 NAME=genre VALUE='".$ligne['genrefilm']."'><BR>"
    					 . "Position: <INPUT TYPE=TEXT SIZE=20 NAME=position VALUE='".$ligne['posfilm']."'><BR>"
    					 . "Emprunteur: <INPUT TYPE=TEXT SIZE=20 NAME=emprunteur VALUE='".$res['nomemp']."'><BR>"
    					 . "<p align=right><input type=submit name=submit value=Envoyer></p><BR>";
    }
    }

Discussions similaires

  1. Problème de boucles imbriquées
    Par Gnux dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 09/12/2005, 20h26
  2. [Tableaux] Problème avec boucle
    Par MYster dans le forum Langage
    Réponses: 6
    Dernier message: 11/11/2005, 18h39
  3. Problème de boucle
    Par TheUltimaSephiroth dans le forum C
    Réponses: 8
    Dernier message: 10/10/2005, 13h58
  4. Problème de boucle
    Par Louis-Guillaume Morand dans le forum Langage SQL
    Réponses: 3
    Dernier message: 25/09/2005, 09h10
  5. Problème de boucle
    Par basclln dans le forum C++
    Réponses: 19
    Dernier message: 02/04/2005, 09h13

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