Recherche dans une base

Signaler
Messages postés
40
Date d'inscription
vendredi 30 novembre 2007
Statut
Membre
Dernière intervention
3 décembre 2008
-
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
-
Bonsoir tt le monde,
je suis en train d'essayer de créer un moteur de recherche dans ma base de données por mon prochain site, mais j'ai un souci avec la fonction mysql_fetch_array() pourriez-vous me corriger svp?

<?php

include("variables.inc.php");
include("haut.inc.php");

$liendb = mysql_connect($bddserver, $bddlogin, $bddpassword);
mysql_select_db($bdd);
?>
                <form action="search.php" method="post">
                  " size="30" />
                 
                </form>
    

          <!--DWLayoutTable-->
      ----

        id,
    nom,
    prenom,
    naissance,
    &nbsp;,
   
      
      <?php

$clause = '';
if (isset($_REQUEST['motclef'])) {
$clause .= \" WHERE INSTR(nom,'\".$_REQUEST['motclef'].\"')\";
$clause .= \" OR INSTR(artistes,'\".$_REQUEST['motclef'].\"')\";
}

$sql = \"SELECT * FROM tapesall \".$clause;
$resultat = mysql_query ($sql);

while ($tapesall = mysql_fetch_array($resultat))

{
$id = $tapesall['id'];
$nom = $tapesall['nom'];
$artiste = $tapesall['artiste'];
$date = $tapesall['naissance'];
echo \"----
\";
echo \"$id, \";
echo \"$nom, \";
echo \"$artistes, \";
echo \"$date, \";
echo \"\";
}
echo "
";

mysql_close($liendb);

?>

merci de votre aide.

11 réponses

Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
18
Salut,

Et quel est le problème exactement ?

<hr size="2" width="100%" />Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...
Messages postés
40
Date d'inscription
vendredi 30 novembre 2007
Statut
Membre
Dernière intervention
3 décembre 2008

ca m'affiche ca (c vrai si je dis tout ce qui se passe...) :

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\.......\search.php on line 278

c'est quoi mon problème?
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Hello,

ben ta requête foire. Affiche la en clair après l'avoir construite pour voir à auoi elle ressemble.
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
18
Ah ! Ben c'est mieux :)

Le résultat que tu obtiens n'est pas un résultat mysql... Parce que ta requête a échoué.
Pour t'assurer que ton script se déroule bien, tu DOIS vérifier que la requête s'est correctement déroulée.

if (resultat = mysql_query($sql)) {
  // Traitement du résultat
}
else {
  echo 'Requête : ' . $sql . '
';
  echo 'Erreur n°' . mysql_errno() . ' : ' . mysql_error();
}

Ca te permet de savoir ce qui se passe et pourquoi. Afficher la requête, quand tu fais du debug, ça te permet de déceler une erreur dans ce qui est effectivement exécuté (et pas ce que tu imagines avec les variables, qui peuvent parfois te réserver des surprises) ou de l'exécuter (dans phpMyAdmin par exemple) pour voir mieux ce qui déconne.

<hr size="2" width="100%" />Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...
Messages postés
40
Date d'inscription
vendredi 30 novembre 2007
Statut
Membre
Dernière intervention
3 décembre 2008

qu'est ce que tu entends par affiche la en clair?
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
echo $sql;
Messages postés
40
Date d'inscription
vendredi 30 novembre 2007
Statut
Membre
Dernière intervention
3 décembre 2008

[auteur/NEIGEDHIVER/924195.aspx neigedhiver]




j'ai placé le code que tu m'as filé en dessous de
$resultat = mysql_query ($sql);

ca me donne ca : Requête : SELECT * FROM tapesall WHERE INSTR(nom,'dj') OR INSTR(artistes,'dj')
Erreur n°1046 : No database selected

j'ai perdu toutes mes notions de requetes sql....comment je définit la base dans laquelle i faut chercher la table tapesall?
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
18
Tu es censé l'avoir fait avec la ligne :
mysql_select_db($bdd);

Sauf que visiblement, ça n'a pas marché.
Dans ton script, tu ne contrôles aucune erreur. Et après, tu galères pour trouver.

Soit $bdd est vide, soit c'est un nom de base de données qui n'existe pas.  Il semble que la connexion au serveur soit quand même ok...

Lis un peu la doc :
http://fr.php.net/mysql_select_db

Valeurs de retour

Cette fonction retourne <tt>TRUE</tt> en cas de
succès, <tt>FALSE</tt> en cas d'échec.


=>

if (!mysql_select_db($bdd)) {
  die('Erreur n°' . mysql_errno() . ' : ' . mysql_error());
}

Prends l'habitude de vérifier que tout se passe bien et fais en sorte d'être informé quand ce n'est pas le cas.

<hr size="2" width="100%" />Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...
Messages postés
40
Date d'inscription
vendredi 30 novembre 2007
Statut
Membre
Dernière intervention
3 décembre 2008

j'ai copié bêtement le code que j'ai dans mon livre sans réfléchir un minimum....je n'avais pas défini $bdd dans mon fichier variables.inc.php....
la ca a l'air de marche maintenan...
mais ya ke le critere nom qui apparait.....
je triture mon code et je re!
Messages postés
40
Date d'inscription
vendredi 30 novembre 2007
Statut
Membre
Dernière intervention
3 décembre 2008

j'ai resolu mon problème :p merci beaucoup!
je souhaiterai savoir comment fait-on pour afficher une image dans le code php, sachant ke le nom de l'image se trouve dans ma base de données. Est ce que je suis clair?
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
18
Plop,

Si le problème est résolu, marque le sujet comme résolu.

Pour ton deuxième problème, normalement, il faut ouvrir un nouveau sujet. En plus, je comprends pas ce que tu veux...

<hr size="2" width="100%" />Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...