8791 sujets

Développement web côté serveur, CMS

Salut tout le monde,

J'aimerais passer une valeur par $_POST à une autre page, le problème est que la valeur ne passe pas.

Voici le code du formulaire :

<form name="frmMnemonic" method="post" action="">
<?php
echo '<select name="Nom_mnemonics" size="1" id="Nom_cours";">';
echo '<option value="" selected="selected"><b>(2)</b> Choix d\'un cours</option>';
while ($row = mysql_fetch_row($query)) 
{
	echo '<option value="'.$row[0].'"';
	/*if (!(strcmp($row[0], $_POST['Nom_annees']))) 
		{
			echo "selected=\"selected\"";
		}*/
	//ucfirst met la première lettre du mot ou de la phrase en majuscule
	//ceci est une concaténation avec ce qui est ci-dessus.
	echo '>'.ucfirst($row[0]).'</option>';
}

echo '</select>';

?>
</form>


J'utilise ce code pour récupérer la valeur :

$sql = "SELECT Type_de_Cours FROM est_de_type WHERE Mnemonic = "  . $_POST['Nom_mnemonics'] . "";


mais elle ne passe pas :

SELECT Type_de_Cours FROM est_de_type WHERE Mnemonic = 


Donc pas de valeur après le =

Y-a t'il une solution à cela ?

Merci d'avance.

beegees
Salut,

c'est normal que l'attribut action de ton FORM soit vide ?

Sinon il faudrait commencer par vérifier que les éléments OPTION de ton SELECT sont bien alimentés en affichant la source de la page générée.

Eventuellement rajouter ce bout de code dans la page appelée :
<pre>
<?php print_r($_POST); ?>
</pre>

Modifié par Heyoan (16 Nov 2008 - 21:07)
Modérateur
Salut,

En effet la désignation de l'attribut action est vide. Apparement, le formulaire est traité sur la même page, alors je peux te proposer de faire ceci :


echo '<form name="frmMnemonic" method="post" action="'.$_SERVER['PHPSELF'].'">';


C'est la première fois que je vois ce genre de syntaxe :

...
if (!(strcmp($row[0], $_POST['Nom_annees'])))
...


Est ce juste de placer une parenthèse après le « ! » ?

++
Modifié par Nolem (16 Nov 2008 - 22:00)
Nolem a écrit :

Est ce juste de placer une parenthèse après le « ! » ?
Oui : !empty(...) est équivalent à !(empty(...))
Heyoan a écrit :
Salut,

c'est normal que l'attribut action de ton FORM soit vide ?

Sinon il faudrait commencer par vérifier que les éléments OPTION de ton SELECT sont bien alimentés en affichant la source de la page générée.

Eventuellement rajouter ce bout de code dans la page appelée :
<pre>
<?php print_r($_POST); ?>
</pre>


Salut Heyoan,

Merci beaucoup pour ta réponse.

Alors, mon action est vide, oui c'est normal, j'ai juste créé un formulaire afin de pouvoir récupérer grâce aux variables SUPER GLOBALES POST la valeur dans une autre page.

Le problème pour moi c'est que le formulaire est traité au chargement de la page, il n'attend pas que je sélectionne une valeur avec ma liste déroulante.

Je suis par contre sûr que les autres valeurs sont passées.

Voici plus de code :

<?php
session_start();

//Affiche le nom des types de cours (TH, TP).

include('connexion.php');

$laVariable=$_POST['Nom_mnemonics'];

//$_SESSION['Matricule'] est une variable de session créée dans la page authentifcation.php
$sql = "SELECT Type_de_Cours FROM est_de_type WHERE Mnemonic = "  . $laVariable . "";
echo $sql;
$query = mysql_query($sql);

echo '<select name="Nom_types">';
echo '<option value="" selected="selected"><b>(4)</b> Choix d\'un type</option>';
while($donnees = mysql_fetch_assoc($query))
{
	//tableau associatif, j'affiche les valeurs en appelant le nom de la colonne = à Type_de_Cours
	echo ('<option value="'.$donnees['Type_de_Cours'].'">'.$donnees['Type_de_Cours'].'</option>');
}
echo ('</select>');
?>


