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 V.2


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 V.2
    Bonjour à tous, voici mon souci :

    j'ai écris un code en PhP/Mysql que nous appellerons script, ce script sert à parcourir une BDD, et à retourner des données préalablement entrées dans un formulaire, le script marchait très bien, jusqu'à que j'upload une bdd de plus de 63 000 clients, et là dès que je lance ma recherche, un message d'erreur s'affiche, le contenu du message est :

    Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\php form\lebontestou.php on line 237
    Le contenu de ma base donnée n'est fait que de fonctions type 'VARCHAR'.

    et lorsque ce message s'affiche, le formulaire reste en place, la page n'est donc pas noyée dans des messages d'erreurs php, je pense donc que c'est une erreur minime...

    Mais très déroutante.... À l'aide

  2. #2
    Membre chevronné Avatar de rikemSen
    Homme Profil pro
    Analyste Développeur Web - Fizzup.com
    Inscrit en
    Décembre 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste Développeur Web - Fizzup.com
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 387
    Par défaut
    Eventuellement, un message d'erreur sans code à montrer, ça pose problème donc si nous pouvions avoir ton code...

    Parce que d'après ton message d'erreur, ça serait un problème dans ton code, non dans ta base. (:

  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
    Merci de votre rapide intervention

    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
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
     <h1>Instructions</h1>
     <?php
    mysql_connect('localhost','root','') or die(mysql_error());;
    mysql_select_db('clients');
     
    //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 RAISON SOCIALE, DIRIGEANT,ADRESSE, CP, REGION, VILLE, TEL, TELECOPIE, EMAIL, EMAIL2, CODE_NAF, LIBELLE_NAF, RUBRIQUE_PROFESSIONNELLE FROM list 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=1';
    }
    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 username DESC';
    //echo $req;
    $requete = mysql_query($req);
    //echo $requete;
     
     
     
    //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 <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>Pseudo</th>
                    <th>Identifiant</th>
                    <th>email</th>
                    <th>Résumé</th>
                    <th>&nbsp;</th>
            </tr>
    <?php
    //On affiche les resultats
    while($dnn = mysql_fetch_array($requete))
    {
    ?>
            <tr>
                    <td><?php echo $dnn['username']; ?></td>
                    <td><?php echo $dnn['id']; ?></td>
                    <td><?php echo $dnn['email']; ?></td>
     
     
                    <td><b>|||</b>  <?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['infos']);//On surligne l'expression exacte
            }
            else
            {
                    echo preg_replace('#('.str_replace(' ','|',preg_quote($rec)).')#i', '<strong>$1</strong>', $dnn['infos']);//On surligne les mots cles de la recherche
            }
    }
    else
    {
    	    echo $dnn['username'];
    		echo $dnn['id'];
    		echo $dnn['email'];
     
    }
     
    //echo $requete
    ?></td>
            </tr>
    <?php
    }
    ?>
     
    <?php // ?>
    </table>
    voici la partie qui me fait défaut

  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
    Par défaut
    Ta requête ne doit pas fonctionner, il faut debuguer de ce côté.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  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
    Heu SabotaG j'ai pas bien compris

  6. #6
    Membre chevronné Avatar de rikemSen
    Homme Profil pro
    Analyste Développeur Web - Fizzup.com
    Inscrit en
    Décembre 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste Développeur Web - Fizzup.com
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 387
    Par défaut
    au lieu de faire un "mysql_query($req)" fait un "echo $req" et test ta requete directement via le panel d'administration phpmyadmin

  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
    c'est à dire je remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete = mysql_query($req);
    par ?

    et dans PhPmyAdmin, où et commetn puis-je faire pour tester ma requête ..?

    merci d'avance

    luky

  8. #8
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Hello

    Ligne #73, tu devrais faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    if (DEBUG) echo "<pre>"; var_dump($query); echo "</pre>";
    if ($results = mysql_query($req))
    {
        // Code si la query à fonctionné
        // ...
    }
    else
    {
        // la query n'a pas marché, message d'erreur
    }
    et au début de ton script (dans un tag PHP cela va sans dire), ajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (!defined('DEBUG')) define('DEBUG', 1); // que tu mettra à 0 en prod
    Le débug permettra d'afficher la requête SQL que tu essaie d'envoyer, tu pourra alors la copier/coller dans la console de mysql ou dans phpmyadmin et voir ce qui coince. Dans phpmyadmin tu vas dans l'onglet SQL et tu colle ta requête intégrale.

    Si tu veux qu'on t'aide plus, on va avoir besoin des create table correspondants.

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
    Par lukyVJ dans le forum PHP & Base de données
    Réponses: 45
    Dernier message: 10/12/2010, 19h02
  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