Bdd+php avec easyphp

cs_neosqual Messages postés 13 Date d'inscription vendredi 11 juin 2004 Statut Membre Dernière intervention 18 mai 2005 - 9 mai 2005 à 16:32
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 - 11 mai 2005 à 19:25
Bonjour a tous,

J'aurai voulu savoir si il y a qq chose de spécial à faire pour accéder à une bdd (créée en mysql sous easyphp) à partir d'une requête php.
En fait j'ai fait un script de recherche en php et le problème c'est que le résultat de ma recherche est toujours null.
je pense bien me connecter à la bdd en faisant
@ $db = mysql_pconnect("localhost","root","");
puis
mysql_select_db("sites");

Si jamais il y a qq chose de spécial a faire que j'ai oublié, dites le moi svp...je vous en serai très reconnaissant Merci bocou

++

13 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
9 mai 2005 à 17:23
Hello,



je te conseille de lire ce tuto :

http://www.phpdebutant.org/article66.php
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
9 mai 2005 à 18:14
Salut,



ensuite n'utilise pas les pconnect, mysql_connect() sera plus performant et adapté aux hébergeurs mutualisés ;-)

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




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
0
cs_neosqual Messages postés 13 Date d'inscription vendredi 11 juin 2004 Statut Membre Dernière intervention 18 mai 2005
10 mai 2005 à 16:32
Bonjour,

Merci beaucoup pour votre aide. Le probleme semble résolu en effet...
Néammoins, j'ai maintenant une erreur que j'ai du mal à interpréter malgrés la lecture du tuto conseillé par Malalam. En effet, le code me retourne maintenant l'erreur suivante:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in h:\program files\easyphp1-8\www\resultat.php on line 47

J'en conclue donc une erreur soit sur l'appel de la fonction, soit sur la variable associée à la fonction dans le code suivant:


mysql_connect("localhost","root","") or die('Erreur de connexion à la base de données');


mysql_select_db("phpbb") or die ('Base inexistante');


$query = "select * from sites where ".$searchtype." like '%".$searchterm."%'";


$result = mysql_query($query);


$num_results = mysql_num_rows($result);

Merci beaucoup en tous cas pour l'aide apportée par Malalam et Anthomicro et j'espère que qqun pour m'aider aussi efficacement pour ce nouveau petit problème.

Neosqual
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
10 mai 2005 à 16:47
Ce message veut dire que ta requete n'est pas valide.
Dans ton WHERE, ce qui suit doit etre le nom d'un champ de ta table.
Donc resumons :
table = sites
champ = $searchtype
es-tu certain que la variable $searchtype contient bien un nom de champ de ta table sites ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_neosqual Messages postés 13 Date d'inscription vendredi 11 juin 2004 Statut Membre Dernière intervention 18 mai 2005
11 mai 2005 à 09:29
Salut,

En effet malalam, je suis complêtement d'accord avec toi...Néammoins je n'arrive vraiment pas à trouver le pkoi du comment!
En fait je saisie les choix de l'utilisateur avec le code html suivant:

RECHERCHE D'UN SITE


<form action="resultat.php" method="post">
Sélectionnez votre critère de recherche de site:

<select name="searchtype">
<option value ="nom_site">Nom du site
<option value ="fond_carto">Fond cartographique
<option value ="synthese">Synthèse
</select>

Saisissez les pécisions sur le critère choisi:



</form>

Puis, j'envoie les résultats à un script php qui traite donc searchtype et searchterm de la façon suivante:


<?


trim($searchterm);


//if(!$searchtype || !$searchterm)


//{


// echo "vous n'avez pas entré les détails de la recherche. Veuillez revenir à la page précédente pour les saisir à nouveau";


// exit;


//}


$searchtype = addslashes($searchtype);


$searchterm = addslashes($searchterm);


mysql_connect("localhost","root","") or die('Erreur de connexion à la base de données');


mysql_select_db("phpbb") or die ('Base inexistante');


$query = "select * from sites where ".$searchtype." like '%".$searchterm."%'";


$result = mysql_query($query);


$num_results = mysql_num_rows($result);


echo "Nombre de sites trouvés: ".$num_results."

";


for ($i=0; $i <$num_results; $i++)


{


$row = mysql_fetch_array($result);


echo "".($i+1).". Nom site: ";


echo htmlspecialchars (stripslashes($row["nom_site"]));


echo "
Fond cartographique: ";


echo htmlspecialchars (stripslashes($row["fond_carto"]));


echo "
Synthèse: ";


echo htmlspecialchars (stripslashes($row["synthese"]));


echo "

";


}


?>

Et bien sur j'ai l'erreur suivante : Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in h:\program files\easyphp1-8\www\resultat.php on line 47

Je suis vraiment desespéré car je vois pas du tout pkoi j'ai cette erreur...la seule explication serait une mauvaise lecture des searctype et searchterm...ce qui est très probable d'ailleur car si je ne met pas en commentaire la vérification de la bonne lecture de ces deux éléments, j'ai systématiquement l'echo du if conditionnel.

Mon "post" de l'html vers le php serait-il mauvais? Arf...merci d'avance en tous cas...

Neosqual
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
11 mai 2005 à 10:42
Hello,

heu oui...lol, il est mauvais ;-) Je ne change pas tout, tes balises html ne sont pas toutes auy normes...juste ce qui est vraiment necessaire et peu provoquer des erreurs!

