Amery

  • Nombre de sujets
    28
  • Nombre de messages
    137
  • Nombre de commentaires
    1
  • Nombre de news
    Aucune
  • Niveau en PHP
    Débutant

Ses derniers messages sur les forums

Amery
le 15/03/2010 à 12:00
Récuperer une variable dans une boucle while
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>
?>
Amery
le 15/03/2010 à 10:54
Récuperer une variable dans une boucle while
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>
?>
?>
Amery
le 12/03/2010 à 12:41
Probléme de verification
Salut,
c'est difficile de te répondre sans plus d'infos.

Donne-nous le formuaire complet pour qu'on voit ce qu'il se passe, mais n'oublie pas d'utiliser le BB-Code ou le wall si ta page est longue.
Amery
le 12/03/2010 à 10:47
UPDATE une ligne dans la BDD
Normal, puisque dans ton foreach tu mets $val partout dans ta requête. Donc tous les champs ont la valeur $val.

Ta première idée (voire ton thread précédent) était la bonne. Utilise plutôt un select à la place de tes checkbox.

Bon, je vois que tu bloques, donc pour ton select tu peux utiliser ce bout de code :

<select name="etat">
<?php
$status = array('NEWS','EN COURS','EXPEDITION','TERMINEE');
foreach ($status as $valeur) {
$selected = ($valeur == $row[6]) ? 'selected="selected"' : '';
echo '<option value="'.$valeur.'" '.$selected.'>'.$valeur.'</option>'; }
?>
</select>
Amery
le 11/03/2010 à 15:51
menu déroulant
1. Ta syntaxe pour le select est fausse. Tu dois indiquer pour chaque choix la valeur à lui donner.

<select name="etat">
<option value="NEWS">NEWS</option>
<option value="EN COURS">EN COURS</option>
<option value="EXPEDITION">EXPEDITION</option>
<option value="TERMINEE">TERMINEE</option>
</select>


2. si tu veux que l'état en cours sont sélectionnés par défaut, tu dois ajouter selected="selected" dans la balise <option>. Par exemple, pour sélectionner "News"

<option value="NEWS" selected="selected">NEWS</option>


3. Donc, finalement pour rendre tout ça dynamique en php, tu peux utiliser la fonction foreach pour comparer la valeur de ton $row[6] avec toutes les valeurs de ton select possibles. Si la valeur $row[6]="NEWS" (par exemple), tu fais :

<?php
echo 'selected="selected"';
?>

dans la balise <option value="NEWS">

En cherchant un peu, tu trouveras des fonctions déjà écrites qui font ce que tu veux, mais c'est plus marrant de trouver la solution soi-même! smiley
Amery
le 11/03/2010 à 12:33
Affichage par ordre de date
il faut utiliser l'option ORDER BY dans ta requête sql :

<?php
$result = mysql_query("SELECT nom, prenom,ref_com, date_com, fichier_com, Q, etat, date_livraison, expedition FROM commandes ORDER BY date_com DESC") or die ('Impossible de sélectionner une base de donnée.'.mysql_error());
?>


suivi de:
- DESC : pour un tri décroissant
- ASC : pour un tri croissant

Plus d'info, dans la doc officiel : http://www.lephpfacile.com/manuel-mysql/sql-syntax.php#select
Amery
le 08/03/2010 à 14:44
Récupérer la clé d'un tableau
Je voulais récupérer la clé2 sans faire de foreach ou if.
Je pensais que c'était possible en faisant quelque chose comme :

<?php
$cle = key($tab[2]); // ou
$cle = key($tab[0][2]);
?>


mais a priori non. smiley
Tant pis, je me suis débrouillé autrement.
Amery
le 06/03/2010 à 11:45
Récupérer la clé d'un tableau
Bonjour,

j'ai un tableau de la forme :

<?php
$tab = array("cle1" => "valeur1", "cle2" => "valeur2", "cle3" => "valeur3");
?>


je souhaite récupérer la "cle2". J'ai essayé avec la fonction key(), mais ça me retourne la "cle1".
Comment faire pour récupérer la "cle2"?
Amery
le 05/03/2010 à 11:25
probleme d'affichage de la base de donnée
Première chose : tout fichier qui contient du code php DOIT avoir l'extension .php et non html.

Es-tu sûr de tes paramètres de connexion à ta base? Travailles-tu en local sur un PC avec wamp, easyphp, etc. ou sur un serveur?

Ton formulaire n'est pas clair.
Pourquoi mettre un lien sur le bouton submit de ton formulaire??? Il te suffit de spécifier dans ta balise <form> le fichier vers lequel tu envoies les infos saisies:

<form method="post" action="index.php">
<input type="text" name="tel" size="12">
<input type="submit" value="retourner">
</form>


Ensuite ton code html n'est pas propre: plusieurs balises <html>, <body>, etc.

Lis les premiers cours disponibles sur le site :
http://www.lephpfacile.com/cours/1-avant-toutes-choses
http://www.lephpfacile.com/cours/8-recuperer-les-donnees-des-formulaires
LoadingChargement en cours