Soucis avec PHP c'est urgent (zone de texte)

Fermé
balal - 10 août 2005 à 19:00
 balal - 14 août 2005 à 23:44
Bonjour. Voilà j'obitiens les contenus de mes zones de texte par une requete SELECT et suivi de la boule WHILE qui les parcourent ( les zones de texte), une fois cela exécuté je parviens a afficher chaque zone texte et son contenu, mais le soucis c'est quand j'envoie(post) le contenu des zones de textes pour des fin de modification. Les modification effectuées ne repercurtent que sur la derniere zone de texte je me dis que ya un ecrasement ...
Alors SVP sauver moi c'est urgent

5 réponses

Maxg59 Messages postés 275 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 7 octobre 2006 27
11 août 2005 à 01:05
Je suis pas sur de comprendre tu pourrait mettre ton script stp ?
0
nico7382 Messages postés 279 Date d'inscription lundi 6 juin 2005 Statut Membre Dernière intervention 22 décembre 2010 50
11 août 2005 à 08:56
Je pense que les nom de tes champs sont identiques,
dans ta boucle while, il faut faire varier le nom de tes champs : en rajoutant un sufixe.
par exemple tu prends une variable numérique incrémenter dans tr
a boucle que tu acolles au nom de tes champs

Je pense que ca devrais te débloquer
0
Ton idée à l'aire génial, mais eske tu peux me donner un exemple un peu plus pratique, tu as mon script si-dessus. Le code HTMl et l escript de traitement se trouve dans la meme page...
Merci d'avance
0
<?php session_start(); ?>
<html>
<head>
<title><?php echo $titre_page='Caddie virtuel'; ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="../css/style_tableau_blanc.css" rel="stylesheet" type="text/css">
<link href="../css/style_ville.css" rel="stylesheet" type="text/css">
<script language="JavaScript" type="text/JavaScript">
<!--

function MM_displayStatusMsg(msgStr) { //v1.0
status=msgStr;
document.MM_returnValue = true;
}
//-->
</script>
</head>

<body bgcolor="#999999" link="#CCCCCC" vlink="#CCCCCC" alink="#CCCCCC">
<p> </p>
<p> </p>
<?php
$cnx=mysql_connect("localhost","root","");
mysql_select_db("db_eniacom");
//Pour faire la déconnexion
if (isset($_POST['deconnexion_client'])=="Déconnexion")
{
session_destroy(); //Lasession est detruite et par conséquent la déconnexion est faite
exit();
}


//Si le bouton Actualiser a été cliqué, ce bouton sert à faire des modification dans le panier.
if(isset($_POST['actualiser_client'])=="Actualiser")
{
//Récupération des valeurs pour la MAJ
$text_quantite_panier=$_POST['text_quantite_panier'];
$text_code_panier=$_POST['text_code_panier'];
$text_code_client=$_POST['text_code_client'];
$text_id_session=$_POST['text_id_session'];

//Elaboration de la requete UPDATE(MAJ)
$req_update_panier="UPDATE `panier` SET `quantite_panier`=$text_quantite_panier WHERE ".
"((`code_panier`=$text_code_panier) AND (`code_client`=$text_code_client) AND (`id_session`='$text_id_session'))";
//J'ai fait cette condition à trois pieds, c'est pour vraiment élévé le niveau de sécurité dans la notion
//de session au sein du panier
// echo "$req_update_panier<p>";
$resultat_update_panier=mysql_query($req_update_panier);
echo mysql_error();
//if($resultat_update_panier) echo "Modification bien effectuée";
}

//Si le bouton retirer_article a été cliqué
if(isset($_POST['retirer_panier'])=='-')
{
//Récupération des valeurs envoyées en vue de les supprimer
$code_panier=$_SESSION['row_panier_0'];

//La requete suppression pour supprimer l'article du panier
$req_retirer_article="DELETE FROM panier WHERE ((code_panier=$code_panier )AND (code_client=$code_client) AND (id_session='$id_session')) ";
$resultat_retirer_article=mysql_query($req_retirer_article);
/* if($resultat_retirer_article)
{
$message="L'article a été retirer de votre panier ";
} */
}
?>



