Affecter une variable d'une form à une req sql

Résolu
EL.marwaa123 Messages postés 99 Date d'inscription jeudi 24 avril 2014 Statut Membre Dernière intervention 7 juin 2014 - 22 mai 2014 à 01:14
EL.marwaa123 Messages postés 99 Date d'inscription jeudi 24 avril 2014 Statut Membre Dernière intervention 7 juin 2014 - 23 mai 2014 à 00:35
Bonjour,
mon probleme est peut etre déja résolu mais j'ai essayé tous le moyens que j'ai trouvé mais aucune résultat.
donc mon probleme c'est que j'ai un formulaire qui insere les types d'évaluations selon le sous module,ce formulaire se trouve dans une page.php et j'ai une autre page qui contient les sous modules,je veux éviter de créer la page de création des types pour chaque sous module,j'ai utiliser href='?m=analyse' et je l'ai récupérer par get dans l'autre page pour remplir une req sql. j'éspere que c'est clair.voila mon code:
//page des sous modules
<?php
session_start();
if (!isset($_SESSION['login'])) {
	header ('Location: index.php');
	} 
	$c=$_GET['m'];
	echo $c;
	if (isset($_POST['ana'])){
	mysql_connect("localhost","root","123") or die(mysql_error());
	mysql_select_db("basepfe")or die('Pas de Base de donn\351');
	$sql="SELECT P.login FROM smodule AS S, elementssmod AS E, contient AS A, profs AS P
    WHERE E.idP = P.idP
    AND A.idS = S.idS
    AND S.nomS = 'analyse'";
	$res = mysql_query($sql);
	$nat=mysql_result($res,"");
	if ($nat == $_SESSION['login']){
	header ('Location: newform.php');
	}
	else 
	echo header ('Location: deliberation.php');
	}


//exemple  de html  meme page 
<input type="submit" id="Button5" name="ana" href="?m=analyse" value="Analyse">


page de création des types
<?php 
$_GET['m']=$c;
$nb=$_POST['nb'];
	$t1=$_POST['t1'];
	$pr1=$_POST['pr1'];
	
