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 :

Probleme recherche simple [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 34
    Points : 22
    Points
    22
    Par défaut Probleme recherche simple
    Voila j' ai deux pages dont un formulaire très classique pour commencer juste pour tester et voir que ça marche apres je le développerai beaucoup plus mais deja j' ai des erreurs...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <form action="Recherche.php" method="post"> <? // envoi les informations vers la page indiqué par action soit cible2.php en $_POST['variable']   ?>
    <p>
    <input type="text" name="nom" /> <input type="submit" value="Valider" /> <? // créer une zone de texte défini stockant l information voulu ---> name ="variable" ?>
    </p>
    </form>
    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
     
    <?
    include("_connect.php"); // Connection a mon serveur + sélection de la BDD
    //Recherche du texte $search dans une table
    $res = $_POST['nom'] ;
    $result = mysql_query("SELECT * FROM `etat en cours` WHERE `Modèle` LIKE ('%res%')") or die(mysql_error()); // Requête SQL affiche et stoche toute la table etat en cours
    $nbResults = mysql_num_rows($result);
     
    while ($res = mysql_fetch_array($result)) //Au cas où il y a plusieurs résultats
    {
         echo $res['*'];
    }
     
     
    echo "Il y $nbResults enregistrements dans la table ''Etat en cours'':";
    echo "<br /><br />";
    echo "Recherche = $res<br /><br />";
    echo "$res"
    ?>
     
    <?php echo $_POST['nom']; ?>
    Il y a pas mal de champs que j'enleverai dans le 2eme code par la suite car c' est juste pour comprendre l' erreur que je les avait ajouté mais finalement ça m' a pas aidé plus que ça :s

    La je bloque car il me dit :
    Il y 0 enregistrements dans la table ''Etat en cours'':

    Alors que dans le champs Modèle avec SG150 y en a au moins 700 enregistrements...

    Si quelqu un a une idée pourquoi il me dit 0 ça serait super et je pourrais comme ça faire la suite de ce moteur de recherche

    Merci d' avance a ceux qui répondront

  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
    Bonjour,

    Tu as 700 enregistrements dans ta table, mais en as-tu 700 qui répondent au critère LIKE ('%$res%') ?
    D'ailleurs il n'y a pas besoin de ( ) autour du critère de LIKE il me semble.

    Une solution est d'afficher la requete avant de l'exécuter pour vérifier son format et ensuite de la tester dans PhpMyAdmin pour t'assurer qu'elle retourne bien des résultats avant de te pencher sur le code.

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 34
    Points : 22
    Points
    22
    Par défaut
    Affichage des enregistrements 0 - 29 (617 total, traitement: 0.0011 sec.)
    requête SQL:
    SELECT *
    FROM `etat en cours`
    WHERE `Modèle` LIKE 'SG150'
    LIMIT 0 , 30


    donc oui ça marche bien et le echo "$res" me permet de savoir justement si la rechcher est bien sur SG150 il retourne que oui pourtant...

  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 cobra91
    Affichage des enregistrements 0 - 29 (617 total, traitement: 0.0011 sec.)
    requête SQL:
    SELECT *
    FROM `etat en cours`
    WHERE `Modèle` LIKE 'SG150'
    LIMIT 0 , 30


    donc oui ça marche bien et le echo "$res" me permet de savoir justement si la rechcher est bien sur SG150 il retourne que oui pourtant...
    Oui mais là tu ne fais pas exactement la meme requete que dans ton code php! Donc une erreur peut résulter de cette différence (en l'occurence les parenthèse autour de LIKE, les quote autour du nom du champ dans le select etc.)

  5. #5
    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
    En faisant ca, tu verras que ta requete est du style

    SELECT prod From matable WHERE monchamp LIKE('%res%');

    tu as oublié un $ devant res dans ta requete.

  6. #6
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 34
    Points : 22
    Points
    22
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $result = mysql_query("SELECT * FROM `etat en cours` WHERE `Modèle` LIKE ('%$res%')") or die(mysql_error()); // Requête SQL affiche et stoche toute la table etat en cours
    ok ben j ai changé ce $ suivant tes conseils maintenant la il affiche bien :

    Recherche = SG150

    Il y 617 enregistrements dans la table ''Etat en cours'':

    Mais pas de visualisation sur ces enregistrements je suppose que ça doit être plus complexe a afficher...

  7. #7
    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 cobra91
    Mais pas de visualisation sur ces enregistrements je suppose que ça doit être plus complexe a afficher...
    Plus complexe par vraiment, mais tu ne peux effectivement pas faire un echo $res['*']; parce que ca revient a afficher la valeur du champ * (et pas la valeur de tous les champs).
    un echo $res['prod'] permettra d'afficher le champ prod. Tout dépend ce que tu veux afficher et comment les mettre en forme, mais avec un foreach tu pourrais t'en sortir rapidement. Bon courage et penses au tag Résolu!

  8. #8
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 34
    Points : 22
    Points
    22
    Par défaut
    merci bien en tout cas rapide et efficace ça fait vraiment plaisir

    Impec avec le while ça donne comme il 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
    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    <body>
     
    <table border="1" cellpadding="2" cellspacing="2">
     
    <tr>
    <th>Modèle</th>
    <th>Numéro de série</th>
    <th>état</th>
    <th>date</th>
    <th>Bon de livraison</th>
    <th> Grossiste</th>
    <th> Intégrateur</th>
    <th> Client Final</th>
    <th> Remarque</th>
    <th> Lettre de Maintenance</th>
    <th> Date de début de maintenance</th>
    <th> Date de fin de maintenance</th>
    <th> Type de maintenance</th>
    <th> Licence Débit</th>
    <th> Licence CPR</th>
    <th> Socle</th>
    <th> SuiteSoft</th>
    <th> Année</th>
    <th> Mois</th>
    <th> Semaine</th>
    </tr>
     
    <?
    include("_connect.php"); // Connection a mon serveur + sélection de la BDD
    //Recherche du texte $search dans une table
    $res = $_POST['nom'] ;
    $sql = "SELECT * FROM `etat en cours` WHERE `Modèle` LIKE ('%$res%')";
    $result = mysql_query("SELECT * FROM `etat en cours` WHERE `Modèle` LIKE ('%$res%')") or die(mysql_error()); // Requête SQL affiche et stoche toute la table etat en cours
    $nbResults = mysql_num_rows($result);
     
     
    echo "Recherche = $res<br /><br />"; 
    echo "Il y $nbResults enregistrements dans la table ''Etat en cours'':";
    echo "<br /><br />";
     
    // Recuperation des resultats par colonne
    while($row = mysql_fetch_row($result)){
    $Modèle = $row[0];
    $N°série = $row[1];
    $état = $row[2];
    $date = $row[3];
    $bon_de_livraison = $row[4];
    $Grossiste = $row[5];
    $Intégrateur = $row[6];
    $Client_Final = $row[7];
    $Remarque = $row[8];
    $Maintenance = $row[9];
    $début_de_maintenance = $row[10];
    $Date_de_fin_de_maintenance = $row[11];
    $Type_de_maintenance = $row[12];
    $debit = $row[13];
    $cpr = $row[14];
    $Socle = $row[15];
    $SuiteSoft = $row[16];
    $Année = $row[17];
    $Mois = $row[18];
    $Semaine = $row[19];
     
    // Affichage des résultats sous forme de tableaux avec en-têtes définies plus haut
    echo "<tr>\n
    <td><a href=\"$N°série\">$Modèle</a></td>\n
    <td>$N°série</td>\n
    <td>$état</td>\n
    <td>$date</td>\n
    <td>$bon_de_livraison</td>\n
    <td>$Grossiste</td>\n
    <td>$Intégrateur</td>\n
    <td>$Client_Final</td>\n
    <td>$Remarque</td>\n
    <td>$Maintenance</td>\n
    <td>$début_de_maintenance</td>\n
    <td>$Date_de_fin_de_maintenance</td>\n
    <td>$Type_de_maintenance</td>\n
    <td>$debit</td>\n
    <td>$cpr</td>\n
    <td>$Socle</td>\n
    <td>$SuiteSoft</td>\n
    <td>$Année</td>\n
    <td>$Mois</td>\n
    <td>$Semaine</td>\n
    </tr>\n";
     
    }
     
    // Deconnexion de la base de donnees
    mysql_close();
     
    ?>

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

Discussions similaires

  1. [XL-2010] Probleme sur simple macro de recherche d'une valeur
    Par Mut dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/02/2013, 16h35
  2. Souvent j'ai le probleme (recherche de carractere...)
    Par GESCOM2000 dans le forum Access
    Réponses: 7
    Dernier message: 21/01/2006, 20h13
  3. [text] probleme avec simple quote
    Par bor1s dans le forum Langage SQL
    Réponses: 3
    Dernier message: 22/12/2005, 16h03
  4. [Debutant] Probleme de (simple) heritage
    Par Invité dans le forum Langage
    Réponses: 7
    Dernier message: 08/12/2004, 10h53
  5. [langage] Problème tout simple
    Par marouanitos dans le forum Langage
    Réponses: 5
    Dernier message: 24/09/2003, 11h25

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