<table width="103%" height="437" border="0" align="center" class="villes">
<tr>
<td width="6%"> </td>
<td colspan="3"> </td>
<td width="50%"> </td>
<td width="5%"> </td>
</tr>
<tr>
<td height="23"> </td>
<td colspan="3"> </td>
<td> </td>
<td> </td>
</tr>
<?php
//Récupération des valeurs des variables...

$id_session=$_SESSION['id_session'];
//Elaborer la requête de séléction pour afficher le contenu du panier d'un client bien précis.
$req_affiche_panier="SELECT code_panier, code_client, id_session, designation, path_image, description, ".
"prix_unitaire, quantite_panier FROM panier WHERE (code_client=$code_client AND id_session='$id_session')";

$resultat_affiche_panier=mysql_query($req_affiche_panier) or die (mysql_error());
//echo $req_affiche_panier;
$_SESSION['nombre_panier']=mysql_num_rows($resultat_affiche_panier); //Recupère le nombre d'enregistrement trouvé
$nombre_panier=$_SESSION['nombre_panier'];
if ($nombre_panier==0)
{
$message_panier="Votre panier est vide, car vous n'avez choisi aucun article";
}
//Déroulement de la boucle while pour parcourir tout le enrégistrement repondant à la condition WHERE

?>
<tr>
<td height="23"> </td>
<td colspan="4" valign="bottom"> </td>
<td> </td>
</tr>
<tr>
<td height="23"> </td>
<td colspan="4" align="right" valign="bottom"><form action="authentification.php" method="post" name="deconnexion_panier.php">
<input type="submit" name="deconnexion_panier" value="Déconnnexion" >
</td></form>
<td> </td>
</tr>
<tr>
<td> </td><form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="form_panier_client" class="blanc">
<td colspan="4" rowspan="2"> <table width="100%" border="0" bgcolor="#FFFFFF">
<tr bgcolor="#FFFFFF">
<td height="35" colspan="7"> <table width="100%" border="0">
<tr bgcolor="999999">
<td width="16%" height="28" bgcolor="999999"><font color="#FFFFFF"><strong>Désignation</strong></font></td>
<td width="11%" bgcolor="999999"><strong><font color="#FFFFFF">Image</font></strong></td>
<td width="16%" align="left" bgcolor="999999"><strong><font color="#FFFFFF">Description</font></strong></td>
<td width="13%" bgcolor="999999"><strong><font color="#FFFFFF">Prix
unitaire*</font></strong></td>
<td width="13%" bgcolor="999999"><strong><font color="#FFFFFF">Quantité</font></strong></td>
<td width="10%" bgcolor="999999"><strong><font color="#FFFFFF">Total*</font></strong></td>
<td width="21%" bgcolor="999999"><strong><font color="#FFFFFF">Rétirer</font></strong></td>
</tr>
</table></td>
</tr>
<tr>
<td height="32" colspan="11">
<?php
if ($nombre_panier==0)
{
echo "<font color='#004993'><b>$message_panier</b></font>" ;
}
?>
</td>
</tr>
<?php $prix_total=0; //J'initialise le compteur qui met permet d'avoir le montant total des articles
//qui se trouvent dans le panier
while($row_panier=mysql_fetch_row($resultat_affiche_panier))
{ ?>
<tr>
<td width="13%"><font color="#004993"><b>
<input name="text_code_panier" type="hidden" value="<?php echo $row_panier[0]; $_SESSION['row_panier_0']= $row_panier[0]; ?>">
<input name="text_code_client" type="hidden" value="<?php echo $row_panier[1]; $_SESSION['row_panier_1']=$row_panier[1]; ?>">
<input name="text_id_session" type="hidden" value="<?php echo $row_panier[2]; $_SESSION['row_panier_2']=$row_panier[2]; ?>">
<input type="hidden" name="text_designation" value="<?php echo $row_panier[3]; $_SESSION['row_panier_3']=$row_panier[3]; ?>">
<?php echo $row_panier[3]; ?> </b></font></td>
<td width="15%"><font color="#004993"><b><img src="<?php echo $row_panier[4]; ?>" alt="Image indisponible" >
<input name="path_image" type="hidden" value="<?php echo $row_panier[4]; $_SESSION['$row_panier_4']=$row_panier[4]; ?>">
</b></font></td>
<td width="15%"><b><font color="#004993"><?php echo $row_panier[5]; $_SESSION['row_panier_5']=$row_panier[5]; ?>
<input type="hidden" name="text_description" value="<?php echo $row_panier[5]; ?>">
</font></b></td>
<td width="13%"><b><font color="#004993"><?php echo "$row_panier[6] DH"; $_SESSION['row_panier_6']=$row_panier[6]; ?>
<input type="hidden" name="text_prix_unitaire" value="<?php echo $row_panier[6]; ?>">
</font></b></td>
<td width="13%"> <input name="text_quantite_panier" type="text" value="<?php echo $row_panier[7]; ?>" size="10" >
<?php $_SESSION['row_panier_7']=$row_panier[7]; ?>
</td>
<td width="10%"><font color="#004993"><b><?php echo $row_panier[7]*$row_panier[6]." DH";
$prix_total=$prix_total+($row_panier[7]*$row_panier[6]); ?></b></font></td>
<td width="21%"><input name="retirer_panier" type="submit" id="retirer_panier" onMouseOver="MM_displayStatusMsg('Cliquer sur ce bouton, pour rétirer cet article de votre Panier.');return document.MM_returnValue" onMouseOut="MM_displayStatusMsg('');return document.MM_returnValue" value="-"></td>
</tr>
<?php } // Fin de la oucle while ?>
<tr>
<td height="32" colspan="11">  </td>
</tr>
<tr align="center">
<td height="32" colspan="11"><font color="004993"><strong>     

