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

Langage PHP Discussion :

Champ de recherche


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 63
    Points : 40
    Points
    40
    Par défaut Champ de recherche
    Bonjour,
    J'essaie d'écrire un programme qui affiche sur ma page d'accueil d'un site de bibliothèque en ligne, 02 champs de recherche "par domaine" et "par titre". Ci après le petit programme, (fait avec frontpage). Quand je clique sur rechercher (par exemple un livre x), un tableau s'affiche mais il est vide et ne contient pas le nom ni les caractéristiques du livre x, qui pourtant existe au niveau des tables ouvrages et domaines. Je suis débutant, et je sollicite votre aide. J'utilise easyphp, sur windows xp.
    Merci.

    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
    47
    <html>
    <head>
    <meta http-equiv="Content-Language" content="fr">
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <title>$</title>
    </head>
    <body>
    <p><font color="#FF0000" size="5">Résultats de la recherche</font></p>
    <hr>
    <?php
    $c=mysql_connect("localhost","root","");
    $b=mysql_select_db("biblio");
    echo($choix);
    $choix=$_POST['choix'];
    $valeur=$_POST['valeur'];
    $req="select * from ouvrage,domaine where (ouvrage.num_dom=domaine.num_dom) and (nom_dom='$valeur') and (titre_ouv='$choix')";
    $exe=mysql_query($req);
    $nb=mysql_num_rows($exe);
    if ($nb==0) echo "pas de resultat!!!<br>";
    else { echo "nombre de resultat trouvées : <font color='#FF0000' size='4'>$nb</font><br>";
    ?>
    <table border="1" width="100%" id="table1">
     <tr>
      <td align="center" bgcolor="#00FFFF">code </td>
      <td align="center" bgcolor="#00FFFF">auteure </td>
      <td align="center" bgcolor="#00FFFF">edition </td>
     
      <td align="center" bgcolor="#00FFFF">titre </td>
      <td align="center" bgcolor="#00FFFF">collection </td>
      <td align="center" bgcolor="#00FFFF">titre de periodique </td>
     </tr>
    <?php
    while ($liv=mysql_fetch_row($exe)) {
      echo"<tr><td>$liv[0]</td>";
      echo"<td>$liv[1]</td>";
      echo"<td>$liv[2]</td>";
     
      echo"<td>$liv[4]</td>";
      echo"<td>$liv[6]</td>";
      echo"<td>$liv[7]</td></tr>";
     
     
    }
    }
    ?>
    </body>
    </html>
    §§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§

    Programme d'une recherche des ouvrages par domaine(1er champ(valeur=le nom de la zone de texte) pour saisir le domaine,et le 2eme(choix=le nom de la zone de texte) pour le titre de l'ouvrage )

    le code en php:
    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
    47
    <html>
    <head>
    <meta http-equiv="Content-Language" content="fr">
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <title>$</title>
    </head>
    <body>
    <p><font color="#FF0000" size="5">Résultats de la recherche</font></p>
    <hr>
    <?php
    $c=mysql_connect("localhost","root","");
    $b=mysql_select_db("biblio");
    echo($choix);
    $choix=$_POST['choix'];
    $valeur=$_POST['valeur'];
    $req="select * from ouvrage,domaine where (ouvrage.num_dom=domaine.num_dom) and (nom_dom='$valeur') and (titre_ouv='$choix')";
    $exe=mysql_query($req);
    $nb=mysql_num_rows($exe);
    if ($nb==0) echo "pas de resultat!!!<br>";
    else { echo "nombre de resultat trouvées : <font color='#FF0000' size='4'>$nb</font><br>";
    ?>
    <table border="1" width="100%" id="table1">
     <tr>
      <td align="center" bgcolor="#00FFFF">code </td>
      <td align="center" bgcolor="#00FFFF">auteure </td>
      <td align="center" bgcolor="#00FFFF">edition </td>
     
      <td align="center" bgcolor="#00FFFF">titre </td>
      <td align="center" bgcolor="#00FFFF">collection </td>
      <td align="center" bgcolor="#00FFFF">titre de periodique </td>
     </tr>
    <?php
    while ($liv=mysql_fetch_row($exe)) {
      echo"<tr><td>$liv[0]</td>";
      echo"<td>$liv[1]</td>";
      echo"<td>$liv[2]</td>";
     
      echo"<td>$liv[4]</td>";
      echo"<td>$liv[6]</td>";
      echo"<td>$liv[7]</td></tr>";
     
     
    }
    }
    ?>
    </body>
    </html>
    S'affiche l'erreur:Notice: Undefined variable: choix in C:\Program Files\EasyPHP 2.0b1\www\biblio1\rech_dom.php on line 15

    Notice: Undefined index: choix in C:\Program Files\EasyPHP 2.0b1\www\biblio1\rech_dom.php on line 16


    + le tableau vide (mentionné plus haut) qui contient:code,auteur...mais sans aucune information(toujours le même résultat)

    (comme si le champ du titre de l'ouvrage est vide).
    Merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ton formulaire ne renvoit visiblement pas le champ "choix".

  3. #3
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 63
    Points : 40
    Points
    40
    Par défaut
    Effectivement,et je n'arrive pas à corriger l'anomalie.Pouvez vous me conseiller??

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il faudrait nous montrer le formulaire.

  5. #5
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 63
    Points : 40
    Points
    40
    Par défaut champ recherche
    Bonsoir
    J'ai mis le catalogue de la recherche par domaine dans la page d'accueil du site, mais son code ne s'affiche pas dans la partie CODE de la page(frontpage).
    Mais si je prend le catalogue tout seul a part dans une autre page frontpage j'obtiens ce code:

    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
    <html>
     
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <title>RECHERCHE PAR DOMAINE</title>
    </head>
     
    <body>
     
    <p>&nbsp;&nbsp; </p>
    <table border="0" width="100%" id="table2" height="130">
    	<tr>
    		<td width="28%" height="126" valign="top" bordercolor="#0000FF" bordercolorlight="#33CCFF" bordercolordark="#000080">
    		<form method="POST" action="rech_dom.php">
    			<p><b><font color="#0000FF"><span style="background-color: #FFFF00">RECHERCHE PAR DOMAINE:</span></font></b></p>
    		</form>
    		<form method="POST" action="rech_dom.php">
    			<p>
    			<input type="text" name="valeur" size="20" value="Saisire le domaine">&nbsp;
    			<input type="submit" value="OK" name="B4"></p>
    		</form>
    		<form method="POST" action="rech_dom.php">
    			<p>
    			<input type="text" name="choix" size="26" value="Taper le titre de l'ouvrage"></p>
    		</form></td>
    	</tr>
    </table>
    <p>&nbsp;</p>
     
    </body>
     
    </html>

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Corrige comme ça et abandonne frontpage :
    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
    <html>
     
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <title>RECHERCHE PAR DOMAINE</title>
    </head>
     
    <body>
     
    <p>&nbsp;&nbsp; </p>
    <table border="0" width="100%" id="table2" height="130">
    	<tr>
    		<td width="28%" height="126" valign="top" bordercolor="#0000FF" bordercolorlight="#33CCFF" bordercolordark="#000080">
    		<form method="POST" action="rech_dom.php">
    			<p><b><font color="#0000FF"><span style="background-color: #FFFF00">RECHERCHE PAR DOMAINE:</span></font></b></p>
    			<p><input type="text" name="valeur" size="20" value="Saisire le domaine">&nbsp;
    			<input type="submit" value="OK" name="B4"></p>
    			<p><input type="text" name="choix" size="26" value="Taper le titre de l'ouvrage"></p>
    		</form>
                    </td>
    	</tr>
    </table>
    <p>&nbsp;</p>
     
    </body>
     
    </html>

  7. #7
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 63
    Points : 40
    Points
    40
    Par défaut
    Après tous les rectificatifs conseillés et faits,quand je clique sur le champ de recherche DOMAINE après avoir écrit Art,il m'affiche Art et quand je clique sur le champ de recherche LIVRES apres avoir ecrit peinture,il m'affiche le livre de peinture avec ses caractéristiques comme je le souhaite.Si je change le nom d'un autre domaine (par exemple Littérature),ou le nom d'un autre livre (par exemple Germinal), la fenêtre pas de résultats s'affiche,alors que les items demandés existent au niveau des 02 tables , à savoir DOMAINE et LIVRES.Je ne comprends pas pourquoi seul la catégorie art,et le livre peinture s'affichent alors que les autres domaines et livres sont avec eux dans les tables?

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    A vue d'oeil je dirais que tu as un problème d'accent sur "Littérature".

  9. #9
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 63
    Points : 40
    Points
    40
    Par défaut champ_rech
    salut,
    Je pense que j'ai compris la cause de l'erreur(c'est à dire pourquoi il m'affiche que les resultats du livre peinture,domaine=art) parceque j'ai ecris un programme qui fait la modification des domaines, et lorsque je modifies un domaine(je met le nom_dom=art) tout les autres prennent le même nom du domaine que j'ai modifie.
    Mais le probleme que je n'arrive pas à trouver l'erreur dans ce programme pour qu'il m'affiche un nom_dom pour chaque num_dom(par exemple 1=art, 2=architecture....)et pas le même nom pour tout les num_dom

    VOICI LE CODE DU PROGRAMME:SI VOUS POUVEZ M'AIDER
    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
     
    <html>
     
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <title>Nouvelle page 1</title>
    </head>
     
    <body>
    <?php
    $c=mysql_connect("localhost","root","");
    if (!$c) die('Erreur : ' . mysql_error()); 
    $b=mysql_select_db("biblio");
    if (!$b) die('Erreur : ' . mysql_error());
    $num_dom=$_POST['num_dom'];
    $nom_dom=$_POST['nom_dom'];
    $req="UPDATE domaine set nom_dom='$nom_dom'";
    echo $req;
    $exe=mysql_query($req)or die('Erreur : '.mysql_error());	
    if ($exe) echo "<p align='center'><font size='6' color='#FF0000'><b>Le domaine a été modifier avec succès</b></font></p>";
    else echo "<p align='center'><font size='6' color='#FF0000'><b>Erreur lors de la modification</b></font></p>";
    ?>
    </body>
    </html>
    merci d'avance.a+

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Si tu fais une requête UPDATE sans mettre de WHERE forcemment ca modifie tout la table.
    Et protege toujours les données externes que tu inseres dans une requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $num_dom=int($_POST['num_dom']);
    $nom_dom=mysql_real_escape_string($_POST['nom_dom']);
    $req="UPDATE domaine set nom_dom='$nom_dom' WHERE num_dom=$num_dom";

  11. #11
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 63
    Points : 40
    Points
    40
    Par défaut champ_recherche
    bonsoir,
    Merci pour la reponse et aussi pour l'information.
    ça fonctionne vraiment,C'es à dire toujours aprés UPDATE il faut que je met WHERE (condition).
    Par exemple si je veux mieux améliorer mon catalogue de recherche, quel instruction je peux utiliser pour que les ouvrages du même titre peuvent etre tous affichés.
    Ou qu'est ce que je doit modifier ou ajouter a mon programme pour qu'il m'affiche les resultats désirés.(s'il existe plusieurs ouvrages avec le même titre,tout les ouvrages doivent etre affichés).
    a+

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

Discussions similaires

  1. 1 Condition 2 champs de recherche
    Par Lolo_of_switzerland dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 20/06/2007, 13h47
  2. 3 lettres dans mon champ de recherche
    Par Didibzh dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 05/06/2007, 11h39
  3. Guillemets et champ de recherche
    Par zermatt dans le forum Access
    Réponses: 2
    Dernier message: 22/01/2007, 09h01
  4. Recherche sur un champ et recherche suivant
    Par DurDur dans le forum Access
    Réponses: 4
    Dernier message: 10/03/2006, 23h17
  5. champ de recherche
    Par k_boy dans le forum Bases de données
    Réponses: 1
    Dernier message: 23/03/2005, 08h21

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