RECHERCHE D'UN SITE


<form action="resultat.php" method="post">
Sélectionnez votre critère de recherche de site:

<select name="searchtype">
<option value ="nom_site">Nom du site</option>
<option value ="fond_carto">Fond cartographique</option>
<option value ="synthese">Synthèse</option>
</select>

Saisissez les pécisions sur le critère choisi:



</form>

Puis, j'envoie les résultats à un script php qui traite donc searchtype et searchterm de la façon suivante:


<?php


if (isset ($_POST['submit']) && $_POST['submit'] === Rechercher) {
if (isset ($_POST['searchtype'] && isset ($_POST['searchterm'] ) && !empty ($_POST['searchtype']) && !empty ($_POST['searchterm']) {
trim($_POST['searchterm']);


$searchtype = addslashes($_POST['searchtype']);


$searchterm = addslashes($_POST['searchterm']);


mysql_connect("localhost","root","") or die('Erreur de connexion à la base de données');


mysql_select_db("phpbb") or die ('Base inexistante');


$query = "select * from sites where ".$searchtype." like '%".$searchterm."%'";


$result = mysql_query($query);


$num_results = mysql_num_rows($result);


echo "Nombre de sites trouvés: ".$num_results."

";


for ($i=0; $i <$num_results; $i++)


{


$row = mysql_fetch_assoc($result);


echo "".($i+1).". Nom site: ";


echo htmlspecialchars (stripslashes($row["nom_site"]));


echo "
Fond cartographique: ";


echo htmlspecialchars (stripslashes($row["fond_carto"]));


echo "
Synthèse: ";


echo htmlspecialchars (stripslashes($row["synthese"]));


echo "

";


}

}


}

?>
0
cs_neosqual Messages postés 13 Date d'inscription vendredi 11 juin 2004 Statut Membre Dernière intervention 18 mai 2005
11 mai 2005 à 11:07
Re,

Merci bocou pour ton aide mais malheuresement ca n'arrange rien au problème...J'ai testé ta solution et ormis un petit oubli de parenthèse, les ajouts de isset fonctionnent mais aboutissent au même réultat que ma version...Je continue donc toujours de chercher de mon coté et vous ferai part de mes découvertes au fil du temps pour ceux que ca interresse...Si jamais qqun voit une solution potentielle à mon problème, j'accepterai avec joie sa proposition car je suis vraiment bloqué pour la suite...

Neosqual
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
11 mai 2005 à 11:22
Ok, entre double quotes, inutile de sortir les variables php, donc :

$query = "select * from sites where '$searchtype' like '%$searchterm%'";
0
cs_neosqual Messages postés 13 Date d'inscription vendredi 11 juin 2004 Statut Membre Dernière intervention 18 mai 2005
11 mai 2005 à 11:23
c'est encore moi!

Désolé d'avoir sous-estimé ta force malalam!!! CA MARCHE!
Génial! J'ai juste oté tes ifset et là, c bon!
En fait t'as retouché a ma syntaxe des addslashes, et je pense que le problème venait étrangement de là! En tous cas je suis grave étonné qu'un bouquin intitulé php & mysql de chez campus fournisse du code qui ne fonctionne pas!
Merci bocou bocou bocou bocu....
Si jamais je rencontre d'autres petits problèmes, j'hésiterai pas à poster un petit message sous ce même sujet pour avoir tes précieux conseils!

Neosqual
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
11 mai 2005 à 11:27
Tu devrais remettre les isset () lol...mais verifies les parentheses en effet j'ai fait des erreurs, a vue de nez. Mais les garder est une bonne chose...on ne fait jamais trop de verifications. Gaffe ensuite aux accolades aussi.
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
11 mai 2005 à 18:44
Salut,



pense à utiliser la fonction mysql_close juste après avoir fait ta requête (après le mysql_query)



a +

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




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
0
cs_neosqual Messages postés 13 Date d'inscription vendredi 11 juin 2004 Statut Membre Dernière intervention 18 mai 2005
11 mai 2005 à 19:03
Yop!





Oué j'ai bien pensé a rajouter le close, thanx!


Par contre j'aurai une autre petite question maintenant...lol et oui encore et toujours! En fait je commence a me demander comment coder un menu arborescent que je placerai dans une frame sur la gauche de l'écran. Le problème c que pour le moment je n'ai réussi à faire ca que sous la forme de pseudo frame. Ca marche bien, mais j'ai le pb suivant: sachant que je compte mettre des cases cochables dans l'arborescence de mon menu (pour afficher différents éléments aux choix dans la fenêtre principale), le probleme de la pseudo frame fait que la page menu.php est forcement actualisée a chaque fois que je clique dessus. Avec une vraie frame comme on en fait en html, le probleme ne se poserait pas puisque le menu issu du fichier menu.php resterait dans son cadre et serait indépendant des rafraichissement du cadre principal...

Je ne sais pas si j'ai été clair mais si qqun s'y connait en frame php, je suis tjrs preneur!

Merci d'avance

Neosqual
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
11 mai 2005 à 19:25
Salut,



bah sans refresh t'as le JS et les XHTTP Requests (consulte www.toutjavascript.com)



mais bon les frames ne sont plus vraiment d'actualité :-(



a +
<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
0
Rejoignez-nous