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 script PHP/MySQl [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2010
    Messages : 86
    Par défaut Problème de script PHP/MySQl
    Bonjour à tous, je me présente, je suis jeune développeur, infographiste & webdesigner, j'ai un petit problème avec un script que j'ai pu glâner sur le net, script mis en oeuvre pour un petit projet, créer un moteur de recherche qui va chercher des données au sein d'une BDD.

    Alors voici mon problèlme, le script fonctionne plus ou moins bien, sauf que à l'affichage, une erreur PhP apparaît :

    Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\php form\lebontest.php on line 225.

    Alors voilà, après maintes heures de recherches, je m'en remet à vous, si quelqu'un pourrais essayer de voir où se trouve mon erreur...
    Je suis navré d'en devoir arriver là, mais je suis un peu desespéré.

    Mon 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
    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
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    <?php
    mysql_connect('localhost','root','');
    mysql_select_db('tests');
    //On determine l'expression a rechercher
    if(isset($_GET['recherche']))
    {
            $rec = htmlentities($_GET['recherche']);
    }
    else
    {
            $rec = 'php MYSQL';
    }
    //On determine le type de recherche
    if(isset($_GET['type']))
    {
            if($_GET['type']=='un')//Un des mots
            {
                    $type = 1;
            }
            elseif($_GET['type']=='tout')//Tout les mots
            {
                    $type = 2;
            }
            else//L'expression exacte
            {
                    $type = 3;
            }
    }
    else
    {
            $type = 1;//type par defaut: L'expression exacte
    }
    //On determine si on doit surligner les mots dans les resultats
    if(!isset($_GET['surligner']) or $_GET['surligner']!='true')
    {
            $surligner = false;
    }
    else
    {
            $surligner = true;
    }
    //On dertermine les identifiants, les noms et les informations des utilisateur
    $req = 'SELECT id, username, email FROM forumusers WHERE ';
    if($type==1)
    {//ayant un des mots dans leurs informations
            $mots = explode(' ',$rec);//En separre lexpression en mots cles
            foreach($mots as $mot)
            {
                    $req .= ' email LIKE "%'.$mot.'%" OR';
            }
            $req .= ' 1=0';
    }
    elseif($type==2)
    {//ayant tout des mots dans leurs informations
            $mots = explode(' ',$rec);//En separre lexpression en mots cles
            foreach($mots as $mot)
            {
                    $req .= ' email LIKE "%'.$mot.'%" AND';
            }
            $req .= ' 1=1';
    }
    else
    {//ayant l'expression exacte dans leurs informations
            $req .= 'email LIKE "%'.$rec.'%"';
    }
    //Les utilisateur seront ranges par identifiant en ordre croissant
    $req .= ' order by id asc';
    $requete = mysql_query($req);
    //Le formulaire de recherche
    ?>
    <form action="" method="get">
    Expression &agrave; rechercher: <input type="text" name="recherche" value="<?php echo $rec; ?>" /><br />
    Type de recherche: <input type="radio" name="type" value="un"<?php if($type==1){echo 'checked="checked"';} ?> /> Un des mots <input type="radio" name="type" value="tout"<?php if($type==2){echo 'checked="checked"';} ?> /> Tout les mots <input type="radio" name="type" value="exacte"<?php if($type==3){echo 'checked="checked"';} ?> /> Expression exacte<br />
    Mettre en gras les mots recherch&eacute;s: <input type="checkbox" name="surligner" value="true" <?php if($surligner){echo 'checked="checked"';} ?> /><br />
    <input type="submit" value="Rechercher" />
    </form>
    <h2>R&eacute;sultats</h2>
    <table>
            <tr>
                    <th>Identifiant</th>
                    <th>Nom</th>
                    <th>Informations</th>
            </tr>
    <?php
    //On affiche les resultats
    // LIGNE 225
     while($dnn = mysql_fetch_array($requete))
    {
    ?>
            <tr>
                    <td><?php echo $dnn['id']; ?></td>
                    <td><?php echo $dnn['username']; ?></td>
                    <td><?php
    if($surligner)//Si il faut surligner les mots, on les surligne
    {
            if($type==3)
            {
                    echo preg_replace('#('.preg_quote($rec).')#i', '<strong>$1</strong>', $dnn['email']);//On surligne l'expression exacte
            }
            else
            {
                    echo preg_replace('#('.str_replace(' ','|',preg_quote($rec)).')#i', '<strong>$1</strong>', $dnn['email']);//On surligne les mots cles de la recherche
            }
    }
    else
    {
            echo $dnn['email'];//On ne surligne pas
    }
    ?></td>
            </tr>
    <?php
    }
    ?>
    </table>


    merci beaucoup. (je me permet de vous indiquer la ligne mentionnée dans lanl'erreur, à savoir la 225)

    Merci et à bientot !

    Luky

  2. #2
    Membre émérite
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Par défaut
    Bonjour,

    as tu vérifié la fiabilité de ta requête ? si non fais un :


    et exécutes ta requête dans phpmyadmin

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2010
    Messages : 86
    Par défaut
    je viens de faire
    tout en bas de mon script, et ce message s'affiche

    "SELECT id, nom, infos FROM utilisateurs WHERE infos LIKE "%homme%" AND 1=1 order by id asc"

    mais toujours sour le même mesage d'erreur par contre

  4. #4
    Membre émérite
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Par défaut
    et cette requête dans phpmyadmin te renvoie des résultats ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2010
    Messages : 86
    Par défaut
    comment ça ? ou puis-je effectuer cette requête dans phpmyadmin ?

    pas dans l'editeur de commandes SQL quand même ...

  6. #6
    Membre émérite
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Par défaut
    oui,

    c'est uniquement pour vérifier qu'elle ne renvoie pas d'erreur

    ton mysql_fetch_array ne reçoit pas de resource apparemment ce qui signifie peut être que ta requête te renvoie autre chose qu'une ressource...
    peut être reçoit il false 'given boolean'

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2010
    Messages : 86
    Par défaut
    Alors, sous phpmyadmin, la requête me renvoi vers les bons resultats, alors je ne vois vraiment pas d'ou peut venir cette erreur.....

    H.E.L.P !

  8. #8
    Membre émérite
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Par défaut
    dans le code que tu donnes :

    tu as cette requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id, username, email FROM forumusers WHERE...
    et quand tu l'as affiché tu as

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id, nom, infos FROM utilisateurs WHERE infos LIKE "%homme%" AND 1=1 order by id asc
    est ce normal ?

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2010
    Messages : 86
    Par défaut
    Oui je pense car a ce que je comprend le message qu eme donne l'erreur, c'est la concaténation de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $req = 'SELECT id, nom, infos FROM utilisateurs WHERE ';
    if($type==1)
    {//ayant un des mots dans leurs informations
            $mots = explode(' ',$rec);//En separre lexpression en mots cles
            foreach($mots as $mot)
            {
                    $req .= ' infos LIKE "%'.$mot.'%" OR';
            }
            $req .= ' 1=0';
    }
    il me semble, mais je peux me tromper, toujours est-il que je ne comprend pas pour l'erreur me parle de données booléennes, alors que dans ma BDD il n'y a que des "TEXT/INT/VARCHAR" .....

    et j'oubliais, la je développe en local... sur Wamp si sa peut aider...

    en tout cas merci à toi syl2095

  10. #10
    Membre émérite
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Par défaut
    et si tu fais un echo $requete, tu reçois bien un resource #id ... ?

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2010
    Messages : 86
    Par défaut
    Apparement pas, si je fait un

    en fin de script, rien ne se passe, rien ne s'affiche.....

  12. #12
    Membre émérite
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Par défaut
    et en commentant les tests comme ça :

    Code php : 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
     
    /*
    if($type==1)
    {//ayant un des mots dans leurs informations
            $mots = explode(' ',$rec);//En separre lexpression en mots cles
            foreach($mots as $mot)
            {
                    $req .= ' email LIKE "%'.$mot.'%" OR';
            }
            $req .= ' 1=0';
    }
    elseif($type==2)
    {//ayant tout des mots dans leurs informations
            $mots = explode(' ',$rec);//En separre lexpression en mots cles
            foreach($mots as $mot)
            {
                    $req .= ' email LIKE "%'.$mot.'%" AND';
            }
            $req .= ' 1=1';
    }
    else
    {//ayant l'expression exacte dans leurs informations
            $req .= 'email LIKE "%'.$rec.'%"';
    }
    //Les utilisateur seront ranges par identifiant en ordre croissant
    $req .= ' order by id asc';*/
     
    $requete = mysql_query($req);

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2010
    Messages : 86
    Par défaut
    j'essaie ça après manger, en tout cas un grand merci.... reste dans le coin si sa en te dérange pas, que je poste ma reponse ....

    j'espère que ce code fonctionnera ...

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2010
    Messages : 86
    Par défaut
    Me revoilà, alors, j'ai donc essayé la modification de script comme tu me l'a conseillé, et là, l'erreur est la même, sauf qu'elle est identifié en ligne 126
    soit, une ligne en dessous.

    --------------------------------------------
    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
    /*
    if($type==1)
    {//ayant un des mots dans leurs informations
            $mots = explode(' ',$rec);//En separre lexpression en mots cles
            foreach($mots as $mot)
            {
                    $req .= ' email LIKE "%'.$mot.'%" OR';
            }
            $req .= ' 1=0';
    }
    elseif($type==2)
    {//ayant tout des mots dans leurs informations
            $mots = explode(' ',$rec);//En separre lexpression en mots cles
            foreach($mots as $mot)
            {
                    $req .= ' email LIKE "%'.$mot.'%" AND';
            }
            $req .= ' 1=1';
    }
    else
    {//ayant l'expression exacte dans leurs informations
            $req .= 'email LIKE "%'.$rec.'%"';
    }
    //Les utilisateur seront ranges par identifiant en ordre croissant
    $req .= ' order by id asc';*/
    $requete = mysql_query($req);


    résultat :


    Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\php form\lebontest.php on line 226

  15. #15
    Membre émérite
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Par défaut
    au temps pour moi !

    comme ça :

    Code php : 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
     
     
    $req = 'SELECT id, nom, infos FROM utilisateurs';
     
    /*
    if($type==1)
    {//ayant un des mots dans leurs informations
            $mots = explode(' ',$rec);//En separre lexpression en mots cles
            foreach($mots as $mot)
            {
                    $req .= ' email LIKE "%'.$mot.'%" OR';
            }
            $req .= ' 1=0';
    }
    elseif($type==2)
    {//ayant tout des mots dans leurs informations
            $mots = explode(' ',$rec);//En separre lexpression en mots cles
            foreach($mots as $mot)
            {
                    $req .= ' email LIKE "%'.$mot.'%" AND';
            }
            $req .= ' 1=1';
    }
    else
    {//ayant l'expression exacte dans leurs informations
            $req .= 'email LIKE "%'.$rec.'%"';
    }
    //Les utilisateur seront ranges par identifiant en ordre croissant
    $req .= ' order by id asc';*/
    $requete = mysql_query($req);

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2010
    Messages : 86
    Par défaut
    Même résultat.

    mais bizarrement, la ligne est toujours la 226

  17. #17
    Membre émérite
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Par défaut
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $requete = mysql_query($req);
    echo $requete;

    te donne quoi ?

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2010
    Messages : 86
    Par défaut
    Ah un changement de ligne, la 228, à savoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php
    //On affiche les resultats
    while($dnn = mysql_fetch_array($requete))
    {
    ?>

  19. #19
    Membre émérite
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Par défaut
    à tout hasard, es tu bien connecté à la base ?

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    mysql_connect("localhost", "root", "") or die("Impossible de se connecter : " . mysql_error());

    sinon

    quelle est la structure de ta table utilisateurs ?

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2010
    Messages : 86
    Par défaut
    Il semble bien que je soit connecté à ma base de donnée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mysql_connect('localhost','root','');
    mysql_select_db('tests');
    pour la structure de la table utilisateur, je te donne le 'code' SQL, ou un simple screenshot suffira ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. [MySQL] Optimisation de scripts PHP/MySQL
    Par DgG dans le forum PHP & Base de données
    Réponses: 368
    Dernier message: 20/11/2013, 18h59
  2. [MySQL] Problème de script PHP/MySQl V.2
    Par lukyVJ dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 20/12/2010, 13h06
  3. Réponses: 9
    Dernier message: 05/01/2006, 12h24
  4. Recherche Login Script PHP & MySQL
    Par whbh dans le forum SQL Procédural
    Réponses: 9
    Dernier message: 01/12/2005, 16h45
  5. [MySQL] [Script]Optimisation de scripts Php/MySQL (2)
    Par copy dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 27/08/2004, 08h33

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