Rechercher : dans
Par :

Undefined variable: _request in ???

Dernière réponse le 29 avr 2009 à 16:21:54 Gael87, le 28 avr 2009 à 21:59:01 
 Signaler ce message aux modérateurs

Bonjour,
J'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.

Meilleures réponses pour « Undefined variable: _request in ??? » dans :
[PHP] Notice: Undefined index: VoirSi vous utilisez les tableaux $_POST ou $_GET pour récupérer les variables de vos formulaires ou autres, il se peut que vous tombiez sur cette erreur: Notice: Undefined index 'champs du tableau' in 'chemin du fichier php en cours d'execution' on line...

1

mype, le 28 avr 2009 à 22:02:27

Les variables super globale sont toujours en majuscule

$interet=$_REQUEST["interet"];

Répondre à mype

2

lewis34, le 28 avr 2009 à 22:06:55

Bonjour , betement est ce que ton serveur est demarré ?
Les fichiers "inc" sont des fichiers "include" (inclusion).
Ces fichiers sont liés à PHP qui les utilise.
PHP te permet d'inclure avec la fonction "include()" des pages dans une autre page.
Ainsi si tu as un page : "menu.inc ou menu.inc.php" (ces 2 fichiers peuvent s'utiliser exactement de la même façon, le nom choisi n'est qu'une question d'habitude et de convention de nomage, en pratique tu pourrais même inclure un fichier "menu.txt"), dans ta page index tu vas inclure cette page menu.
Ca te permet de diviser une même page en plusieurs page et ainsi, par exemple tu as un fichier menu.inc.php tu l'inclus dans toutes les pages, si tu veux changer ton menu, tu vas juste dans la page menu.inc.php, tu la modifies, et ce changement se répercutera partout.

Cela ne fonctionnait pas en local chez toi car PHP a besoin d'un serveur pour fonctionner.

Répondre à lewis34

3

Gael87, le 28 avr 2009 à 22:12:01

@ lewis34,
Merci de m'avoir répondu aussi vite :) Cependant, mon serveur était bien démarré (et je viens de vérifier).
Je te remercie aussi pour ton explication sur les includes, même si je connaissais leur fonctionnement :p Cela dit, ça servira toujours à d'autres !

Donc tu ne vois pas d'autres raisons de ce message ?

Répondre à Gael87

4

lewis34, le 28 avr 2009 à 22:15:35

Essaye de renomer ton fichier connection.inc en connection.php et modifier ta ligne require('enTete.inc'); et connexon.inc
par
require_once('enTete.php');
require_once('connexion.php');
quitte a placer un echo dedans pour voir si tu y passe

Répondre à lewis34

5

Yurexa, le 28 avr 2009 à 22:20:53

Bonsoir, je suis Gael87, je me suis connecté pour que ce soit plus pratique (compte que j'avais oublié ^^).
J'ai effectué ta manipulation, mais rien n'y fait ! J'ai carrément la page qui disparait avec un nouveau message :

Warning: require_once(Connexion.php) [function.require-once]: failed to open stream: No such file or directory in C:\Program Files\WampServer\www\Nautilus\les_plongees.php on line 11

Fatal error: require_once() [function.require]: Failed opening required 'Connexion.php' (include_path='.;C:\php5\pear') in C:\Program Files\WampServer\www\Nautilus\les_plongees.php on line 11


Tu pense que ça pourrait se situer au niveau du fichier Connection.inc ?

Répondre à Yurexa

6

lewis34, le 28 avr 2009 à 22:26:29

Il faut que tu mette le bon chemin dans ton require si ton fichier est pas dans le meme repertoire que to script logique qu'il le trouve pas ;)

Répondre à lewis34

7

Yurexa, le 28 avr 2009 à 22:28:11

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 :)

Répondre à Yurexa

8

mype, le 28 avr 2009 à 22:29:04

Heu... tu as vu mon post 1 ?

Répondre à mype

9

lewis34, le 28 avr 2009 à 22:32:12

A priori non il est pas dans ton repertoire Nautilus\

Répondre à lewis34

10

Yurexa, le 28 avr 2009 à 22:36:33

@ 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 !

Répondre à Yurexa

11

mype, le 28 avr 2009 à 22:39:31

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...

Répondre à mype

12

Yurexa, le 28 avr 2009 à 22:43:11

@ 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

Répondre à Yurexa

13

mype, le 28 avr 2009 à 22:52:04

Avant de l'affecter fais un test pour voir si elle existe

if(isset($_REQUEST["interet"])) $interet=$_REQUEST["interet"];

Répondre à mype

14

Yurexa, le 28 avr 2009 à 23:08:54

Ç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 ^^

Répondre à Yurexa

15

mype, le 28 avr 2009 à 23:12:21

Tu ne touches a rien dans ton code sauf dans le fichier Connection.inc tu remplaces cette ligne

$interet=$_request["interet"];
par celle la
if(isset($_REQUEST["interet"])) $interet=$_REQUEST["interet"];
c'est bien ce que tu as fait ? si c'est ça quel est le message d'erreur ?

Répondre à mype

16

Yurexa, le 28 avr 2009 à 23:14:23

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 !

Répondre à Yurexa

17

mype, le 28 avr 2009 à 23:22:11

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 enlevant

if(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'";

Répondre à mype

18

Yurexa, le 28 avr 2009 à 23:30:56

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 affichait
Notice: 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 &agrave; ses clients un large panel de formation gr&acirc;ce 
&agrave; ses accr&eacute;ditations &agrave; plusieurs syst&egrave;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"]; ?

Répondre à Yurexa

19

mype, le 28 avr 2009 à 23:55:48

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 mettre
if(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 ?

Répondre à mype