Erreur de variables ou quoi ?

Erreur de variables ou quoi ? - PHP - Programmation

Marsh Posté le 08-10-2004 à 19:22:17    

Voila je veux creer un moteur de recherche sur mon site pour ma base de donnée sql de mes album, mais il me met:
 
Notice: Undefined variable: allcriteres in c:\web\session\album.php on line 29
 
Notice: Undefined variable: Album in c:\web\session\album.php on line 34
 
Notice: Undefined variable: artiste in c:\web\session\album.php on line 37
 
Notice: Undefined variable: annee in c:\web\session\album.php on line 43
 
Notice: Undefined variable: finrequete in c:\web\session\album.php on line 49
 
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in c:\web\session\album.php on line 58
 
Je trouve pas la soluce à mes erreur, donc voila la source si qq sais m'aider n'hésité pas ça me rendrais un immense service.
 
Voila la source avec le formulaire.
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Albums</title>
</head>
<form method="post" action="album.php">  
<table align="center">
<tr>
<td>Album : </td><td><input type="text" name="Album"></td>
</tr>
<tr>
<td>Année : </td><td><input type="text" name="annee"></td>
</tr>
<tr>
<td valign="top">Artiste : </td><td><input type="text" name="artiste"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" name="recherche" value="Cherche"></td>
</tr>
<tr>
<td colspan="2" align="center"><small><input type="checkbox" name="allcriteres" value="oui">Obligatoirement tous les critères</td>
</tr>
</table>
</form>
<body>
<br>
 <?php
 if ($allcriteres == "oui" )
  $operateur="AND";
  else
  $operateur="OR";
 
 if ($Album != "" )
  $finrequete .= " Album LIKE '%$album%'";
 
 if ($artiste != "" )
  if ($finrequete != "" )
  $finrequete .= "$operateur (Artiste LIKE '%$artiste%')";
  else
  $finrequete .= " Artiste LIKE '%$artiste%'";
 
 if ($annee != "" )
  if ($finrequete != "" )
  $finrequete .= "$operateur (Année LIKE '%$annee%')";
  else
  $finrequete .= "Année LIKE '%$annee%'";
   
 if ($finrequete != "" )
  $sql="SELECT * FROM albums WHERE $finrequete";
  else
  $sql="SELECT * FROM albums";
 ?>
 
<?php
   $db = mysql_connect("localhost","root","" );
   $res=mysql_query($sql, $db);
   while ($ligne = mysql_fetch_object ($res))  
    {
 print "<tr>";
 print "<td>$ligne->Album</td>";
 print "<td>$ligne->Artiste>/td>";
 print "<td>$ligne->Année";
 print "</td>";
 print "</tr>";
    }
?>
</body>
</html>
 


---------------
Mikkem
Reply

Marsh Posté le 08-10-2004 à 19:22:17   

Reply

Marsh Posté le 08-10-2004 à 19:37:22    

[:w3c compliant]
 
[edit]
 
$_REQUEST["allcriteres"], etc.


Message édité par skeye le 08-10-2004 à 19:38:23

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 11-10-2004 à 10:48:31    

Salut skeye j'ai tenté d'insérer ce que tu m'as donné mais sans succès, c'est surement moi qui m'y prend mal, donc voila je suis tjs autant ds la choucroute.
 
Sinon merci quand même pour ton aide.


---------------
Mikkem
Reply

Marsh Posté le 11-10-2004 à 10:53:37    

"Notice: Undefined variable":
tu utilise des variables sans les avoir initialisée (déclarée), rajoute un "if isset($ta_variable)" avant de tester sa valeur.
Les variables en qeustions sont:
allcriteres
Album  
artiste
annee  
finrequete
 
Pour le "Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in c:\web\session\album.php on line 58"
 
C'est que ta requete ne dois renvoyer aucun résultat -> ça bug quand tu veux les parcourir
Rajoute un "if mysql_num_rows>0" avant ton while pour vérifier que tu a récupéré au moins 1 enregistrement ;)


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 11-10-2004 à 11:23:24    

Qd je fais ça il me met une erreur les boules je vai tt envoyer chier lol
 
Parse error: parse error, unexpected T_ISSET, expecting '(' in c:\web\session\album.php on line 29
 
Terrible la rapidité de ta réponse t'es un playboy.


---------------
Mikkem
Reply

Marsh Posté le 11-10-2004 à 11:24:47    