Merci encore pour ton aide.

beegees
Nolem a écrit :
Salut,

En effet la désignation de l'attribut action est vide. Apparement, le formulaire est traité sur la même page, alors je peux te proposer de faire ceci :


echo '<form name="frmMnemonic" method="post" action="'.$_SERVER['PHPSELF'].'">';


C'est la première fois que je vois ce genre de syntaxe :


...
if (!(strcmp($row[0], $_POST['Nom_annees'])))
...


Est ce juste de placer une parenthèse après le « ! » ?

++


Salut Nolem,

Malheureusement, ça ne fonctionne pas mieux.

Merci quand même pour ton aide et bon début de semaine.

beegees
Modérateur
Salut tout le monde,

Merci Heyoan pour cette petite précision de syntaxe Smiley smile . Je ne savais pas qu'il était possible d'écrire ainsi.

Beegees : As tu fait ce que t'a recommandé Heyoan (print_r($_POST)) ?
Je peux te conseiller également de faire la même requête sous PHPMyadmin ou dans la console Mysql afin de vérifier si ta requête n'est pas mal construite en amont.


++ et bon début de semaine à vous aussi Smiley smile
beegees a écrit :


Alors, mon action est vide, oui c'est normal, j'ai juste créé un formulaire afin de pouvoir récupérer grâce aux variables SUPER GLOBALES POST la valeur dans une autre page.
Oui mais c'est justement la valeur de action qui détermine l'autre page. Smiley murf
Heyoan a écrit :
Oui mais c'est justement la valeur de action qui détermine l'autre page. Smiley murf


Merci pour vos réponses.

Je dois donc référencer la page Charger_Types_Cours_Liste_Deroulante.php qui elle contient le code SQL :

$sql = "SELECT Type_de_Cours FROM est_de_type WHERE Mnemonic = "  . $_POST['Nom_mnemonics'] . "";
echo $sql;
$query = mysql_query($sql);


Edit :

Voilà ce que j'ai fait :

<form name="frmMnemonic" method="post" action="Charger_Types_Cours_Liste_Deroulante.php">

et le code de la page Charger_Types_Cours_Liste_Deroulante.php :

$_SESSION['LeMnemonic'] = $_POST['Nom_mnemonics'];

//Affiche le nom des types de cours (TH, TP).

include('connexion.php');

$laVariable=$_POST['Nom_mnemonics'];

//$_SESSION['Matricule'] est une variable de session créée dans la page authentifcation.php
$sql = "SELECT Type_de_Cours FROM est_de_type WHERE Mnemonic = "  . $_SESSION['LeMnemonic'] . "";
echo $sql;
$query = mysql_query($sql);



Merci encore pour ton aide

beegees
Modifié par beegees (17 Nov 2008 - 15:45)
Salut,

Non, mon problème n'est malheureusement pas résolu.

Si tu as une idée, je suis preneur.

J'ai donc maintenant ce code

<form name="frmMnemonic" method="post" action="Charger_Types_Cours_Liste_Deroulante.php">
<?php
echo '<select name="Nom_mnemonics" size="1" onchange="submit()"; id="Nom_cours"">';


J'ai ajouté ceci dans la page :

$_SESSION['LeMnemonic'] = $_POST['Nom_mnemonics'];


afin que cette requête puisse l'utiliser :

$sql = "SELECT Type_de_Cours FROM est_de_type WHERE Mnemonic = "  . $_SESSION['LeMnemonic'] . "";
echo $sql;
$query = mysql_query($sql);


Merci encore pour ton aide hyper précieuse.

beegees
Modifié par beegees (17 Nov 2008 - 16:04)
Re',

je ne vois pas dans la page appelée :
* le session_start() [encore que je ne vois pas pourquoi tu as besoin d'une variable de session ?]
* comment tu listes tes résultats
Modifié par Heyoan (17 Nov 2008 - 17:14)