[php] peux t on poster sans action??

Résolu/Fermé
guy2mars Messages postés 204 Date d'inscription dimanche 18 février 2007 Statut Membre Dernière intervention 24 janvier 2013 - 13 janv. 2009 à 21:40
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 - 14 janv. 2009 à 05:48
Bonjour,

je vais d'une page A vers une page B en envoyant une valeur variable
je recupere cette valeur sur B et je m'en sers pour etablir les elements d'une requete
je poste cette requete vers C qui met en forme, fait un update de la table
puis un header me redirige sur la page B pour une autre possibilite de requete
mais quand je retourne sur B, j'ai un msg d'erreur normal puisque je ne renvoie plus cette variable.
comment pouvoir renvoyer cette variable ou comment la rendre permanente tant que B ne recoit pas une valeur autre??
merci d avance

PS j'en suis presque a la fin de ma prog ;o)))
A voir également:

7 réponses

Yoan Messages postés 11795 Date d'inscription mardi 1 février 2005 Statut Modérateur Dernière intervention 10 décembre 2023 2 330
13 janv. 2009 à 21:46
Hum, c'est peu précis comme description :-)
Donner simplement une valeur par défaut à B ça ne suffirait pas ?
if(isset($_POST['variable']))
	$variable=$_POST['variable'];
else
	$variable='valeur par défaut';
