[PHP/MySQL] Modif et suppr des données

Fermé
sidarks Messages postés 15 Date d'inscription vendredi 10 novembre 2006 Statut Membre Dernière intervention 17 novembre 2009 - 18 avril 2007 à 16:48
sidarks Messages postés 15 Date d'inscription vendredi 10 novembre 2006 Statut Membre Dernière intervention 17 novembre 2009 - 20 avril 2007 à 13:18
Bonjour,

je developpe une application en php/mysql et dans cette appli je dois avoir la possibilité de gérer des taches...à la création de ces taches aucun souci, je les insère dans la base de données...

ensuite je ressors ces données dans un tableau dans des champs text ou des menu deroulants, afin de pouvoir les modifier ensuite...et c'est la qu'arrive mon problème :

sur chaque ligne du tableau j'ajoute une checkbox qui prend la valeur de l'id de la tache et lorsque je selectionne cette case, deux choix sont possible : - cliquer sur le bouton supprimer pour supprimer cette ligne ou cliquer sur le bouton modifier pour enregistrer les modifications dans la base...
la fonction suprimer marche a peu près bien mais la fonction modifier trippe complètement, je ne peux modifier que la dernière ligne de mon tableau et si j'essaie d'en modifier une autre soit la ligne ets supprimer soit une ligne se rajouter avec les modifs et cela à peu près aléatoirement...j'aurais besoin de vous donc pour me dire où mon code débloque...le voici :
<form action="" method="POST" >
<table width="730" align=center border=1>
<tr>
<td><b>Action</b></td>
<td ><b>Nom de la tâche</b></td>
<td><b>Type de tâche</b></td>
<td><b>Unité</b></td>
<td><b>TU Bible</b></td>
<td><b>Aléas</b></td>
<td><b>TU</b></td>
<td><b>Qté</b></td>
<td><b>Total Heures</b></td>


</tr>
<? 

mysql_select_db($base1, $connect);
$select3 = "SELECT * FROM tache, type_tache, unite, chantier, batiments, niveau WHERE tache.idchantier='$idchantier' AND tache.idbatiments='$idbatiments' AND tache.idniveau='$idniveau'  AND type_tache.idtype_tache=tache.idtype_tache AND unite.idunite=tache.idunite GROUP BY nom_tache ORDER BY idtache ";

$requete4 = mysql_query($select3, $connect);

while ($liste = mysql_fetch_array($requete4))
{
echo "<tr>";
echo "<td align=center>";

echo "<input name='action[]' type='checkbox' value='".$liste['idtache']."'>";
echo "</td><td>";
echo "<input name='nom_tache' type='text' value='".$liste['nom_tache']."'>";
echo "</td>";

echo "<td >";

echo "<select name=\"type\"  id=\"type\">";
             do {  
			 if ( $row_ouvrier1['nom_type'] == $liste['nom_type'])
		   {echo "<option value=\"".$row_ouvrier1['idtype_tache']."\" selected=\"selected\">"; 
            echo $row_ouvrier1['nom_type'];           
           echo "</option>";}
		   else 
		   {
		   echo "<option value=\"".$row_ouvrier1['idtype_tache']."\">"; 
            echo $row_ouvrier1['nom_type'];           
           echo "</option>";}
              } while ($row_ouvrier1 = mysql_fetch_assoc($ouvrier1));
 		               $rows1 = mysql_num_rows($ouvrier1);
  		               if($rows1 > 0) { mysql_data_seek($ouvrier1, 0);
	  		                           $row_ouvrier1 = mysql_fetch_assoc($ouvrier1);
		                              }
           echo "</select>";;
echo "</td>";

echo "<td >";
echo "<select name=\"unite\"  id=\"unite\">";
             do {  
			 if ( $row_ouvrier['nom_unite'] == $liste['nom_unite'])
		   {echo "<option value=\"".$row_ouvrier['idunite']."\" selected=\"selected\">"; 
            echo $row_ouvrier['nom_unite'];           
           echo "</option>";}
		   else 
		   {
		   echo "<option value=\"".$row_ouvrier['idunite']."\">"; 
            echo $row_ouvrier['nom_unite'];           
           echo "</option>";}
              } while ($row_ouvrier = mysql_fetch_assoc($ouvrier));
 		               $rows = mysql_num_rows($ouvrier);
  		               if($rows > 0) { mysql_data_seek($ouvrier, 0);
	  		                           $row_ouvrier = mysql_fetch_assoc($ouvrier);
		                              }
           echo "</select>";
echo "</td>";

echo "<td >";
echo "<input name='tu_bib' type='text' value='".$liste['tu_bib']."'>";
echo "</td>";

echo "<td >";
echo "<input name='aleas' type='text' value='".$liste['aleas']."'>";
echo "</td>";

echo "<td >";
echo "<input name='tu' type='text' value='".$liste['tu']."'>";
echo "</td>";

echo "<td >";
echo "<input name='qte' type='text' value='".$liste['qte']."'>";
echo "</td>";

echo "<td >";
echo $liste['heure'];
echo "</td>";




}

 
if(isset($_POST['modif']))
{


$nom1=$_POST['nom_tache'];
$type1=$_POST['type'];
$unite1=$_POST['unite'];
$tu_bib1=$_POST['tu_bib'];
$aleas1=$_POST['aleas'];
$tu1= $_POST['tu'];
$qte1=$_POST['qte'];
$heure1 = $tu1*$aleas1*$qte1;
 foreach ($_POST['action'] as $idtache1)

{

$update = "UPDATE tache SET nom_tache='$nom1', idtype_tache='$type1', idunite='$unite1', tu_bib='$tu_bib1', aleas='$aleas1', tu='$tu1', qte='$qte1', heure='$heure1' WHERE idtache='$idtache1'";
$requete8 = mysql_query($update, $connect) ;
echo "<META HTTP-equiv=\"refresh\"content=0;URL=tache.php?idchantier=".$idchantier."&batiments=".$idbatiments."&niveau=".$idniveau.">";// on revient sur le formulaire
}

}
if(isset($_POST['suppr']) )
{


 foreach ($_POST['action'] as $idtache)

{

$delete = "DELETE FROM tache where idtache='$idtache' ";
$requete7 = mysql_query($delete, $connect);
echo "<META HTTP-equiv=\"refresh\"content=0;URL=tache.php?idchantier=".$idchantier."&batiments=".$idbatiments."&niveau=".$idniveau.">";// on revient sur le formulaire
}}



echo "</table>";
echo "<tr><td>";

echo "<td align=center><input name ='suppr' type='submit'  value='supprimer'>";
echo "<td align=center><input name ='modif' type='submit'  value='modifie'>";

?>


</form>


je ne vous ai mis ici que le formulaire ou il y a le tableau...et ne faites pas attention aux noms de variables c'etait juste pour des tests au debut et j'ai fait copier/coller d'autres scripts que j'ai creer :p

merci par avance de votre aide
A voir également:

7 réponses

Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
18 avril 2007 à 17:52
Bonjour,

Dans ton tableau, tu utilises beaucoup de champs qui ont le même nom...
Par exemple :
<input name='nom_tache'

"nom_tache" va être attribué à autant de champ texte qu'il y a de lignes dans ton tableau ! Alors du coup, quand tu valides, tu ne peux pas savoir quel "nom_tache" va être utilisé pour la modification.
La solution serait d'appeler ces différents champs "nom_tache".$liste['idtache']
Ainsi, ils auront tous un nom différent.

Je te laisse adapter la suite du script pour la modification.

Xavier
0
sidarks Messages postés 15 Date d'inscription vendredi 10 novembre 2006 Statut Membre Dernière intervention 17 novembre 2009
20 avril 2007 à 08:37
bonjour,

j'ai du réadapté le code et j'en ai profité pour changer les noms des champs etc, mais j'ai toujours ce problème...

la suppression fonctionne très bien je peux selectionner plusieurs checkbox et les supprimer en même tps...
mais lorsque je veux modifier je ne peux le faire qu'a la dernière ligne de mon tableau, c'est ça que je pige pas lol...par contre si je modifie la dernière ligne du tableau et qu'ensuite je souhaite modifier une autre ligne, cette ligne prendra les valeurs modifées de la dernière ligne d emon tableau...

