Récuperer une variable dans une boucle while

Répondre
mohaalba
le 15/03/2010 à 09:56
mohaalba
Bonjour,
j'ai un problème assez bizarre ou bien c'est moi qui est mauvais en php(je suis débutant)
j'essaye de récupérer dans ma boucle"if(!empty($_POST['etat']))..."la variable "id" passer dans la boucle while mais je n'arrive pas sachant que j'ai tout essayer:$_POST,$_GET et $_SESSION mais sans session???
pourtant quand je met:print_r($_POST['id']); à l'exterieur des boucle(en bas de page)j'arrive bien à récuperer ma variable "id"(id: est un tableau dans lequel je stock les id de chaque client)
Aidez moi SVP car là je tourne au rond depuis 2jours??
je vous remercie d'avance




<?php 
<?php
include_once ('verif_admin.php');
?>
<?php
session_start();
//error_reporting(E_ALL);
/****************************/
require_once('../config.php');
require_once('../fonctions.php');
$titre_page='Mise à jour de commandes';
include_once('../haut.php');
echo'<link href="../style.css" rel="stylesheet" type="text/css" />';
/****************************/
//$pseudo=formulaires($_POST['pseudo']);
/****************************/
if(!empty($_POST['etat']))

{

print_r($_POST['id']);
}
else
{
// Nous affichons notre tableau des commandes
echo'<form method="post" action="etat_commande.php">';
$entete = array('Client','N° Commande','Date commande','Fichier','Q','Etat','Date livraison','Expédition');
echo'<div align="center" ><r><strong>Liste des clients enregistées - Mettre à jour de l\'état des commandes</strong></r><br />';
echo'<table width="1150" height="40" border="1" align="center" bgcolor=#FF0000>
<colgroup>
<col style="width: 150px">
<col style="width: 120px">
<col style="width: 100px">
<col style="width: 200px">
<col style="width: 60px">
<col style="width: 200px">
<col style="width: 100px">
<col style="width: 220px">
</colgroup>
<tr>
<th scope="col">'.$entete[0].'</th>
<th scope="col">'.$entete[1].'</th>
<th scope="col">'.$entete[2].'</th>
<th scope="col">'.$entete[3].'</th>
<th scope="col">'.$entete[4].'</th>
<th scope="col">'.$entete[5].'</th>
<th scope="col">'.$entete[6].'</th>
<th scope="col">'.$entete[7].'</th>
</tr>
</table>';
$result = mysql_query("SELECT nom, prenom,ref_com, date_com, fichier_com, Q, etat, date_livraison, expedition,id_c FROM commandes ORDER BY id_c DESC") or die ('Impossible de s&eacute;lectionner une base de donn&eacute;e.'.mysql_error());
$i=0;
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
/****Modification de la date : Américan vers Europe**********/
$date_comm = $row[3];
$date_liv = $row[7];
$date_comm = preg_replace('!^([0-9]{4})+-([0-9]{2})+-([0-9]{2})$!', '$3/$2/$1', $date_comm); #Modifiation de la date
$date_liv = preg_replace('!^([0-9]{4})+-([0-9]{2})+-([0-9]{2})$!', '$3/$2/$1', $date_liv); #Modifiation de la date
$row[3] = $date_comm ;
$row[7] = $date_liv ;
/***************************************************************/
echo'<table width="1150" height="40" border="1" align="center" >
<colgroup>
<col style="width: 150px">
<col style="width: 120px">
<col style="width: 100px">
<col style="width: 200px">
<col style="width: 60px">
<col style="width: 200px">
<col style="width: 100px">
<col style="width: 220px">
</colgroup>
<tr>
<th scope="col" ><b>'.$row[1].' '.$row[0].'</b></th>
<th scope="col" >'.$row[2].'</th>
<th scope="col" >'.$row[3].'</th>
<th scope="col" >'.$row[4].'</th>
<th scope="col" >'.$row[5].'</th>
<th scope="col" ><b>'.$row[6].'</b>

<select name="etat[]">';

$status = array('NEWS','EN COURS','EXPEDITION','TERMINEE');
foreach ($status as $valeur) {
$selected = ($valeur == $row[6]) ? 'selected="selected"' : '';
echo '<option value="'.$valeur.'" '.$selected.'>'.$valeur.'</option>'; }

echo'</select>


</th>
<th scope="col" >'.$row[7].'</th>
<th scope="col" >'.$row[8].'</th>
</tr>
</table>';

$id[$i++]=$row[9];


}
echo'<br/><label><input type="submit" value="Mettre à jour" /></label></form>';
}

?>
<html>
<head>
<title>xxxx : Mise à jour de commandes</title>
<link href="../style.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
r {
color:red;
}
b {
color:blue;
}
-->
</style>
</head>

<body>
<div align="center"><a href="http://xxx/xxxx_admin/membre_admin.php"> Retour</a></div>
<?php
//include_once('../bas.php');
?>
</body>
</html>


?>
Amery
le 15/03/2010 à 10:54
Amery
Salut,

voilà un code vite fait et non testé qui devrait t'aider:

<?php
<?php
include_once ('verif_admin.php');