0
guy2mars Messages postés 204 Date d'inscription dimanche 18 février 2007 Statut Membre Dernière intervention 24 janvier 2013 71
13 janv. 2009 à 21:53
Non, c est pas possible
je lis une table de domaines (de 1 a 15 pour le moment)
quand je selectionne un domaine, j'envoie le nombre correspondant au nom du domaine.
je lance une requete a partir de ce nombre pour connaitre quels produits sont repertories
je propose une modification de ces produits ou une creation d'un produit manquant
je lance un script dans une page php puis je reviens sur la page proposant une modification ou un ajout
et la ca bloque car la variable num_domaine est inconnue.
et voili :o(((((((
0
Yoan Messages postés 11795 Date d'inscription mardi 1 février 2005 Statut Modérateur Dernière intervention 10 décembre 2023 2 330
13 janv. 2009 à 22:08
Je suis pas sûr te pouvoir t'aider mais tu devrais décrire très précisément ton problème, parce que personnellement je n'y comprends rien.
0
Bonjour

Le plus simple serait d'utiliser une session.
Mais tu peux aussi passer ta variable de C vers B lors de la redirection : header ("Location: mapage.php?numdomaine=$numdomaine")
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 352
13 janv. 2009 à 22:29
tu peut utiliser le get

ta page d'origine imaginon qu'elle s'appelle page.php dans ton form tu met <form name="" action="page.php?domaine="'.$domaine.'" method="get">

et au debut de ta page tu met if(isset($_get['domaine'']))
{

//ton script

}
tu peut meme optimiser ta page en ne faisant tout ton traitement sur la meme page et en plaçant un switch en fonction du la valeur post et en utilisant les fonctions

exemple rapide (tres rapide..)
$etat=$_POST['etat'];
switch($etat)
{
case"ajout"
//appel de la fonction pour ajouter
break;

case "suppr"
//appekl de la fonction pour supprimmer
break;

default : // fonction appelé par defaut
main();
break;
//etc...
}

function main()
{
$string='
<form action="page.php" method="post" name="monform">
<input type="hidden" name="etat" id="etat" value="">
/* tes champs
*/
</form>
// fonction principale qui t'affiche la page sur laquelle tu veut travailler
//et enfonction de ton choix tu appelle telle ou telle fonction modif ,insert ,suppr
//la valeur post sera recupere dans un champ caché qui se remplira avec un onclic sur l'action choisie
';
echo $string;
}




et ton switch en fonction de la valeur du champ caché qui appel tel ou tel fonction

voila c'est sommaire comme script mais justec'est pour t'expliquer le principe
0
guy2mars Messages postés 204 Date d'inscription dimanche 18 février 2007 Statut Membre Dernière intervention 24 janvier 2013 71
13 janv. 2009 à 22:45
merci lewis pour ta reponse
tu peux voir dans mon script ou en sont mes connaissances du php ;o)))))))
le switch et les fonctions, j avoue avoir fait l'impasse
mais il est vrai que ta methode semble elegante.
le get est permanent par rapport au post???
si oui, je tiens ma reponse
dans ce cas dois je mettre get a la place de post dans toutes mes pages en relations ?A,B,C??


@+
0
guy2mars Messages postés 204 Date d'inscription dimanche 18 février 2007 Statut Membre Dernière intervention 24 janvier 2013 71
13 janv. 2009 à 22:38
Bonlout toto, j essaie mais .... voici en partie mon code

<?php
$exp = $_SERVER['HTTP_REFERER'];
$num_sect = $_POST['num_sect'];
$numacor = $_POST['numacor'];
$vend1 = $_POST['numven1'];
$px1 = $_POST['prixven1'];
$ref1 = $_POST['refven1'];
$vend2 = $_POST['numven2'];
$px2 = $_POST['prixven2'];
$ref2 = $_POST['refven2'];

$host = "localhost";
$user = "root";
$bdd = "commandes";
$passwd = "";
// ******************* initialisation ************
$marequete = "update fournitures set";
$flag=0;
//***************repere vendeur********************
if (($vend1)>=1)
{ //connexion
mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur");
mysql_select_db($bdd) or die("erreur de connexion a la base de donnees");
//exploitation
$quer="select societe from fournisseurs where num = ".$vend1;
$res= mysql_query($quer);
$row=mysql_fetch_row($res);
//maj requete
$marequete=$marequete . " num_vend1 ='".$vend1."', vend1= '".$row[0]."'";
mysql_close();
$flag=true;
}
//******si prix1*******************
if (($px1)>0)
{

if ($flag==true){
$marequete=$marequete . ",";
}
$px1 = preg_replace("#,#", '.', $px1);
$marequete=$marequete . " prix1 = '".$px1."'";
$flag=true;
}
//************si ref1************************
if (($ref1)!="")
{
if ($flag==true){$marequete=$marequete . ",";}
$marequete=$marequete . " ref1 = '".$ref1."'";
$flag=true;
echo "flag2 ".$flag."<br>";
}
//************repere vendeur 2********************
if (($vend2)>0)
{
mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur");
mysql_select_db($bdd) or die("erreur de connexion a la base de donnees");

$quer="select societe from fournisseurs where num = $vend2";
$res= mysql_query($quer);
$row=mysql_fetch_row($res);
if ($flag==true){$marequete=$marequete . ",";}
$marequete=$marequete . " num_vend2 = '".$vend2."', vend2= '".$row[0]."'";
mysql_close();
$flag=true;
}
//***************si prix2**********************
if (($px2)>0)
{
if ($flag==true){$marequete=$marequete . ",";}
$px2 = preg_replace("#,#", '.', $px2);
$marequete=$marequete . " prix2 = '".$px2."'";
$flag=true;
}
//************si ref2**************************
if (($ref2)!="")
{
if ($flag==true){$marequete=$marequete . ",";}
$marequete=$marequete . " ref2 = '".$ref2."'";
$flag=true;
}
//*********construction requete et transmission ****************
echo " requete : ".$marequete."<br>";
$marequete=$marequete." where num = '".$numacor."'";
echo "requete fin".$marequete."<br>";
mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur");
mysql_select_db($bdd) or die("erreur de connexion a la base de donnees");
mysql_query($marequete) or die ('erreur requete');
mysql_close();
//************* Redirection en envoyant num_sect et ca marche pas :o((
header ("location:$exp?num_sect=$num_sect");
exit();
?>
qu'en penses tu??
merci

////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////// et voici la partie qui envoie a cette page au debut /////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////

<?php
$exp = $_SERVER['HTTP_REFERER'];
$demandeur = $_SERVER['REMOTE_ADDR'];
$num_sect = $_POST['num_sect'];
?>
<html>
<head>
<title>secteur <?php echo $num ?></title>
<meta name="description" content="">
</head>
<body>
<table border="3" cellpadding="0" cellspacing="0" align="center">
<tr><th>Num</th><th>Num<br>cat</th><th>Produits</th><th>Vendeur</th><th>Enr_Vend</th><th>Prix</th><th>Ref</th>
<th>Vendeur</th><th>Enr_Vend</th><th>Prix</th><th>Ref</th></tr>
<?php
// Paramètres de connexion
$host = "localhost";
$user = "root";
$bdd = "commandes";
$passwd = "";
// Connexion au serveur
mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur");
mysql_select_db($bdd) or die("erreur de connexion a la base de donnees");
// requete
$query = "SELECT * FROM fournitures where num_cat =".$num_sect;
// Recuperation des resultats
$result = mysql_query($query);
while($row = mysql_fetch_row($result)){
$Num = $row[0];
$num_cat=$row[1];
$prod = $row[2];
$vend1 = $row[3];
$num_vend1 = $row[4];
$prix1 = $row[5];
$ref1 = $row[6];
$vend2 = $row[7];
$num_vend2 = $row[8];
$prix2 = $row[9];
$ref2 = $row[10];
// etablissement du tableau
echo "<tr><td >".$Num."</td><td>".$num_cat."</td><td>".$prod."</td><td>".$vend1."</td><td>".$num_vend1."</td><td>".$prix1."</td>
<td>".$ref1."</td><td>".$vend2."</td><td>".$num_vend2."</td><td>".$prix2."</td><td>".$ref2."</td></tr>";
}
ECHO "</tr></table>";
echo "<table align='center' border='3' cellpadding='0' cellspacing='0'><tr><th>Num</th><th>Societe</th></br>";
$query2 = "select * from fournisseurs";
$result2= mysql_query($query2);
while ($row=mysql_fetch_row($result2)){
$num=$row[0];
$nom=$row[1];
echo "<tr><td>".$num."</td><td>".$nom."</td></tr>";
}
ECHO "</tr></table>";
mysql_close();
?>
<hr>
<!-------Partie choix des operations -------->
<table border="2" cellpadding="0" cellspacing="0" align="center">
<TR align="center"><td>
<!---cas N°1 : modification de donnees existantes ---->
<form action = "maj.php" method="post">
<br style="font: italic">Numero de la ligne a corriger <input type="text" name="numacor" size="3"><br>
<hr color="#CC0000"><b style="color: #CC0000; font: bold">Modifications a apporter</font></b><br><br><br>
Num vendeur 1<input type="text" name="numven1" size="2">Prix 1 <input type="text" name="prixven1" size="8">Ref 1<input type="text" name="refven1" size="8"><br>
Num vendeur 2<input type="text" name="numven2" size="2">Prix 2 <input type="text" name="prixven2" size="8">Ref 2<input type="text" name="refven2" size="8">
<input type="hidden" name="numsect" value=<?php echo $num_sect ?> /><br><br><br>
<div align="center"><input type="submit" value="Modifier"></div></style>
</form>
</td>
<!---cas N°2 : echappement vers page accueil --->
<td><form action="index.php">
<div align="center"><input type="submit" value="Retour Accueil"></div></style>
</form></td>
<td>
<!---cas N°3 : redirection vers la page creer.php pour creation de produits nouveaux --->
<form action="creer.php" method="post">
<br>Nom du Produit <input type="text" name="nompro" size="40"><br>
<hr color="#CC0000">
<b style="color: #CC0000; font: bold">Création d'un produit</font></b><br><br><br>
Num vendeur 1<input type="text" name="numven1" size="2">Prix 1 <input type="text" name="prixven1" size="8">Ref 1<input type="text" name="refven1" size="8"><br>
Num vendeur 2<input type="text" name="numven2" size="2">Prix 2 <input type="text" name="prixven2" size="8">Ref 2<input type="text" name="refven2" size="8">
<input type="hidden" name="numsect" value=<?php echo $num_sect ?> /><br><br><br>
<br><br><br>
<div align="center"><input type="submit" value="Créer"></div></style>
</form>
</td></tr>
</table>
</body>
</html>
0
guy2mars Messages postés 204 Date d'inscription dimanche 18 février 2007 Statut Membre Dernière intervention 24 janvier 2013 71
13 janv. 2009 à 23:32
En mettant GET la ou il faut, ca marche

J aurai compris la difference entre GET et POST ...........
le GET est constant une fois envoyé et non modifié

merci Lewis et Toto pour votre concours
@+
0
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 352
14 janv. 2009 à 05:48
le get ou le post sont toutes 2 des variables , comme tu dis ,une fois envoyé non modifé, seule la manière dont elles passe les différencie et leur utilisation.

pour la method get ,c'est tres utile pour passer des variable de page en page sans utiliser de formulaire, l'inconvénient c'est la taille des variables qui est limité,(j'ai plus la taille exact en tete..) et que tes variables sont visibles de l'utilisateur, ainsi pour les MP,surtout non crypté cette methode est a deconseillée, je dirais meme a bannir
la syntaxe est: url_de_ta-page?var1=variable1&var2=variable2&var3=variable3?...etc

pour recuperer ensuite c'est tout bete $var1=$_GET['var1']; $var2=$_GET['var2']; etc...
pour voir toutes tes valeurs get quand il y en a tu peut mettre en debut de ta page de recup print_r($_GET);
tu l'aura compris dans ton url la 1ere valeur get est defini grace au ? et ensuite chaque var suivante est separée par & (dans l'absolu il faut ecrire &eamp;)

pour la method post,la plus securisée car les variables sont invible au yeux de l'utilisateur et la taille de chaque variable n'est pas limité par rapport au variable get (en fait c'est pas tout a fait vrai, le serveur sur lequel tu envoi ta requete à un parametre qui tiens compte de la valeur post, post_max_size, qui limite la taille maxi d'une valeur post)
la l'inconvenient c'est qu'il te faut un formulaire avec autant de champs de noms differents que de variable, donc un peu plus long a construire, mais c'est sans conteste la solution la plus sure lors d'envois de données que tu tiens à garder secrete ou confidentielles

pour la recup des vleur post je ne m'etends pas je vois que tu a compris, tu peut aussi verifier l'existence de tes valeurs post en faisant un print_r($_POST);

mais sinon dans les 2 cas tes variables ne seront pas modifiées pendant leur traitement,que ce soit get ou post

voila une petite explication pour t'eclairer un peu
@+
0