<?php
if ($nombre_panier!=0) //Dans le cas où ya un ou des articles dans le panier
{
$prix_total=number_format($prix_total, 2, ".", " ");
echo "Montant total:<font color='#FF9933'><b>  $prix_total  DH</b></font>";
}
?>
</strong></font></td>
</tr>
</table></td>
<td> </td>
</tr>
<tr>
<td height="97"> </td>
<td> </td>
</tr>
<tr>
<td height="37"> </td>
<td width="16%"> <input name="devis_client" type="submit" id="devis_client" value="Dévis">
</td>
<td width="12%"> <input name="commande_client" type="submit" id="commande_client" value="Commander">
</td>
<td width="11%" align="right"> <input name="actualiser_client" type="submit" id="actualiser_client" value="Actualiser">
</td>
<td align="right">  </td>
<td> </td>
</tr></form>
<tr>
<td height="21"> </td>
<td colspan="4"><a href="catalogue_articles.php">Cliquez ici pour vous retourner
vers le catalogue des articles</a></td>
<td> </td>
</tr>
<tr>
<td height="21"> </td>
<td colspan="3"> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td height="21"> </td>
<td colspan="4"><font color="#FF0000">*</font> <span class="ttc">Les Prix
unitaires sont en TTC (Toute Taxe Comprise) et par conséquent les
totaux aussi.</span></td>
<td> </td>
</tr>
</table>

</body>
</html>

----------------------------------------------------------------------------
Pour mieux voir mon code je crois que dois le placer dans Dreweaver par exemple
Tout le souci se trouve au niveau de la modification de la quantite comme je le disais je ne parviens qu'à modifier le dernier champs (quantité) .
Merci d'vance et j ecompte sur vous....
0
ceddec Messages postés 148 Date d'inscription dimanche 31 juillet 2005 Statut Membre Dernière intervention 10 mars 2012 82
11 août 2005 à 21:05
Bonsoir,

