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

Requêtes MySQL Discussion :

En changeant nom de la bdd, ça va plus


Sujet :

Requêtes MySQL

  1. #1
    Membre actif
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    907
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 907
    Points : 233
    Points
    233
    Par défaut En changeant nom de la bdd, ça va plus
    Bonjour à tous,

    J'essaie de refaire un moteur pour un ami (copié sur le mien), mais seulement voilà :
    Comme j'ai déjà une base "recherche" pour mes besoins personnels, je l'ai recopiée en "recherches". Donc, la structure est identique.

    Le prb est que si je fais une recherche avec la base "recherches", j'ai cette erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in I:\_SiteJILIBI59\pages\exemples_forum\tests\moteur_recherche_exemple\result.php on line 5
    Par contre, si le nom est "recherche", y a plus d'erreur.
    Ci-dessous la config d'accès à la base "recherches" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $host = "localhost";	
    $user = "root";			
    $password = "";
    $nombase =  "recherches"; 
    $nomtable = "recherches";
    $lien = mysql_connect($host,$user,$password) or die('Erreur de connexion : ' . mysql_error() . ""); 
    mysql_select_db($nombase,$lien) or die ('Erreur de connexion base : ' . mysql_error() . "");
    Et la ligne incriminée lors de l'erreur :
    $resultat= mysql_num_rows($req);
    J'ai bien regardé le script, mais franchement, je ne vois pas d'où cela pourrait venir ! J'arrive pas à voir et comprendre pourquoi ça va avec "recherche" et pas avec "recherches"

    Voudriez-vous m'aider ?

    Merci d'avance.
    Cordialement.
    JLB59

    Analyse de la mémoire

  2. #2
    Membre actif Avatar de Gaara-Manga
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Avril 2007
    Messages : 247
    Points : 239
    Points
    239
    Par défaut
    C'est qu'il y a un problème dans la requête que tu fait passé dans ton mysql_num_rows.

    Vérifie que tout est bon au niveau de ta requête (syntaxe nom des chamsp et des tables,etc...) car le problème vient de la.

    Si tu trouves vraiment pas envoie ta requête pour voir

  3. #3
    Membre actif
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    907
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 907
    Points : 233
    Points
    233
    Par défaut
    Merci Gaara-Manga,

    J'ai regardé la requête et tout semble en ordre. Les champs sélectionnés correspondent bien à ceux de la base.

    J'y comprends plus rien !..

    La requête complète :
    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
    <?php
    require_once('config/config_inc.php');			
    $req = mysql_query("SELECT url,titre,motscles FROM $nomtable WHERE motscles LIKE '%$_POST[recherche]%' Order by url Asc "); 
     
    $resultat= mysql_num_rows($req); 
    if (strlen($_POST["recherche"]) > 0)
    {
    echo '
    		 <table style="font:12px verdana;border:1px solid red;width:30%;text-align:center">
    			<thead><tr><th>Résultat du Moteur de recherche</th></tr></thead>
    			<tr><td>&nbsp;</td></tr>
    			<tr>
    				<td>';
    echo 'Il y a : ';
    	   if($resultat <=1)
    		echo''.$resultat.' resultat';
    		elseif($resultat >1)
    		echo''.$resultat.' resultats';
    echo '&nbsp;&nbsp;';
    echo'pour le mot [ <span style="font-weight:bold">'.$_POST['test_recherche'].' </span> ]';
    echo '</td></tr>';
    echo '<tr><td>&nbsp;</td></tr>';
    echo '<tr><td>';
    //on ressort les infos par ordres alphabétiques
    while( $result = mysql_fetch_array($req))
    {
    echo'<span style="font-weight:bold;text-decoration:underline;">'.$result['titre'].'</span><br>';
    echo' Lien vers la page : <a href="'.$result['url'].'">'.$result['url'].'</a><br /><br />';
    }
    echo '[ <a href="javascript:history.back()">Retour</a> ]';
    echo '</td></tr></table>';
    }
     else{
    echo '<table border=1><tr><td>Aucun résultat trouvé</td></tr></table>';
    echo '[ <a href="javascript:history.back()">Retour</a> ]';
     
    }
    mysql_close(); 
     
    ?>
    Rappel de la ligne où est l'erreur :
    $resultat= mysql_num_rows($req);
    Merci de ton aide.
    Cordialement.
    JLB59

    Analyse de la mémoire

  4. #4
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    salut,

    fais un echo de ta requete pour voir ce qu'elle te retourne

  5. #5
    Membre actif
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    907
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 907
    Points : 233
    Points
    233
    Par défaut
    Citation Envoyé par Cybher Voir le message
    salut,

    fais un echo de ta requete pour voir ce qu'elle te retourne
    C'est comme ça qu'il faut faire ?
    Ligne de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req = mysql_query("SELECT url,titre,motscles FROM $nomtable WHERE motscles LIKE '%$_POST[recherche]%' Order by url Asc ");
    Echo de la requête :
    echo $req;
    Cordialement.
    JLB59

    Analyse de la mémoire

  6. #6
    Membre actif
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    907
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 907
    Points : 233
    Points
    233
    Par défaut
    Bon, j'ai essayé de faire un echo de la requête et franchement, ça me dit rien
    Resource id #4
    Par contre, si le nom de la base est "recherches" et la table"test_rech", je n'ai plus d'erreur.

    Seulement, comme je n'ai que 3 enregistrements et si je saisis un mot-clé contenu dans un seul enreg., j'ai les 3 enregistrements qui s'affichent.
    Ca, c'est pas normal !
    Pourtant mon moteur personnel a le même code !!!!

    J'y comprends plus rien.

    Mais je vais encore regarder ça de très très près. Il y a forcément un hic quelque part !

    En tout cas, merci de votre aide les gars.

    A+
    Cordialement.
    JLB59

    Analyse de la mémoire

  7. #7
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 007
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 007
    Points : 23 681
    Points
    23 681
    Par défaut
    Citation Envoyé par jlb59 Voir le message
    Bon, j'ai essayé de faire un echo de la requête et franchement, ça me dit rien
    Pour faire le echo, il vaut mieux le faire comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "SELECT url,titre,motscles FROM $nomtable WHERE motscles LIKE '%$_POST[recherche]%' Order by url Asc ";
    Là, ça te donne la requête qui est passée à MySQL, que tu peux copier et coller dans un client MySQL pour voir si elle fonctionne ou pas (au passage, tu peux même vérifier si les valeurs des variables PHP sont correctes).

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  8. #8
    Membre actif
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    907
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 907
    Points : 233
    Points
    233
    Par défaut
    Citation Envoyé par ced Voir le message
    Pour faire le echo, il vaut mieux le faire comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "SELECT url,titre,motscles FROM $nomtable WHERE motscles LIKE '%$_POST[recherche]%' Order by url Asc ";
    Je voudrais m'être trompé ced mais le code que tu as mis, cela n'affiche-t-il pas uniquement la ligne de texte ?
    Cordialement.
    JLB59

    Analyse de la mémoire

  9. #9
    Membre actif Avatar de Gaara-Manga
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Avril 2007
    Messages : 247
    Points : 239
    Points
    239
    Par défaut
    Oula syntaxe pas bonne du tout sur ta requête^^
    Essaye plutôt sa
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $req = mysql_query("SELECT url,titre,motscles FROM ".$nomtable." WHERE motscles LIKE '%".$_POST['recherche']."%' ORDER BY url ASC ");

  10. #10
    Membre actif
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    907
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 907
    Points : 233
    Points
    233
    Par défaut
    Merci Gaara-Manga, mais cela affiche du texte que je comprends pas :
    Resource id #5
    Je ne sais pas à quoi cela correspond ????

    Est-ce que j'ai encore mal fait ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $req = mysql_query("SELECT url,titre,motscles FROM ".$nomtable." WHERE motscles LIKE '%".$_POST['recherche']."%' ORDER BY url ASC ");
    echo $req;
    Merci d'avance.

    De plus, bien que l'affichage de toute la table se fasse bien, quand je saisis un mc, l'affichage me met tous les enregistrements, alors que le mc saisi n'en concerne qu'un seul !
    Ce que je comprends pas, c'est que j'ai pris modèle (code) sur le moteur de mon site, qui marche très bien, si je recherche un mot clé, je vais à l'enregistrement et j'affiche son chemin. Je comprends plus.

    Est-ce que tu as une idée du pourquoi et du comment ?

    Merci de ton aide.
    Cordialement.
    JLB59

    Analyse de la mémoire

  11. #11
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $req = mysql_query("SELECT url,titre,motscles FROM ".$nomtable." WHERE motscles LIKE '%".$_POST['recherche']."%' ORDER BY url ASC ");
    echo "SELECT url,titre,motscles FROM ".$nomtable." WHERE motscles LIKE '%".$_POST['recherche']."%' ORDER BY url ASC "
    que te retourne cet echo?

  12. #12
    Membre actif
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    907
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 907
    Points : 233
    Points
    233
    Par défaut
    Voilà ce qui s'affiche Cybher :
    SELECT url,titre,motscles FROM test_cherc WHERE motscles LIKE '%%' ORDER BY url ASC Résultat de la recherche
    Cordialement.
    JLB59

    Analyse de la mémoire

  13. #13
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 007
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 007
    Points : 23 681
    Points
    23 681
    Par défaut
    Ta variable $_POST['recherche'] est vide.

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  14. #14
    Membre actif
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    907
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 907
    Points : 233
    Points
    233
    Par défaut
    Non, Mea Culpa ! La variable est bien celle saisie.
    J'ai fait une erreur de frappe !
    Cordialement.
    JLB59

    Analyse de la mémoire

  15. #15
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    oula, j'ai un peu de mal

    lance cela pour voir l'erreur renvoyée par mysql (si mes souvenirs php sont bons..)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req = mysql_query("SELECT url,titre,motscles FROM ".$nomtable." WHERE motscles LIKE '%".$_POST['recherche']."%' ORDER BY url ASC ") or die(mysql_error())

  16. #16
    Membre actif
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    907
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 907
    Points : 233
    Points
    233
    Par défaut
    Ben, ça n'affiche rien comme erreur, que
    Resource id #5
    J'ai essayé de toutes les manières et je vois rien.

    Je vais laisser reposer mes p'tits yeux et ma p'tite tête, peut-être que j'aurai un éclair plus tard.

    Je vous remercie de votre aide les gars.

    Je vous tiendrai au courant des suites de ce prb.

    A+
    Cordialement.
    JLB59

    Analyse de la mémoire

  17. #17
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    pour revenir à la base, as tu vérifier que tu étais bien connecté à la base? etc?

  18. #18
    Membre actif
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    907
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 907
    Points : 233
    Points
    233
    Par défaut
    Bien-sûr, sinon je n'afficherais rien !
    Cordialement.
    JLB59

    Analyse de la mémoire

  19. #19
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 007
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 007
    Points : 23 681
    Points
    23 681
    Par défaut
    Citation Envoyé par jlb59 Voir le message
    Je voudrais m'être trompé ced mais le code que tu as mis, cela n'affiche-t-il pas uniquement la ligne de texte ?
    C'est justement ce qu'il faut essayer d'obtenir pour voir d'où vient l'erreur. Quand on affiche "la ligne de texte", on obtient la requête SQL qui est transmise au serveur MySQL sous forme de texte.
    Ca permet 2 choses :
    1/ Vérifier que les variables PHP ont bien des valeurs (ici $nomtable et $_POST['recherche']). Si elles sont vides, c'est un problème dans le script PHP ;
    2/ Sinon, on peut copier le texte de la requête, et l'exécuter dans un client MySQL (PHPMyAdmin par exemple), pour voir ce que ça donne (éventuellement analyser le message d'erreur côté MySQL).

    L'objectif, c'est de faire la part entre un problème côté PHP ou un problème côté MySQL. En s'affranchissant de script PHP...

    C'est pour ça qu'on te demande de faire un ECHO..., pour avoir le texte de la requête et l'analyser .

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  20. #20
    Membre actif
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    907
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 907
    Points : 233
    Points
    233
    Par défaut
    Ton code CED m'affiche non seulement le texte mais aussi le contenu des variab
    les (nom de la table et mot clé recherché)
    Cordialement.
    JLB59

    Analyse de la mémoire

Discussions similaires

  1. [AC-2007] Afficher le nom de ma BDD sur la barre de menu
    Par Bonero dans le forum VBA Access
    Réponses: 4
    Dernier message: 18/07/2012, 23h53
  2. Job et espace dans le nom de la BDD
    Par Ctplm dans le forum Développement
    Réponses: 2
    Dernier message: 13/08/2010, 18h13
  3. changer nom de serveur bdd
    Par lorderon85 dans le forum Windows Forms
    Réponses: 7
    Dernier message: 15/03/2007, 09h42
  4. Nom de colonne BdD
    Par routscap dans le forum Requêtes
    Réponses: 1
    Dernier message: 09/08/2006, 17h02
  5. [MySQL] Obtenir le nom de la BDD
    Par DevloNewb' dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 09/08/2006, 12h59

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