voila donc il doit y avoir quelque chose que je ne vois pas...mercid e votre aide
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
20 avril 2007 à 09:13
Tu pourrais nous fournir le code généré ? (C'est à dire que dans ton navigateur, tu fais "afficher la source" et tu copies-colles le formulaire).
C'est souvent le meilleur moyen de comprendre ce qui ne va pas :)
0
sidarks Messages postés 15 Date d'inscription vendredi 10 novembre 2006 Statut Membre Dernière intervention 17 novembre 2009
20 avril 2007 à 10:17
pas de souci ^^ le voici le voila :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
<meta name="description" content="Listes dynamiques liées: la seconde liste est modifiée instantanément lors d'une sélection sur la première." />
<meta name="keywords" content="menu,déroulant,select,liées,JavaScript" />
<meta name="author" content="Cyrano" />
<meta name="generator" content="Zend Studio Environnement et WebExpert 5" />
<meta http-equiv="imagetoolbar" content="no" />
<meta http-equiv="Pragma" content="no-cache" />
<script type="text/javascript" src="./arrayPHP2JSB.js" charset="iso_8859-1"></script>
<script type="text/javascript" src="./changeTache.js" charset="iso_8859-1"></script>
<script type="text/javascript">
/* <![CDATA[ */
<!--
/*
* Ici, on transmets la chaîne sérialisée à JavaScript 
* pour la transformer en tableau indexé JavaScript 
*/
var tableau = new PhpArray2Js('a:2:{i:2;a:3:{i:0;s:6:&quot;RESEAU&quot;;i:1;a:3:{i:0;s:1:&quot;8&quot;;i:1;s:1:&quot;5&quot;;i:2;s:1:&quot;6&quot;;}i:2;a:3:{i:0;s:4:&quot;test&quot;;i:1;s:6:&quot;cables&quot;;i:2;s:12:&quot;informatique&quot;;}}i:3;a:3:{i:0;s:11:&quot;FONDATATION&quot;;i:1;a:2:{i:0;s:1:&quot;1&quot;;i:1;s:1:&quot;2&quot;;}i:2;a:2:{i:0;s:12:&quot;semele fines&quot;;i:1;s:15:&quot;semelle lourdes&quot;;}}}');
var tab = tableau.retour();
// -->
/* ]]> */
</script>
 <link rel="stylesheet" type="text/css" href="../../menu.css"/>

<script type="text/javascript">
<!--
window.onload=montre;
function montre(id) {
var d = document.getElementById(id);
	for (var i = 1; i<=10; i++) {
		if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';}
	}
if (d) {d.style.display='block';}
}
//-->
</script>
</head>

<body>

<div id="menu">
	<dl>
		<dt onmouseover="javascript:montre();"><a href="../../index.php" title="Retour à l'accueil">Accueil</a></dt>
	</dl>
	
	<dl>			
		<dt onmouseover="javascript:montre('smenu1');">Chantier</dt>
			<dd id="smenu1">
				<ul>
					<li><a href="../chantier/add_chantier.php">Créer Chantier</a></li>

					<li><a href="../chantier/consult_chantier.php">Consulter Chantier</a></li>
	
				</ul>

			</dd>
	</dl>
	
	
	<dl>	
		<dt onmouseover="javascript:montre('smenu2');">Gestion</dt>
			<dd id="smenu2">
				<ul>
<li><a href="../personnel.php">Personnel</a></li>
<li><a href="../type_tache.php">Type de tâche</a></li>
<li><a href="../unite.php">Unités</a></li>
<li><a href="../tu_bib.php">Temps Unitaires Bibles</a></li>
<li><a href="../taches.php">Tâches</a></li>
				</ul>
			</dd>
	</dl>
	
	<dl>	
		<dt onmouseover="javascript:montre('smenu3');">Budget d'heures</dt>
			<dd id="smenu3">

				<ul>
					<li><a href="choix_chantier.php"> Création Budget</a></li>
				</ul>
			</dd>
	</dl>
	

	
</div>
<br><br><br><br><br>N° chantier : <input name='num' type='text' value='6000'><br>Nom du Chantier : <input name='nom' type='text' value='meylan'><br>Batiment: <input name='bat' type='text' value='batiment B'><br>Niveau : <input name='niv' type='text' value='niv1B'><br><br><u><b>Création de budget d'heures pour ce chantier</b></u><br>
<form action="" method="POST">
<table>
<tr>

<td><b>Nom Tâche</b></td>
<td><b>Quantité</b></td>
<td><b>Aleas</b></td>
</tr>
<tr>
<select name="type_tache" id="type_tache" onchange="changeTache(tab,this.value);">
      <option value="vide">- - - Choisissez un type de tache - - -</option>
        <option value="2">RESEAU</option>
    <option value="3">FONDATATION</option>
    </select><br /><br /></td>
    <!-- ICI, le secret : on met un bloc avec un id ou va s'insérer le code de
         la seconde liste déroulande -->
  <td><span id="blocTache"></span><br /></td>
<td><input name='qte' type='text' /></td>
<td><input name='aleas' type='text' /></td>
<td><input type='submit' value='Ajouter' /></td>
  <input type="hidden" name="idchantier" value="32" />
  </tr>
</table>
</form>

<br /><br />
<u><b>Liste des tâches par type</b></u><br /><br />
<form action="" method="POST">

<b>INSTALLATION</b><br><br><table border=1><tr><td></td><td><b>Nom Tâche</b></td><td><b>Quantité</b></td><td><b>Unité</b></td><td><b>TU Bible</b></td><td><b>Aleas</b></td><td><b>TU</b></td><td><b>Heures théoriques</b></td><td><b>Heures effectives</b></td></tr><br><TR><TD><br></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td><td><u><b>Total heures : </u></td><td><b></B></td><td><b></tr></table><br><br><b>RESEAU</b><br><br><table border=1><tr><td></td><td><b>Nom Tâche</b></td><td><b>Quantité</b></td><td><b>Unité</b></td><td><b>TU Bible</b></td><td><b>Aleas</b></td><td><b>TU</b></td><td><b>Heures théoriques</b></td><td><b>Heures effectives</b></td></tr><tr><td><input name='com'  id='com' type='text' value=''></td><td>test</td><td><input name='qte1' type='text' value ='2'></td></td><td>m3</td><td>9.5</td><td><input name='aleas1' type='text' value='4'></td><td>38</td><td>76</td><td><input name='heure_eff' id='heure_eff' type='text' value='0'></td><td><input name='modifier[]' type='checkbox' value='10'></td></tr><tr><td><input name='com'  id='com' type='text' value='test2'></td><td>cables</td><td><input name='qte1' type='text' value ='6'></td></td><td>cm</td><td>6</td><td><input name='aleas1' type='text' value='6'></td><td>36</td><td>216</td><td><input name='heure_eff' id='heure_eff' type='text' value='0'></td><td><input name='modifier[]' type='checkbox' value='8'></td></tr><br><TR><TD><br></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td><td><u><b>Total heures : </u></td><td><b>292</B></td><td><b>0</tr></table><br><br><b>FONDATATION</b><br><br><table border=1><tr><td></td><td><b>Nom Tâche</b></td><td><b>Quantité</b></td><td><b>Unité</b></td><td><b>TU Bible</b></td><td><b>Aleas</b></td><td><b>TU</b></td><td><b>Heures théoriques</b></td><td><b>Heures effectives</b></td></tr><br><TR><TD><br></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td><td><u><b>Total heures : </u></td><td><b></B></td><td><b></tr></table><br><br><td><input name='modif' type='submit' value='Modifier'></td><td><input name='suprr' type='submit' value='Supprimer'></td></tr></form>
</body>
</html>
0

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

Posez votre question
sidarks Messages postés 15 Date d'inscription vendredi 10 novembre 2006 Statut Membre Dernière intervention 17 novembre 2009
20 avril 2007 à 10:20
désolé de poster deux fois mais c'est pour plus de lisibilité...

je te remet le nouveau code de mon formulaire au cas ou egalement...merci de ton aide

<form action="" method="POST">

<? 
$select_type = mysql_query("SELECT * FROM type_tache");
while ($liste_type = mysql_fetch_array($select_type))
{
echo "<b>".$liste_type['nom_type']."</b><br><br><table border=1>";
echo "<tr><td></td>";
echo "<td><b>Nom Tâche</b></td>";
echo "<td><b>Quantité</b></td>";
echo "<td><b>Unité</b></td>";
echo "<td><b>TU Bible</b></td>";
echo "<td><b>Aleas</b></td>";
echo "<td><b>TU</b></td>";
echo "<td><b>Heures théoriques</b></td>";
echo "<td><b>Heures effectives</b></td></tr>";

$idtype_tache = $liste_type['idtype_tache'];

$select_budget = mysql_query("SELECT * FROM budget,taches, unite, tu_bib, type_tache WHERE budget.idchantier='$idchantier' AND budget.idbatiments ='$idbatiments' AND budget.idniveau='$idniveau' AND type_tache.idtype_tache='$idtype_tache' AND type_tache.idtype_tache=taches.idtype_tache AND taches.idtaches = budget.idtaches  AND tu_bib.idtu_bib=taches.idtu_bib AND unite.idunite = taches.idunite");


while ($liste_budget=mysql_fetch_array($select_budget))
{
echo "<tr><td><input name='com'  id='com' type='text' value='".$liste_budget['com']."'></td>";
$idbudget = $liste_budget['idbudget'];
$select_tache1 = mysql_query("SELECT * from taches,type_tache, budget WHERE budget.idtaches=taches.idtaches AND type_tache.idtype_tache = budget.idtype_tache AND idbudget='$idbudget'");
$tab1 = mysql_fetch_array($select_tache1);
echo "<td>".$tab1['nom_taches']."</td>";
echo "<td><input name='qte1' type='text' value ='".$liste_budget['qte']."'></td>";
$idunite = $liste_budget['idunite'];
$idtu_bib = $liste_budget['idtu_bib'];
$select1 = mysql_query("SELECT * FROM unite WHERE idunite ='$idunite'");
$tab1 = mysql_fetch_array($select1);
$select2 = mysql_query("SELECT * FROM tu_bib WHERE idtu_bib ='$idtu_bib'");
$tab2 = mysql_fetch_array($select2);
echo"</td><td>";
echo $tab1['nom_unite'];
echo"</td><td>";
echo $tab2['tu_bib'];
echo "</td><td>";
echo "<input name='aleas1' type='text' value='".$liste_budget['aleas']."'>";
echo "</td><td>";
echo $liste_budget['tu'];
echo "</td><td>";
echo $liste_budget['heure_the'];
echo "</td><td>";
echo "<input name='heure_eff' id='heure_eff' type='text' value='".$liste_budget['heure_eff']."'></td>";
echo "<td><input name='modifier[]' type='checkbox' value='".$liste_budget['idbudget']."'>";
echo "</td></tr>";


}
$calcul = mysql_query("SELECT sum(heure_the) as somme FROM budget WHERE budget.idchantier='$idchantier' AND budget.idbatiments ='$idbatiments' AND budget.idniveau='$idniveau' AND budget.idtype_tache='$idtype_tache' ");
$calcul2 = mysql_query("SELECT sum(heure_eff) as somme FROM budget WHERE budget.idchantier='$idchantier' AND budget.idbatiments ='$idbatiments' AND budget.idniveau='$idniveau' AND budget.idtype_tache='$idtype_tache' ");
$heure_total_the = mysql_fetch_assoc($calcul);
$heure_total_eff = mysql_fetch_assoc($calcul2);
echo "<br><TR><TD><br></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td><td><u><b>Total heures : </u></td><td><b>".$heure_total_the['somme']."</B></td><td><b>".$heure_total_eff['somme']."</tr>";

echo "</table><br><br>";}
echo "<td><input name='modif' type='submit' value='Modifier'></td><td><input name='suprr' type='submit' value='Supprimer'></td></tr>";

if(isset($_POST['suprr']) )
{


 foreach ($_POST['modifier'] as $idbudget1)

{

$delete = "DELETE FROM budget WHERE idbudget='$idbudget1'";
$requete_delete = mysql_query($delete, $connect);
echo "<META HTTP-equiv=\"refresh\"content=0;URL=add_budget.php?idchantier=".$idchantier."&batiments=".$idbatiments."&niveau=".$idniveau.">";// on revient sur le formulaire
}}

if(isset($_POST['modif']) )
{

$com = $_POST['com'];
$heure_eff=$_POST['heure_eff'];
$qte1 = $_POST['qte1'];
$aleas1 = $_POST['aleas1'];
$tu1=$tab2['tu_bib']*$aleas1;
$heure_the1=$qte1*$tu1;


 foreach ($_POST['modifier'] as $idbudget)

{

$update = "UPDATE budget SET com='$com', heure_eff='$heure_eff', qte='$qte1', aleas='$aleas1', tu='$tu1', heure_the='$heure_the1' WHERE idbudget ='$idbudget'";
$requete_update = mysql_query($update, $connect);
echo "<META HTTP-equiv=\"refresh\"content=0;URL=add_budget.php?idchantier=".$idchantier."&batiments=".$idbatiments."&niveau=".$idniveau.">";// on revient sur le formulaire
}}


?>
</form>
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
20 avril 2007 à 12:03
En fait, est-ce que tu as lu mon premier message ? Non, je dis ça parce que tu as toujours tes champs qui ont le même nom...

Et au passage, cela n'a rien à voir avec le problème, mais méfie-toi : ta table n'est pas toujours bien formée (y a des </td> sans <td> et des <td> sans </td>)
0
sidarks Messages postés 15 Date d'inscription vendredi 10 novembre 2006 Statut Membre Dernière intervention 17 novembre 2009
20 avril 2007 à 13:18
oui oui j'ai bien lu ton premier message lol et j'ai bien fait les modifs...si tu regarde bien les champs que je desire modifier ( aleas, qte, com, heure_eff) n'ont soit pas le même nom lorsque je re recupère les données ( aleas1 et qte1) soit n'existent pas encore ( com et heure_eff) après il est possible que j'en vois pas un mais bon^^
0