donne ton code autour de la ligne 29.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 11-10-2004 à 11:38:40    

parse error -> erreur de parenthèse ou d'accolade
 
comme te l'a dis skeye, montre nous cette partie du code...
mais si t'a copié bettement mon exemple, il manque effectivment des parenthèse autour du isset, car la condition d'un if se met entre parenthèse --> je vais pas non plus te faire tout le code, j'avais juste filé la fonction ;)


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 11-10-2004 à 11:41:28    

Pas tarrible deja la maniere comment tu fous des requetes SQL essaye de concatener correctement genre requete ='select * from table where id='.$id
 
Sinon je crois que Skeye est dans le vrai si tu utilise une version recente de PHP tu ne peux plus recuperer les variable qui sont dans passé en get ou post par leur nom direct, elle sont monté automatiquement dans un tableau de type $_REQUEST[] pour GET et $_POST[]
 
Pour toi ca donnerai :  
 
$finrequete .= "$operateur (Artiste LIKE '%$_REQUEST[artiste]%')";  
  else  
  $finrequete .= " Artiste LIKE '%$_REQUEST[artiste]%'";  

Reply

Marsh Posté le 11-10-2004 à 11:42:20    

Voila le code php à partir de la ligne 28 le reste le formulaire etc ... se trouve au debut de ce topic.
Un grand merci les gars.
 
28 <?php
29  
30 if ($allcriteres == "oui" )
31  $operateur="AND";
32  else
33  $operateur="OR";
34  
35 if ($Album != "" )
36  $finrequete .= " Album LIKE '%$album%'";
37
38 if ($artiste != "" )
39  if ($finrequete != "" )
40  $finrequete .= "$operateur (Artiste LIKE '%$artiste%')";
41  else
42  $finrequete .= " Artiste LIKE '%$artiste%'";
43  
44 if ($annee != "" )
45  if ($finrequete != "" )
46  $finrequete .= "$operateur (Année LIKE '%$annee%')";
47  else
48  $finrequete .= "Année LIKE '%$annee%'";
49  
50 if ($finrequete != "" )
51  $sql="SELECT * FROM albums WHERE $finrequete";
52  else
53  $sql="SELECT * FROM albums";
54 ?>
55  
56 <?php
57   $db = mysql_connect("localhost","root","" );
58   $res=mysql_query($sql, $db);
59  
60   while ($ligne = mysql_fetch_object ($res))  
61    {
62 print "<tr>";
63 print "<td>$ligne->Album</td>";
64 print "<td>$ligne->Artiste>/td>";
65 print "<td>$ligne->Année";
66 print "</td>";
67 print "</tr>";
68    }
69 ?>


---------------
Mikkem
Reply

Marsh Posté le 11-10-2004 à 11:42:52    

Dans php.ini regle le error_reporting sur E_ALL & E_Warning au lieu de seulement E_ALL

Reply

Marsh Posté le 11-10-2004 à 11:42:52   

Reply

Marsh Posté le 11-10-2004 à 12:35:16    

rainbow_efreet a écrit :

Dans php.ini regle le error_reporting sur E_ALL & E_Warning au lieu de seulement E_ALL


 
ça n'affichera plus les notices (donc les pb de variables non déclarées) mais ça résoudra pas le pb de requete SQL.
 
Et puis ça c'est pas régler le pb, c'est juste ne plus l'afficher ;)  
celà dis il est vrai que les serveurs en ligne on le réglage: E_ALL & E_Warning


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 11-10-2004 à 13:02:41    

lol le but c'est de faire un truc qui marche depuis quand viré l'affichage des erreur est une solution à un bug ?  :lol:

Reply

Marsh Posté le 11-10-2004 à 14:17:17    

Ben ça doit être un truc comme ça non ?
 

Code :
  1. 28 <?php
  2. 29 
  3. 30 if ($_POST['allcriteres'] == "oui" )
  4. 31  $operateur="AND";
  5. 32  else
  6. 33  $operateur="OR";
  7. 34 
  8. 35 if ($_POST['album'] != "" )
  9. 36  $finrequete .= " Album LIKE '%$_POST[album]%'";


 
A modifier pour toutes les variables appellées ...
 
Si tu as un <form method="post" ... la valeurs de tes input est récupérée par $_POST['var_name'] ...
 
ou $HTTP_POST_VARS['var_name'] pour les Php < 5.0 je crois
 
++

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed