Undefined variable: _request in ???
RésoluJ'ai deux soucis que je n'arrive pas à résoudre, et je pense que c'est principalement dû à mon manque de connaissance dans le domaine.
Tout d'abord, j'ai un message :
Notice: Undefined variable: _request in C:\Program Files\WampServer\www\Nautilus\Connection.inc on line 2
Voici le contexte :
<html>
<head>
<title>Plongées offertes</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body ><div align="center">
<?php
require('enTete.inc');
require('Connection.inc');
?>
[...]
$query="SELECT * FROM TypeSite ORDER BY NumType" ;
$result=mysql_query($query)
or die("Execution de la requête impossible");
// Créer le formulaire de sélection
echo "<form action='PhotoSites.php' method='post'> \n";
echo "<table cellpadding='5' border='1'>";
while ($ligne=mysql_fetch_array($result))
{ extract($ligne);
echo "<tr><td valign='top' width='15%'>\n";
echo "<input type='radio' name='interet'
value='$NumType'\n";
echo "<b>$NumType</b>
</td>
<td>$LibelleType</td>
</td>
<td>$ImageTypeSite</td>";
}
echo "</table>";
echo "<p><input type='submit' value='Faites votre choix'>
</form>\n";
?>
</body>
</html>
Comme vous le voyez, il n'y a rien à la ligne 2 qui devrait poser problème...
Maintenant, je n'arrive pas à récupérer la valeur sélectionnée dans ma page de "réponse" :
<?php
require('enTete.inc');
require('Connection.inc');
// Sélection des pièces d'un type donné
$query="SELECT * FROM Site where NumType='$interet'";
$result=mysql_query($query)
or die ("Execution de la requête impossible");
// Afficher les résultats dans un tableau
echo "<table background='Photos/lion_mod.jpg' cellspacing='1' border='20' cellpadding='5' width='70%'>";
echo "<tr border width='90%'>\n";
echo "<tr><td>Numéro site</td><td>Libellé Site</td><td>Profondeur en mètres</td><td>Photo</td></tr>";
while ($ligne=mysql_fetch_array($result,MYSQL_ASSOC))
{
// Afficher une ligne pour chaque pièce
echo "<td>{$ligne['NumSite']} </td>\n";
echo "<td><font size='+1'><b>{$ligne['LibelleSite']}</b></font></td>\n";
echo "<td>{$ligne['ProfondeurSite']}</td>\n";
echo "<td>{$ligne['PhotoSite']}</td></tr>\n";
}
echo"</table>\n";
echo "<div align='center'>
<a href='les_plongees.php'><b> Retour au menu precedent</b></a></div>";
?>
À quoi cela peut-il être dû ?
Et pour être sur qu'il ne vous manque aucun détail, voici le contenu de mon fichier connection.inc :
<?php
$interet=$_request["interet"];
$connection=mysql_connect("localhost","root","")
or die ("Connexion au serveur impossible");
$db=mysql_select_db("DivingCenter",$connection)
or die ("Sélection de la base de données impossible");
?>
Je signale que je suis sous Wamp (vous l'auriez surement remarqué) et il n'y a donc pas besoin de mot de passe pour se connecter à la base de données.
Je vous souhaite bon courage, moi, personnellement, j'y ai passé quelques heures, et je commence à cracker.
26 réponses
Une notice PHP signale une variable indéfinie et une erreur d’index interet lors de l’exécution d’un script PHP sous Wamp, liées à l’inclusion de fichiers et à la récupération d’un choix radio. Des solutions convergent vers l’utilisation de $_POST['interet'] pour récupérer la valeur postée, et vers la correction des noms de fichier inclus (Connection.inc) afin que la variable soit disponible. D’autres échanges insistent sur le fait que les fichiers inclus doivent être compatibles avec le langage serveur et que l’activation d’un serveur PHP est nécessaire pour que include() fonctionne bien. En fin d’échange, la résolution est confirmée par la correction du nom de fichier inclus, démontrant l’importance de synchroniser chemins et noms et de tester les variables postées.
-
et ben oui c'etait bien ce que je disais au post 21 ;)
content pour toi que ça marche bonne chance pour la suite -
J'ai mis la ligne $interet= isset($_POST['interet]) ? $_POST['interet'] : null; dans la P2 (PhotoSites.php), et malheureusement, rien ne change...
Par contre, je ne comprends pas très bien ce que tu veux dire par "Si tu veut vraiment travailler avec $_request , a tu deja des scripts qui fonctionne de cette manière ?".
Où est-ce que j'utilise $_request ?
Merci de ton aide :)
EDIT : Enfin, ça marche ! ! Une simple erreur stupide de ma part : je lui demandais d'inclure le fichier Connexion.inc au lieu de Connection.inc !
C'est totalement stupide !
Donc mon problème est réglé !
Merci à vous deux de vous être intéressé à mon problème ! -
on va essayer comme ça alors si ca marche pas ..
$interet provient de ton formulaire si j'ai bien vu et tu le recupere dans ta page PhotoSites.php.
plutot que de te servirs de variable super globales essaye la methode traditionelle :
Pour te servir de $interet il faut que ta requete soit dans le fichier ou tu declare cette variable.
est ce le cas ?
sinon dans ton fichier photosite.php, la ou tu recupere tes valeurs posts de ton formulaire mais cette syntaxe (c'est presque comme la reponse à mype, sauf que la dans tous les cas $interet existera, avec soit une valeur soit nulle)
$interet= isset($_POST['interet]) ? $_POST['interet'] : null; //et ensuite ta requete
Si tu veut vraiment travailler avec $_request , a tu deja des scripts qui fonctionne de cette manière ?
a tu verifier que la directive Register Globals est activée sur ton serveur (fichier httpd.conf) -
de rien ;)
en esperant que si quelqu'un passe il puisse t'aider parce que la je vois pas comment il peut te sortir cette erreur... -
Effectivement, ça pourrait venir de là, mais j'enregistre bien et j'utilise bien le bon fichier...
Bon, je pense que je vais laisser la nuit nous porter conseil, et te remercie (pour la troisième fois ?) pour ton travail !
C'est grâce à des gens comme toi que les forums d'entraide vivent ! ! -
heu... je pense pas que ça vienne de ta requete
mais le truc que je comprends pas c'est que ça te sorte une erreur sur l'index interet de Connection.inc alors que normalment tu n'as bien que les lignes de connection a ta base dedans
une question bete tu pense bien a enregistrer et a inclure la bonne version de ton Connection.inc modifier ? -
Bon, ça ne fonctionne toujours pas... Peu importe la méthode utilisée :
Mon fichier Connection.inc me donne le même résultat qu'il soit comme ça :<?php $connection=mysql_connect("localhost","root","") or die ("Connexion au serveur impossible"); $db=mysql_select_db("DivingCenter",$connection) or die ("Sélection de la base de données impossible"); ?>
ou comme ça :<?php if(isset($_REQUEST["interet"])) $interet=$_REQUEST["interet"]; $connection=mysql_connect("localhost","root","") or die ("Connexion au serveur impossible"); $db=mysql_select_db("DivingCenter",$connection) or die ("Sélection de la base de données impossible"); ?>
La P1 merde toujours... Il y a ce message qui ne veut pas disparaître.
Je dois vraiment pas être doué car après toutes tes explications, ça ne marche toujours pas.
La seule différence importante entre la P1 et la P3 se situe ici pour la P1 :$query="SELECT * FROM TypeSite ORDER BY NumType" ; $result=mysql_query($query) or die("Execution de la requête impossible");
Se pourrait-il que ça bloque à ce niveau là ? Ma requête pourrait ne pas être bonne ?
Est-ce nécessairement le fichier Connection.inc qui fait afficher le message d'erreur ? -
non mais je t'avais dit de ne laisser dans ton Connection.inc que les lignes de connection a ta base de donnee soit
$connection=mysql_connect("localhost","root","") or die ("Connexion au serveur impossible"); $db=mysql_select_db("DivingCenter",$connection) or die ("Sélection de la base de données impossible");en enlevant tout le reste
en fait je t'explique l'erreur ça veut dire que l'index interet n'existe pas et c'est effectivement le cas dans tes p1 et p3 puisque c'est là que tu le definit et comme tu inclus Connection.inc dans ces pages alors tu a l'erreur, c'est pourquoi je t'ai dit de mettreif(isset($_REQUEST["interet"])) $interet=$_REQUEST["interet"];
qui permet de verifier si la variable $_REQUEST["interet"] existe (donc si l'index interet a deja été defini) avant de l'affecter a $interet
le probleme est resolu ? -
Si je fais ça, rien ne change, sauf que j'ai une autre page qui réagi (que je vais nommé p3). Avant de modifier la ligne
$interet=$_request["interet"];
dans Connection.inc, la page affichaitNotice: Undefined index: interet in C:\Program Files\WampServer\www\Nautilus\Connection.inc on line 2
Donc la même erreur que la page 1.
Après avoir modifié la ligne dans Connection.inc, l'erreur disparaissait de la p3, mais continuait d'apparaître en p1.
Voici ma p3 :<?php require('enTete.inc'); require('Connection.inc'); ?> <p align="left"><font color="#990099" size="2"><strong><font face="Arial, Helvetica, sans-serif"> Le centre offre à ses clients un large panel de formation grâce à ses accréditations à plusieurs systèmes internationalement reconnus</font></strong></p> <?php // Sélectionner tous les types de pièces présents dans la table Type $query="SELECT distinct systeme, logoniveau FROM niveau ORDER BY Numniveau" ; $result=mysql_query($query) or die("Execution de la requête impossible"); // Créer le formulaire de sélection echo "<form action='Formations_proposes.php' method='post'> \n"; echo "<table background='Photos/tab_boat_mod.jpg' cellpadding='5' border='1'>"; while ($ligne=mysql_fetch_array($result)) { extract($ligne); echo "<tr><td valign='top' width='15%'>\n"; echo "<input type='radio' name='interet' value='$systeme'\n"; echo "<td>$systeme</td> </td> <td>$logoniveau</td>"; } echo "</table>"; echo "<p><input type='submit' value='Faites votre choix'> </form>\n"; ?>
Elle est construit avec la même syntaxe que les autres, et maintenant elle fonctionne.
Donc, j'ai laisséif(isset($_REQUEST["interet"])) $interet=$_REQUEST["interet"];
dans la page Connection.inc.
C'est à n'y rien comprendre ! Pourquoi une page avec la même syntaxe ne fonctionnerait pas ???
Je te remercie donc encore une fois pour tes efforts !
Ps : peux-tu m'expliquer la différence entre $interet=$_REQUEST["interet"]; et if(isset($_REQUEST["interet"])) $interet=$_REQUEST["interet"]; ? -
dans ce cas puisque tu n'utilises jamais cette variable dans ta premiere page tu peux l'enlever de ton Connection.inc et la mettre directement dans ta deuxieme page
donc essaye enlevantif(isset($_REQUEST["interet"])) $interet=$_REQUEST["interet"];
de Connection.inc et en le mettant dans ta deuxieme page juste avant// Sélection des pièces d'un type donné $query="SELECT * FROM Site where NumType='$interet'";
-
C'est donc bien ce que j'avais fait.
Voici le message d'erreur :Notice: Undefined index: interet in C:\Program Files\WampServer\www\Nautilus\Connexion.inc on line 2
En passant : merci beaucoup de t'intéresser à mon problème ! -
tu ne touches a rien dans ton code sauf dans le fichier Connection.inc tu remplaces cette ligne
$interet=$_request["interet"];
par celle laif(isset($_REQUEST["interet"])) $interet=$_REQUEST["interet"];
c'est bien ce que tu as fait ? si c'est ça quel est le message d'erreur ? -
Ça ne change strictement rien au résultat...
Pour être sûr, il faut bien le mettre dans le fichier Connection.inc ? Je suis assez débutant ^^ -
avant de l'affecter fais un test pour voir si elle existe
if(isset($_REQUEST["interet"])) $interet=$_REQUEST["interet"];
-
@ Mype : malgré la modification, j'ai toujours le message suivant :
Notice: Undefined index: interet in C:\Program Files\WampServer\www\Nautilus\Connexion.inc on line 2
-
ben l'erreur était clair il te dit qu'a la ligne 2 de ton fichier connection.inc la variable _request n'est pas definis c'est parce que tu as mis $_request["interet"] au lieu de $_REQUEST["interet"]
fais cette modification et vois si ça marche... -
@ Mype : Effectivement, je n'avais pas fait attention à ton premier message, et je récupère mes variables !
@ Lewis34 : Si, je t'assure que tous mes fichiers sont dans le même dossier, sans aucun sous dossier ! -
a priori non il est pas dans ton repertoire Nautilus\
-
heu... tu as vu mon post 1 ?
-
Je ne comprends pas... Il est dans le même dossier que le reste.
Il ne faut pas perdre de vu que je suis un débutant :)
- 1
- 2