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 :

[SQL] Résultat et affichage


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de lou87
    Profil pro
    Inscrit en
    Février 2006
    Messages
    368
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 368
    Par défaut [SQL] Résultat et affichage
    Bonjour !

    Excusez moi je suis débutante en php, je vais avoir besoin de votre aide, car là il y a des choses que je ne comprend pas du tout.

    Tout d'abord, j'aimerais afficher dans une zone de sélection certains critères d'un table, et il m'en affiche qu'un sur les trois, seulement le nom...

    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
    43
    <html>
    <head>
    <title>Sélection des catégories de livre</title>
    </head>
    <body>
    <?
    //debut du code PHP
    $connect=mysql_connect("localhost","root","");
    //connexion au serveur localhost
    $selectdb=mysql_select_db("bibliotheque") or die ('Sélection impossible');
    //sélection de la base de données
    if ($connect)
    //connexion reussie
    {
    echo '<form action="resultat_auteur.php" method=post>';
    echo "<H2>Liste des auteurs</H2>";
    echo "<p>Sélectionnez l'auteur souhaité:</p>";
    echo '<SELECT NAME="CODE_AUT" size=5>';
    //appel du fichier resultat_cat.php et affichage titre debut liste déroulante
    $sqlquery="select CODE_AUT, NOM_AUT, PRENOM_AUT from auteur order by CODE_AUT;";
    //recherche code et nom, prénom de l'auteur
    $queryresult=mysql_query($sqlquery) or die ('requete ne pouvant etre exécutée');
    // requete ne pouvant pas etre executée
    	If(($queryresult)==false)
    	// si non trouve dans la table
    		{
    			?><script>alert('donnees introuvables dans la table');</script><?;$verif='ok';
    			//affichage message erreur et variable de blocage insertion
    		}	
    			else
    			{			
    			while($row=mysql_fetch_array($queryresult)){
    			//tant que la requete retourne un enregistrement
    			echo'<option selected value= '.$row["CODE_AUT"].'>'.$row["NOM_AUT"] ; }
    			}		
    echo '</select>';
    echo '<p><input type ="submit" value ="Afficher la liste"></p>';
    echo "</form>";
    }
    ?>
    </body>
    </html>
    Et voici la page en image :



    Puis quand j'ai sélectionné l'auteur que je veux et que je clic sur le bouton 'Afficher la liste', il ne m'affiche qu'une erreur :
    Notice: Undefined variable: code in c:\program files\easyphp1-8\www\bibliotheque\resultat_auteur.php on line 16
    requete ne pouvant etre exécutée


    Et voici le code de la page de résultat :

    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
    43
    44
    45
    46
    <html>
    <head>
    <title>Liste des livres du type choisi</title>
    </head>
    <body>
    <?
    //debut du code PHP
     
    $connect=mysql_connect("localhost","root","");
    //connexion au serveur localhost
    $selectdb=mysql_select_db("bibliotheque") or die ('Sélection impossible');
    //sélection de la base de données
    if ($connect)
    //connexion reussie
    {
    $sqlquery="select TITRE_LI,NBPAGE_LI,RESUME_LI from livre,auteur where livre.CODE_AUT =auteur.CODE_AUT and CODE_AUT='$code' ;";
    //requete cherchant les livres dont le type est sélectionnée dans la liste déroulante de liste_type.php
    $queryresult=mysql_query($sqlquery) or die ('requete ne pouvant etre exécutée');
    // requete ne pouvant pas etre executée
    $nb=0;
    echo "<H1> Liste des livres de l'auteur concerné</H1>";
    echo '<p><table border=2 widht="75%">';
    echo"<TR><th>TITRE</th><th>NOMBRE DE PAGE</th><th>RESUME</th></tr>";
    If(($queryresult)==false)
    	// si non trouve dans la table
    		{
    		?><script>alert('donnees introuvalbles dans la table');</script><?;$verif='ok';
    			//affichage message erreur et variable de blocage insertion
    		}	
    			else
    			{
    			while($row=mysql_fetch_array($queryresult))
    				{
     
    			//tant que la requete retourne un enregistrement
    			echo "<tr><td>".$row["TITRE_LI"] ."</td><td>".$row["NBPAGE_LI"]."</td><td>".$row["RESUME_LI"] ."</td></tr>";
    			//affichage du résultat dans un tableau
    			$nb++;
    				}
    			}
    echo "</table><p>";
    echo "Il y a ".$nb." livres";
    }
    ?>
    </body>
    </html>
    Je suis quasiment sûr que le problème vient de la contrainte dans la requête SQL, la variable $code, je pense qu'elle doit être vide ou quelque chose comme ça, si c'est le cas comment la remplir avec l'élément sélectionné dans la liste des auteur ?

    Merci pour votre patience.


  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Bonjour

    A première vue, tes problèmes viennent de fautes de syntaxe (ce n'est pas une critique , juste une remarque)

    D'abord, ta liste ne t'affiche que le nom de l'auteur parce que tu ne lui dit pas d'afficher autre chose.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    echo'<option value= '.$row["CODE_AUT"].'>'.$row["NOM_AUT"].' '.$row["PRENOM_AUT"] ;
    Ensuite, pour utiliser un champ passé par post, il faut utiliser la variable superglobale $_POST. En clair pour ton champ code, tu récupères la variable $_POST['code'].

    Enfin un conseil : pour l'exécution des requêtes tu peux utiliser la syntaxe suivante, qui en cas de problème t'affichera la requête et l'erreur.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $res = mysql_query($rq) or die(" requete $rq : ".mysql_error());
    Bon courage !
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 5
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ...
    echo'<option selected value= '.$row["CODE_AUT"].'>'.$row["NOM_AUT"] ; '
    ...
    Cela ne t'affiche que le nom parce que tu ne demandes d'afficher que le nom.
    Concatène les autres valeurs à $row["NOM_AUT"] du style :
    $row["NOM_AUT"].' - '.$row["PRENOM_AUT"].' - '$row["CODE_AUT"]

    Pour la varible code, il te faut la récupérer par $_POST, vu que ton formulaire est passé en post. Cela donnerais :
    $code=$_POST['code'];

  4. #4
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 21
    Par défaut
    Bonjour lou87,

    Le problème à mon avis est que tu n'envoi pas la valeur sélectionnée au fichier résultat pour qu'il puisse exécuter son traitement. L'erreur te dit qu'il y a uin problème sur la variable code dans le fichier résultat.
    Tu devrais essayer de récupérer la valeur de la variable code en insérant à la fin du fichier de sélection la commande:
    $code = $_POST['CODE_AUT'];

  5. #5
    Membre éclairé Avatar de lou87
    Profil pro
    Inscrit en
    Février 2006
    Messages
    368
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 368
    Par défaut
    Un grand merci à tous

    Je vais essayer ça tout de suite, je vous informe du résultat.

  6. #6
    Membre éclairé Avatar de lou87
    Profil pro
    Inscrit en
    Février 2006
    Messages
    368
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 368
    Par défaut
    Coucou !

    Voici le code avec l'ajout (en vert).

    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
    43
    <html>
    <head>
    <title>Sélection des auteurs de livre</title>
    </head>
    <body>
    <?
    //debut du code PHP
    $connect=mysql_connect("localhost","root","");
    //connexion au serveur localhost
    $selectdb=mysql_select_db("bibliotheque") or die ('Sélection impossible');
    //sélection de la base de données
    if ($connect)
    //connexion reussie
    {
    echo '<form action="resultat_auteur.php" method=post>';
    echo "<H2>Liste des auteurs</H2>";
    echo "<p>Sélectionnez l'auteur souhaité:</p>";
    echo '<SELECT NAME="CODE_AUT" size=5>';
    //appel du fichier resultat_cat.php et affichage titre debut liste déroulante
    $sqlquery="select CODE_AUT,NOM_AUT,PRENOM_AUT from auteur order by CODE_AUT;";
    //recherche code et libellé de la catégorie
    $queryresult=mysql_query($sqlquery) or die ('requete ne pouvant etre exécutée');
    // requete ne pouvant pas etre executée
    $code = $_POST['CODE_AUT'];
    	If(($queryresult)==false)
    	// si non trouve dans la table
    		{
    			?><script>alert('donnees introuvables dans la table');</script><?;$verif='ok';
    			//affichage message erreur et variable de blocage insertion
    		}	
    			else
    			{			
    			while($row=mysql_fetch_array($queryresult)){
    			//tant que la requete retourne un enregistrement
    			echo'<option selected value= '.$row["NOM_AUT"].'>'.$row["CODE_AUT"].' '.$row["NOM_AUT"].' '.$row["PRENOM_AUT"]; }
    			}		
    echo '</select>';
    echo '<p><input type ="submit" value ="Afficher la liste"></p>';
    echo "</form>";
    }
    ?>
    </body>
    </html>
    Voici le code de la page de résultat ( avec en orange ce qui cloche d'après ce message d'erreur :

    Notice: Undefined variable: code in c:\program files\easyphp1-8\www\bibliotheque\resultat_auteur.php on line 16
    requete ne pouvant etre exécutée



    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
    43
    44
    45
    46
    <html>
    <head>
    <title>Liste des livres de l'auteur choisi </title>
    </head>
    <body>
    <?
    //debut du code PHP
    
    $connect=mysql_connect("localhost","root","");
    //connexion au serveur localhost
    $selectdb=mysql_select_db("bibliotheque") or die ('Sélection impossible');
    //sélection de la base de données
    if ($connect)
    //connexion reussie
    {
    $sqlquery="select CODE_LI,TITRE_LI,NBPAGE_LI,RESUME_LI from livre,auteur where livre.CODE_AUT =auteur.CODE_AUT and CODE_AUT='$code' ;";
    //requete cherchant les livres dont le type est sélectionnée dans la liste déroulante de liste_type.php
    $queryresult=mysql_query($sqlquery) or die ('requete ne pouvant etre exécutée');
    // requete ne pouvant pas etre executée
    $nb=0;
    echo "<H1> Liste des livres de l'auteur concerné</H1>";
    echo '<p><table border=2 widht="75%">';
    echo"<TR><th>TITRE</th><th>NOMBRE DE PAGE</th><th>RESUME</th></tr>";
    If(($queryresult)==false)
    	// si non trouve dans la table
    		{
    		?><script>alert('donnees introuvalbles dans la table');</script><?;$verif='ok';
    			//affichage message erreur et variable de blocage insertion
    		}	
    			else
    			{
    			while($row=mysql_fetch_array($queryresult))
    				{
    
    			//tant que la requete retourne un enregistrement
    			echo "<tr><td>".$row["TITRE_LI"] ."</td><td>".$row["NBPAGE_LI"]."</td><td>".$row["RESUME_LI"] ."</td></tr>";
    			//affichage du résultat dans un tableau
    			$nb++;
    				}
    			}
    echo "</table><p>";
    echo "Il y a ".$nb." livres";
    }
    ?>
    </body>
    </html>
    Quelqu'un aurait-il une idée ?

    Merci

    P.S : Désolée j'ai dut recommencer mon message, désolée.

  7. #7
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    En fait $_POST['code], c'est pour récupérer la valeur du champ code après soumission du formulaire, donc dans la page où ton formulaire t'envoie (page résultat).

    Edit : euh, oui avec $_POST['CODE_AUT'] c'est mieux
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  8. #8
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 21
    Par défaut
    c'est normal que ça marche pas car comme je t'ai dit plus haut ton champs de selection s'appelle CODE_AUT:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<SELECT NAME="CODE_AUT" size=5>';
    donc quand tu met la commande $_POST il faut que ce soit:

    $code = $_POST['CODE_AUT'];

  9. #9
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 5
    Par défaut
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $code = $_POST['CODE_AUT'];
    Ce code doit être placé dans resultat.php en début de code il est préférable.
    Et ce n'est qu'aprés que tu peux utiliser la variable $code et notamment dans ta requete qui plante vu que ton script ne récupère pas ce fameux code auteur.

    Dans page contenant le formulaire $code = $_POST['CODE_AUT'] ne te sert à rien.

  10. #10
    Membre éclairé Avatar de lou87
    Profil pro
    Inscrit en
    Février 2006
    Messages
    368
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 368
    Par défaut
    Oki, j'ai modifié. Et ça marche effectivement déjà mieux.

    Merci à tous.

    Maintenant il faut que je trouve pourquoi ma requête SQL ne fonctionne pas.

    Car maintenant il me met le message d'erreur déjà défini dans mon code si la requête ne fonctionne pas.

    "requete ne pouvant etre exécutée"

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

Discussions similaires

  1. [SQL] Soucis d'affichage de requête SQL
    Par kilkikou dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 06/06/2006, 16h25
  2. [SQL] probleme d'affichage contenu de variables
    Par taka10 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 02/06/2006, 15h03
  3. [SQL] Script d'affichage page par page
    Par x2thez dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 10/05/2006, 15h48
  4. [SQL] Ordre d'affichage des lignes d'un état
    Par duboisfa dans le forum Oracle
    Réponses: 20
    Dernier message: 28/02/2006, 23h00
  5. [Sql] Format d'affichage de virgule
    Par bashou dans le forum Oracle
    Réponses: 21
    Dernier message: 24/02/2006, 09h21

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