mysql_connect("localhost","root","") or die(mysql_error());
mysql_select_db("basepfe")or die('Pas de Base de donn\351');
if(isset($_POST['env'])){
switch($nb){
case 1:
$req1=mysql_query("select idS from smodule where nomS='$c'");
$vl=mysql_result($req1,"");
$sql1=mysql_query("INSERT  INTO assocts  VALUES ('$vl','$t1','$pr1')");
echo "<script>alert('vous avez crée un sous module!')</script>";
break;

je veux que la valeur du variable 'm' soit récupérable dans la page des types pour faire une selection
pouvez vous m'aider? merci d'avance

4 réponses

jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 344
22 mai 2014 à 01:29
Dans ta dernière page :
$c = $_GET ['m'];
0
EL.marwaa123 Messages postés 99 Date d'inscription jeudi 24 avril 2014 Statut Membre Dernière intervention 7 juin 2014
Modifié par mounana199 le 22/05/2014 à 16:16
Bonjour,
ca n'a pas marché il m'affiche: Warning: mysql_result(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\pfe\test1\newform.php on line 426
volia la ligne 426: $vl=mysql_result($req1,"");
je pense que $req1 ne renvoie rien,c'est pour cela donc il y a un prob au niveau de la variable $c.
merci
0
jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 344
Modifié par jordane45 le 22/05/2014 à 16:48
Bonjour,

Déjà.. premiere chose .. c'est que lorsque l'on récupère des variables de type POST / GET / SESSION ... il est conseillé de vérifier qu'elles existent via ISSET.

 function getParams($name,$type="POST",$default=''){  
     switch ($type){
     case "POST":
         $var = isset($_POST[$name])?$_POST[$name]:$default;
         break;
     case "GET":
          $var = isset($_GET[$name])?$_GET[$name]:$default;
         break;
     case "SESSION":
          $var = isset($_SESSION[$name])?$_SESSION[$name]:$default;
         break;
     }
     return $var;
 }


$c = getParams('m',"GET","error") ;
$nb=getParams('nb',"POST","error");
$t1=getParams('t1',"POST","error");
$pr1=getParams('pr1',"POST","error");



Ensuite... lorsque tu écris tes requêtes... sépare les de l'instruction query :

// REQUETE :
$sql="SELECT idS 
        FROM smodule 
        WHERE nomS='$c' ";

  // POur les tests: Affichage de la requête
  echo "<br><b> La requête est : </b><br>".$sql."<br>";

// Exécution de la requête :
$req1=mysql_query($sql);



et enfin... mysql_result ... je pense que tu as une erreur dans sa syntaxe...
http://www.php.net/manual/fr/function.mysql-result.php

// Tu écris : 
$vl=mysql_result($req1,"");

// Alors que normalement c'est un numéro de ligne que tu dois indiquer..
$vl=mysql_result($req1,0);


L'idéal s'est également de vérifier avant si ta requête a retourné un résultat...
http://www.php.net/manual/fr/function.mysql-num-rows.php


$nbResult = mysql_num_rows($req1);

if($nbResult>0){ 
   $vl=mysql_result($req1,0);

   // ....


}







Avant de poser une question, merci de lire la charte du site.
Cordialement, Jordane
0
EL.marwaa123 Messages postés 99 Date d'inscription jeudi 24 avril 2014 Statut Membre Dernière intervention 7 juin 2014
22 mai 2014 à 17:01
j'ai ajuster le code selon vos conseils,le voila:
session_start();
function getParams($name,$type="POST",$default=''){  
     switch ($type){
     case "POST":
         $var = isset($_POST[$name])?$_POST[$name]:$default;
         break;
     case "GET":
          $var = isset($_GET[$name])?$_GET[$name]:$default;
         break;
     case "SESSION":
          $var = isset($_SESSION[$name])?$_SESSION[$name]:$default;
         break;
     }
     return $var;
 }

mysql_connect("localhost","root","123") or die(mysql_error());
mysql_select_db("basepfe")or die('Pas de Base de donn\351');
$c = getParams('m',"GET","error") ;
$nb=getParams('nb',"POST","error");
$t1=getParams('t1',"POST","error");
$pr1=getParams('pr1',"POST","error");
if(isset($_POST['env'])){
switch($nb){
case 1:
$req1="select idS from smodule where nomS='$c'";
$u=mysql_query($req1);
$nbResult = mysql_num_rows($u);
if($nbResult>0){ 
   $vl=mysql_result($u,0);
$sql1=mysql_query("INSERT  INTO assocts  VALUES ('$vl','$t1','$pr1')");
echo "<script>alert('vous avez crée un sous module!')</script>";
}
break;
default:
echo "alert('un probleme qlq part s'est produit!')</script>";
}

l'indertion se fait mais le champs $vl contient 0 et l'alert ne s'affiche pas.
:( :( :(
0
jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 344
22 mai 2014 à 17:17
- Tu as testé ta requête en direct pour voir ce qu'elle te donne ??
( elle te donne 1 seul résultat...ou bien tu as plusieurs lignes ?? )
- Tu as regardé les lien que je t'ai donné pour lire la doc de ces fonctions ??
- Où est l' ECHO que je t'ai fait ajouter ?


$req1="SELECT idS 
           FROM  smodule 
           WHERE nomS='$c'";

//---------------------------------------------------------------------
// ECHO DE LA REQUETE :
// Pour pouvoir la tester en directe dans ta BDD
// Via phpmyadmin par exemple
// Et voir ce qu'elle te donne comme résultat !
echo "<br><b> La requête est : </b><br>".$req1."<br>";
//---------------------------------------------------------------------
  $u=mysql_query($req1);
  $nbResult = mysql_num_rows($u);
  if($nbResult>0){ 
     $vl=mysql_result($u,0);
    $sqlInsert = "INSERT  INTO assocts  
                      VALUES (
                            '$vl'
                            ,'$t1'
                            ,'$pr1'
                       )";
//---------------------------------------------------------------------
// ECHO DE LA REQUETE :
   echo "<br><b> La requête sqlInsert  est : </b><br>".$sqlInsert ."<br>";
//---------------------------------------------------------------------
    $sql1=mysql_query($sqlInsert);
    echo "<script>alert('vous avez crée un sous module!')</script>";
  }



Que t'affiche le script TEL QUE JE VIENS DE TE L'ECRIRE ?
0
EL.marwaa123 Messages postés 99 Date d'inscription jeudi 24 avril 2014 Statut Membre Dernière intervention 7 juin 2014
Modifié par mounana199 le 22/05/2014 à 17:40
>:( il m'addiche :
La requête est :
SELECT idS FROM smodule WHERE nomS='error'
le requete affiche un seul idS
0
jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 344
22 mai 2014 à 18:47
....
WHERE nomS='error'
... di nomS = error... c'est que...$c ne contient pas la valeur que tu recherches....

le requete affiche un seul idS
Ca m'étonnerai que la requête n'affiche qu'un seul ID .. ou du moins .. ne serait-ce qu'un id...
Par ce que si tu as testé la requête qui a été affichée par le ECHO .... comme je doute que tu ais dans ton champ nomS des lignes où la valeur serait ERROR !!!


Bref... le souci vient donc déjà du fait que $_GET['m'] n'existe pas dans ta page...
Donc...
Quelle ligne de code utilises tu pour arriver sur cette page ?
Et surtout... regardes bien... quelle est l' URL affichée dans ton navigateur ? ( y vois tu un truc du genre : ?m=une_valeur ?? )
0
EL.marwaa123 Messages postés 99 Date d'inscription jeudi 24 avril 2014 Statut Membre Dernière intervention 7 juin 2014
22 mai 2014 à 22:32
la req renvoi juste l'id de sous module que je cherche pour l'associer avec l'id dy type/
session_start();
if (!isset($_SESSION['login'])) {
	header ('Location: index.php');
	} 
	$c=$_POST['m'];
	echo $c;
	if (isset($_POST['ana'])){
	mysql_connect("localhost","root","123") or die(mysql_error());
	mysql_select_db("basepfe")or die('Pas de Base de donn\351');
	$sql="SELECT P.login FROM smodule AS S, elementssmod AS E, contient AS A, profs AS P
    WHERE E.idP = P.idP
    AND A.idS = S.idS
    AND S.nomS = 'analyse'";
	$res = mysql_query($sql);
	$nat=mysql_result($res,"");
	if ($nat == $_SESSION['login']){
	header ('Location: newform.php');
	}
	else 
	echo header ('Location: deliberation.php');
	}

cette page contient la valeur m que je veux la récuperer,et la page où je veux exploiter cette variable c'est celle écrite dans le header:header ('Location: newform.php');
0
jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 344
22 mai 2014 à 23:29
... et donc... comment comptes tu lui envoyer ta variable... ?
Par magie ? ;-)
Bon... il faut que tu ajoutes ta variable a l'url (c'est le principe du GET...)
Et donc : newform.php?m=ma_valeur
0
EL.marwaa123 Messages postés 99 Date d'inscription jeudi 24 avril 2014 Statut Membre Dernière intervention 7 juin 2014
22 mai 2014 à 23:57
mais je ne veux pas envoyé juste une valeur je veux envoyer la valeur de m selon le sous module que j'ai choisis:
<input type="submit" id="Button7" name="alg" href="?m=algorithme" value="Algèbre" >
<input type="submit" id="Button6" name= alg""  href="?m=algebre" value="Analyse" >>
<input type="submit" id="Button5" name="ana" href="?m=analyse" value="Analyse" >

0
Rejoignez-nous