Variables qui buggent ! Débutant en péril

BFH
Eléphant du PHP | 214 Messages

19 avr. 2005, 14:44

Bonjour, j'ai créé une petite base de données interne. Je souhaiterais faire une recherche dans cette base et afficher les resultats qui correspondent voici mes 3 pages en PHP

Recherche.php
<html>
<head> <title>Recherche</title> </head>
<body>
<?
mysql_connect("localhost","root","") or die("erreur connection");
mysql_selectdb("gpi") or die ("erreur BD");
?>

<br>
<b><font color="#0033CC">Rechercher l'Entité</font></b><br>
<form method="get" action="Analyse.php">
<p>
<input type="text" name="R" size="20">
<input type="submit" name="Submit" value="Rechercher">
</p>
</form>


<?
mysql_close();
?>

</body>
</html>
Analyse.php
<html>
<head> <title>Analyse de la Recherche</title> </head>

<body>
<?
mysql_connect("localhost","root","") or die("erreur connection");
mysql_selectdb("gpi") or die ("erreur BD");

if(isset($_GET['R']))
{
$R=$_GET['R'];
}


$query="SELECT * FROM lieu_intervention WHERE Lieu=$R ";
$result=mysql_query($query);
$row=mysql_fetch_assoc($result);

$query1="SELECT * FROM poste WHERE ID_LI=\"1\" ";
$result1=mysql_query($query1);
$row1=mysql_fetch_assoc($result1);


if($result)
{
if($row["Qualite"]=="MA")
{
?>


<H2><font color="#0033CC"><?= $row["Qualite"]." de ".$row["Lieu"];?></font></H2><p>
<table border="1" width="100%">
<tr>
<td align=center><strong>Tel : <?=$row["Tel"];?></strong></td>
<td align=center><strong>Type de contrat : <?=$row["Contrat"];?></strong></td>
</tr>
</table>
<?
}
else
{
?>

<H2><font color="#0033CC"><?=$row["Lieu"];?></font>
</H2><p>
<table border="1" width="100%">
<tr>
<td align=center><strong>Tel : <?=$row["Tel"];?></strong></td>
<td align=center><strong>Type de contrat : <?=$row["Contrat"];?></strong></td>
</tr>
</table>
<?
}
while($row1)
{
echo "Poste : ".$row1["Num"];
}
}
else
{
echo"Cette entité n'existe pas";
}
mysql_close();
?>

</body>
</html>
Donc voila avec ce joli code je devrait obtenir une belle mise en page présentant les données de ma base. Sauf que (pas de bol !) j'obtiens:

Warning: mysql_fetch_assoc() : supplied argument is not a valid MySQL result ressource in chemin du fichier

Donc si qq avait une solution a me donner car là je ne vois vraiment pas comment faire! Je suis complètement perdu!
D'avance merci.
Modifié en dernier par BFH le 19 avr. 2005, 14:49, modifié 1 fois.
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...

Mammouth du PHP | 859 Messages

19 avr. 2005, 14:47

 $row1=mysql_fetch_assoc($result1); 
tu utilises $row partout alors que ta variable porte le nom $row1

BFH
Eléphant du PHP | 214 Messages

19 avr. 2005, 14:50

Tiens voila j'ai modifié ce qui devait etre en $row1
J'avais pas vu cette erreur merci mais bon ça explique pas pourquoi y une erreur à la ligne 16 qui est
$row= mysql_fetch_assoc($result);
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...

Invité
Invité n'ayant pas de compte PHPfrance

19 avr. 2005, 15:02

si la linge 16 c est sa 1 des 2 autrement je dit rien
 $result=mysql_query($query);
$row=mysql_fetch_assoc($result);
bas si il pas de reponse a ta requet ddificile afficher quelle que chose en fin des tulipes plus comunoment appeler enregistrement ?? de plus si le lieux et un valeur null jsa fait quoi ??
a+

BFH
Eléphant du PHP | 214 Messages

19 avr. 2005, 15:27

Bon j'ai n'ai pas tout compris dans tes propos, je ne parle que le français c'est pour ça :D (je rigole ).
Mais si tu essaie de me dire qu'il manque une réponse à ma requête regarde bien ce qui est ecrit :
$query="SELECT * FROM lieu_intervention WHERE Lieu=$R ";
$result=mysql_query($query);
$row=mysql_fetch_assoc($result);
Ici on voit clairement que $query fait une selection dans ma base de donnée en fonction de ce qui a été tapé dans la page Recherche.php dans le champs de texte R
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...

Eléphanteau du PHP | 13 Messages

19 avr. 2005, 15:44

Essaye en mettant des guillemets dans ta requete autour de ta variable :
$query="SELECT * FROM lieu_intervention WHERE Lieu='".$R."' ";
$result=mysql_query($query);
$row=mysql_fetch_assoc($result);

BFH
Eléphant du PHP | 214 Messages

19 avr. 2005, 16:18

Non désolé mais ce n'est pas une formulation correcte ! :cry:
Merci à toi.

Je rappelle le problème:
Warning: mysql_fetch_assoc() : supplied argument is not a valid MySQL result ressource in chemin du fichier

ce qui correspond à:
$row=mysql_fetch_assoc($result);
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...

ViPHP
ViPHP | 2144 Messages

20 avr. 2005, 09:20

Ta requêtte n'a renvoyé s'est très probablement planté.
commence par faire un echo de la variable $query et ajouter un or die (mysql_error()); après ta requêtte.
$result=mysql_query($query) or die (mysql_error());
9a t'indiquera les erreurs éventuellles

C'est plus simple d'analyser le problême que de travailler au pifomêtre :wink: :wink:

BFH
Eléphant du PHP | 214 Messages

21 avr. 2005, 09:48

Merci pour ta réponse, j'ai testé comme tu me l'as indiqué. Voila le code rentré dans Analyse.php :
if(isset($_GET['R']))
{
$R=$_GET['R'];
echo $R;
}

$query= "SELECT * FROM lieu_intervention WHERE Lieu=$R ";
$result=mysql_query($query)or die ("variable de merde");
$row=mysql_fetch_assoc($result);
Voila ce que j'obtiens :
Valeur de $R
variable de merde
Donc pourquoi est ce que
$query= "SELECT * FROM lieu_intervention WHERE Lieu=$R ";
ne fonctionne pas ?

Si qq a une idée...
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...

ViPHP
ViPHP | 2144 Messages

21 avr. 2005, 10:10

car $r n'est pas remplacé par sa valeur dans la chaine de caractère :
Avec une concaténation ça devrait être ok :
$query= "SELECT * FROM lieu_intervention WHERE Lieu=".$R;
 
nb : le or Die est plus utile si on y met un mysql_error(), on a le détail de l'erreur qui est renvoyé par mysql

Eléphanteau du PHP | 33 Messages

21 avr. 2005, 11:06

ou tu peux faire avec une simple cote, ca marche:

$query= "SELECT * FROM lieu_intervention WHERE Lieu='$R';";

c'est comme ca que je fais et ca marche tres bien

BFH
Eléphant du PHP | 214 Messages

21 avr. 2005, 11:14

La bonne formulation était:
if(isset($_GET['R']))
{
$R=$_GET['R'];
}

$query= "SELECT * FROM lieu_intervention WHERE Lieu=\"$R\" " ;
$result=mysql_query($query)or die (mysql_error());
$row=mysql_fetch_assoc($result);

Merci à vous pour votre coup de pouce! Surtout à iclo pour sa ligne qui m'a permis d'analyser l'erreur! :lol:
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...