Voila comment il faut faire pour afficher 10 ligne de formulaires avec un while :

$i=0;
echo "<form>";
while ($i<10)
{
    echo "<input type=\"text\" name=\"zonedetexte".$i."\"       value=\"cequetuveux\"><br>";
   $i++;
} 
echo "</form>";
0
Merci bcp cedec e toute logique l'idée que tu as avancé semble tres logique pour marche..mais le hic c'est que je me demande au moment de faire une modification ou suppression comment dois je faire, car ça inquiète à supposer que 10 enregistrement dejà afficher et je veux modifier une quantité de produit dans une zone de texte (ou plus)...Stp fait de meme pour me debloquer encore..
Portes toi bien...
0
ceddec Messages postés 148 Date d'inscription dimanche 31 juillet 2005 Statut Membre Dernière intervention 10 mars 2012 82 > Balal
13 août 2005 à 11:03
Bonjour,

Voila à quoi ton formulaire doit ressembler :
<?php 
$prix_total=0; 
$i=0;
while($row_panier=mysql_fetch_row($resultat_affiche_panier))
{ 
?>
<input name="text_code_panier<?echo $i;?>" value="<?php echo $row_panier[0]; $_SESSION['row_panier_0']= $row_panier[0]; ?>" type="hidden">
<input name="text_code_client<?echo $i;?>" value="<?php echo $row_panier[1]; $_SESSION['row_panier_1']=$row_panier[1]; ?>" type="hidden">
<input name="text_id_session<?echo $i;?>" value="<?php echo $row_panier[2]; $_SESSION['row_panier_2']=$row_panier[2]; ?>" type="hidden">
<input name="text_designation<?echo $i;?>" value="<?php echo $row_panier[3]; $_SESSION['row_panier_3']=$row_panier[3]; ?>" type="hidden">
<?php echo $row_panier[3]; ?> 
<input name="path_image<?echo $i;?>" value="<?php echo $row_panier[4]; $_SESSION['$row_panier_4']=$row_panier[4]; ?>" type="hidden"></b></font>
<?php 	echo $row_panier[5]; 
	$_SESSION['row_panier_5']=$row_panier[5]; ?>
<input name="text_description<?echo $i;?>" value="<?php echo $row_panier[5]; ?>" type="hidden">
<?php 	echo "$row_panier[6] DH"; 
	$_SESSION['row_panier_6']=$row_panier[6]; ?>
<input name="text_prix_unitaire<?echo $i;?>" value="<?php echo $row_panier[6]; ?>" type="hidden">
<input name="text_quantite_panier<?echo $i;?>" value="<?php echo $row_panier[7]; ?>" size="10" type="text">
<input name="Ctext_quantite_panier<?echo $i;?>" value="<?php echo $row_panier[7]; ?>" size="10" type="hidden">

<?php $_SESSION['row_panier_7']=$row_panier[7]; ?>
<?php 	echo $row_panier[7]*$row_panier[6]." DH";
	$prix_total=$prix_total+($row_panier[7]*$row_panier[6]); ?>
<input name="retirer_panier<?echo $i;?>" id="retirer_panier" 
	onmouseover="MM_displayStatusMsg('Cliquer sur ce bouton, pour rétirer cet article de votre Panier.');return document.MM_returnValue"
	onmouseout="MM_displayStatusMsg('');return document.MM_returnValue" value="-" type="submit">
<?php 
 $i++;
} ?>
<input type="hidden" name="count" value="<?echo $i;?>">
<INPUT TYPE="submit" value="envoyer">
</FORM>


Les différences avec ton code se trouvent dans tous les names des input; l'ajout d'un champ caché nommé count, d'un bouton submit pour la cas d'une modifiaction; l'ajout d'un champ caché qui contient la quantité initiale.




Pour le script qui recoit le formulaire :

* Pour la suppression
for($j=0; $j<$_POST[count]; $j++)
	{
		$nom="$retirer_panier".$j;
		if(isset($_POST["retirer_panier".$j])) echo "Cette ligne est à supprimer";
	}

grâce à la valeur de $j, tu peux récupérer tous les champs que tu veux et ainsi tu peux supprimer la ligne (toutes les variables concerné peuvent être récupérées avec une expression du type
$_POST["retirer_panier".$j]


*Pour la modification :
for($j=0; $j<$_POST[count]; $j++)
	{
		//traitement
	}

le traitement consiste à comparer la valeur de
$_POST["text_quantite_panier".$j]
à
$_POST["Ctext_quantite_panier".$j]

Si les deux variables sont identiques, c'est qu'il n'y a pas eu de modification, sinon tu dois mettre à jour les informations en utilisant la nouvelle valeur :
$_POST["text_quantite_panier".$j]

(Pour les autres valeur de la ligne concernée, c'est le même principe que la suppression)

J'espère que c'est ce que tu voulais,
Bon courage
0
balal > ceddec Messages postés 148 Date d'inscription dimanche 31 juillet 2005 Statut Membre Dernière intervention 10 mars 2012
14 août 2005 à 23:44
Salut ceddec, c'est exactement ce que je voulais c'est vraiement gentil de ta part et merci bcp....
0

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

Posez votre question
nico7382 Messages postés 279 Date d'inscription lundi 6 juin 2005 Statut Membre Dernière intervention 22 décembre 2010 50
12 août 2005 à 13:52
bonjour,

Ce qui nous interresse est de différentier les champs a chaque nouvelle boucle :
(ca fait longtemps que j'ai pas pratiquer le php, mais normalement ca devrait marcher)


<?php $prix_total=0; //J'initialise le compteur qui met permet d'avoir le montant total des articles 
//qui se trouvent dans le panier 

$nb_t_b=0;    //compteur du nombre de tour dans la boucle

while($row_panier=mysql_fetch_row($resultat_affiche_panier)) 
{ ?> 
<tr> 
<td width="13%"><font color="#004993"><b> 
<input name="text_code_panier<?php echo $nb_t_b; ?>" type="hidden" value="<?php echo $row_panier[0]; $_SESSION['row_panier_0']= $row_panier[0]; ?>"> 
<input name="text_code_client<?php echo $nb_t_b; ?>" type="hidden" value="<?php echo $row_panier[1]; $_SESSION['row_panier_1']=$row_panier[1]; ?>"> 

.....

<td width="21%"><input name="retirer_panier<?php echo $nb_t_b; ?>" type="submit" id="retirer_panier" onMouseOver="MM_displayStatusMsg('Cliquer sur ce bouton, pour rétirer cet article de votre Panier.');return document.MM_returnValue" onMouseOut="MM_displayStatusMsg('');return document.MM_returnValue" value="-"></td> 
</tr> 
<?php 
$nb_t_b +=1;     //on augmente le nombre de tour d'un
} // Fin de la oucle while ?> 
<tr> 
<td height="32" colspan="11">  </td> 
</tr> 
<tr align="center"> 
<td height="32" colspan="11"><font color="004993"><strong>      

<?php 
if ($nombre_panier!=0) //Dans le cas où ya un ou des articles dans le panier 
{ 
$prix_total=number_format($prix_total, 2, ".", " "); 
echo "Montant total:<font color='#FF9933'><b>  $prix_total  DH</b></font>"; 
} 
?> 


Voila, j'ai pas eu le courage de reprendre entierement le code, mais on peut voir a la ligne 5 puis 24, les modifications.

Je te laisse le soin de faire la meme chose pour les champs que t'arrive pas a atteindre.
0