session_start();
//error_reporting(E_ALL);
/****************************/
require_once('../config.php');
require_once('../fonctions.php');
$titre_page='Mise à jour de commandes';
include_once('../haut.php');
echo'<link href="../style.css" rel="stylesheet" type="text/css" />';
/****************************/
//$pseudo=formulaires($_POST['pseudo']);
/****************************/
if(isset($update))
{
foreach ($Tabid as $id) {
mysql_query("UPDATE commandes SET etat='".mysql_escape_string($_POST['etat_'.$id])."' WHERE id_c='".$id."'") or die ('Impossible de sélectionner une base de donnée.'.mysql_error()); }
}
else
{
// Nous affichons notre tableau des commandes
echo'<form method="post" action="etat_commande.php">';
$entete = array('Client','N° Commande','Date commande','Fichier','Q','Etat','Date livraison','Expédition');
echo'<div align="center" ><r><strong>Liste des clients enregistées - Mettre à jour de l\'état des commandes</strong></r><br />';
echo'<table width="1150" height="40" border="1" align="center" bgcolor=#FF0000>
<colgroup>
<col style="width: 150px">
<col style="width: 120px">
<col style="width: 100px">
<col style="width: 200px">
<col style="width: 60px">
<col style="width: 200px">
<col style="width: 100px">
<col style="width: 220px">
</colgroup>
<tr>
<th scope="col">'.$entete[0].'</th>
<th scope="col">'.$entete[1].'</th>
<th scope="col">'.$entete[2].'</th>
<th scope="col">'.$entete[3].'</th>
<th scope="col">'.$entete[4].'</th>
<th scope="col">'.$entete[5].'</th>
<th scope="col">'.$entete[6].'</th>
<th scope="col">'.$entete[7].'</th>
</tr>
</table>';
$result = mysql_query("SELECT nom, prenom,ref_com, date_com, fichier_com, Q, etat, date_livraison, expedition,id_c FROM commandes ORDER BY id_c DESC") or die ('Impossible de sélectionner une base de donnée.'.mysql_error());
$Tabid= array();
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
/****Modification de la date : Américan vers Europe**********/
$date_comm = $row[3];
$date_liv = $row[7];
$date_comm = preg_replace('!^([0-9]{4})+-([0-9]{2})+-([0-9]{2})$!', '$3/$2/$1', $date_comm); #Modifiation de la date
$date_liv = preg_replace('!^([0-9]{4})+-([0-9]{2})+-([0-9]{2})$!', '$3/$2/$1', $date_liv); #Modifiation de la date
$row[3] = $date_comm ;
$row[7] = $date_liv ;
$Tabid[]=$row[9];
/***************************************************************/
echo'<table width="1150" height="40" border="1" align="center" >
<colgroup>
<col style="width: 150px">
<col style="width: 120px">
<col style="width: 100px">
<col style="width: 200px">
<col style="width: 60px">
<col style="width: 200px">
<col style="width: 100px">
<col style="width: 220px">
</colgroup>
<tr>
<th scope="col" ><b>'.$row[1].' '.$row[0].'</b></th>
<th scope="col" >'.$row[2].'</th>
<th scope="col" >'.$row[3].'</th>
<th scope="col" >'.$row[4].'</th>
<th scope="col" >'.$row[5].'</th>
<th scope="col" ><b>'.$row[6].'</b>

<select name="etat_'.$row[9].'">';

$status = array('NEWS','EN COURS','EXPEDITION','TERMINEE');
foreach ($status as $valeur) {
$selected = ($valeur == $row[6]) ? 'selected="selected"' : '';
echo '<option value="'.$valeur.'" '.$selected.'>'.$valeur.'</option>'; }

echo'</select>


</th>
<th scope="col" >'.$row[7].'</th>
<th scope="col" >'.$row[8].'</th>
</tr>
</table>';

}
echo'<br/><label><input type="submit" name="update" value="Mettre à jour" /></label></form>';
}

?>
<html>
<head>
<title>xxxx : Mise à jour de commandes</title>
<link href="../style.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
r {
color:red;
}
b {
color:blue;
}
-->
</style>
</head>

<body>
<div align="center"><a href="http://xxx/xxxx_admin/membre_admin.php"> Retour</a></div>
<?php
//include_once('../bas.php');
?>
</body>
</html>
?>
?>
mohaalba
le 15/03/2010 à 11:34
mohaalba
je vous remercie infiniment pour votre aide.
mais malheureusement ça ne marche pas encore car ça ne rentre jamais dans la boucle : if(isset($update))
{ ....}
vous aurez une idée pourkoi??
je vous remercie pour votre aide ça fait 2à3jours que je tourne au rond
Amery
le 15/03/2010 à 12:00
Amery
Oops, normal j'ai oublié de faire passer les ids dans le form.

Il faut faire envoyer par le formulaire les identifiants de chaque commandes dans une variable. Le truc ici est de concaténer les ids et ensuite utiliser explode pour les récupérer dans un foreach :

<?php
include_once ('verif_admin.php');

