Erreur de variables ou quoi ? - PHP - Programmation
Marsh Posté le 08-10-2004 à 19:37:22
[edit]
$_REQUEST["allcriteres"], etc.
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.
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
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.
Marsh Posté le 11-10-2004 à 11:24:47
donne ton code autour de la ligne 29.
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
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]%'";
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 ?>
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
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
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 ?
Marsh Posté le 11-10-2004 à 14:17:17
Ben ça doit être un truc comme ça non ?
Code :
|
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
++
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