session_start();
//error_reporting(E_ALL);
/****************************/
require_once('../config.php');
require_once('../fonctions.php');
$titre_page='Mise à jour de commandes';
include_once('../haut.php');
echo'<link href="../style.css" rel="stylesheet" type="text/css" />';
/****************************/
//$pseudo=formulaires($_POST['pseudo']);
/****************************/
if(isset($update))
{
$Tabid = explode(";",$_POST['ids']);
foreach ($Tabid as $id) {
mysql_query("UPDATE commandes SET etat='".mysql_escape_string($_POST['etat_'.intval($id)])."' WHERE id_c='".intval($id)."'") or die ('Impossible de sélectionner une base de donnée.'.mysql_error()); }
}
else
{
// Nous affichons notre tableau des commandes
echo'<form method="post" action="etat_commande.php">';
$entete = array('Client','N° Commande','Date commande','Fichier','Q','Etat','Date livraison','Expédition');
echo'<div align="center" ><r><strong>Liste des clients enregistées - Mettre à jour de l\'état des commandes</strong></r><br />';
echo'<table width="1150" height="40" border="1" align="center" bgcolor=#FF0000>
<colgroup>
<col style="width: 150px">
<col style="width: 120px">
<col style="width: 100px">
<col style="width: 200px">
<col style="width: 60px">
<col style="width: 200px">
<col style="width: 100px">
<col style="width: 220px">
</colgroup>
<tr>
<th scope="col">'.$entete[0].'</th>
<th scope="col">'.$entete[1].'</th>
<th scope="col">'.$entete[2].'</th>
<th scope="col">'.$entete[3].'</th>
<th scope="col">'.$entete[4].'</th>
<th scope="col">'.$entete[5].'</th>
<th scope="col">'.$entete[6].'</th>
<th scope="col">'.$entete[7].'</th>
</tr>
</table>';
$result = mysql_query("SELECT nom, prenom,ref_com, date_com, fichier_com, Q, etat, date_livraison, expedition,id_c FROM commandes ORDER BY id_c DESC") or die ('Impossible de sélectionner une base de donnée.'.mysql_error());
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
/****Modification de la date : Américan vers Europe**********/
$date_comm = $row[3];
$date_liv = $row[7];
$date_comm = preg_replace('!^([0-9]{4})+-([0-9]{2})+-([0-9]{2})$!', '$3/$2/$1', $date_comm); #Modifiation de la date
$date_liv = preg_replace('!^([0-9]{4})+-([0-9]{2})+-([0-9]{2})$!', '$3/$2/$1', $date_liv); #Modifiation de la date
$row[3] = $date_comm ;
$row[7] = $date_liv ;
$Tabid .= $row[9].";";
/***************************************************************/
echo'<table width="1150" height="40" border="1" align="center" >
<colgroup>
<col style="width: 150px">
<col style="width: 120px">
<col style="width: 100px">
<col style="width: 200px">
<col style="width: 60px">
<col style="width: 200px">
<col style="width: 100px">
<col style="width: 220px">
</colgroup>
<tr>
<th scope="col" ><b>'.$row[1].' '.$row[0].'</b></th>
<th scope="col" >'.$row[2].'</th>
<th scope="col" >'.$row[3].'</th>
<th scope="col" >'.$row[4].'</th>
<th scope="col" >'.$row[5].'</th>
<th scope="col" ><b>'.$row[6].'</b>

<select name="etat_'.$row[9].'">';

$status = array('NEWS','EN COURS','EXPEDITION','TERMINEE');
foreach ($status as $valeur) {
$selected = ($valeur == $row[6]) ? 'selected="selected"' : '';
echo '<option value="'.$valeur.'" '.$selected.'>'.$valeur.'</option>'; }

echo'</select>


</th>
<th scope="col" >'.$row[7].'</th>
<th scope="col" >'.$row[8].'</th>
</tr>
</table>';

}
echo '<input type="hidden" name="ids" value="'.substr($Tabid, 0, -1)).'" />';
echo '<br/><label><input type="submit" name="update" value="Mettre à jour" /></label></form>';
}
?>
<html>
<head>
<title>xxxx : Mise à jour de commandes</title>
<link href="../style.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
r {
color:red;
}
b {
color:blue;
}
-->
</style>
</head>

<body>
<div align="center"><a href="http://xxx/xxxx_admin/membre_admin.php"> Retour</a></div>
<?php
//include_once('../bas.php');
?>
</body>
</html>
?>
mohaalba
le 15/03/2010 à 12:15
mohaalba
toujours pas!!!
ça reste toujours dans la même page avec le tableau!!!

merci beaucoup pour votre aide
mohaalba
le 15/03/2010 à 12:53
mohaalba
en fin ça marche.
je ne sai pas koment vous remercie.
999999999.......merci
je vais essayer de comprendre le code que vous avez rajouter car il ya des fonctions que j'ai jamais vu.
encore merci infiniment :)
moogli
le 16/03/2010 à 12:53
moogli
hum au final il n'y a pas de multiple doublon dans tout tes post ?

@+
Il en faut peu pour être heureux !!!!!
mohaalba
le 18/03/2010 à 15:22
mohaalba
excusez moi mais je n'ai pas compris ce que vous voulez dire??

je vous remercie
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours