rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

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

Posté par sidarks, le mercredi 18 avril 2007 à 16:48:58
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']."\&qu­ot; selected=\"selected\">"; 
            echo $row_ouvrier1['nom_type'];           
           echo "</option>";}
		   else 
		   {
		   echo "<option value=\"".$row_ouvrier1['idtype_tache']."\&qu­ot;>"; 
            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?idch­antier=".$idchantier."&batiments=".$idbat­iments."&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?idch­antier=".$idchantier."&batiments=".$idbat­iments."&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
Configuration: Windows Vista
Firefox 2.0.0.3
Répondre à sidarks  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Reivax962, le mercredi 18 avril 2007 à 17:52:49
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
Répondre à Reivax962

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
sidarks, le vendredi 20 avril 2007 à 08:37:13
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
Répondre à sidarks

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Reivax962, le vendredi 20 avril 2007 à 09:13:11
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 :)
Répondre à Reivax962

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
sidarks, le vendredi 20 avril 2007 à 10:17:45
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.dt­d">
<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:&­amp;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');">Chan­tier</dt>
			<dd id="smenu1">
				<ul>
					<li><a href="../chantier/add_chantier.php">Créer Chantier</a></li>

					<li><a href="../chantier/consult_chantier.php">Consult­er Chantier</a></li>
	
				</ul>

			</dd>
	</dl>
	
	
	<dl>	
		<dt onmouseover="javascript:montre('smenu2');">Gest­ion</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');">Budg­et 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éat­ion 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&g­t;Nom Tâche</b></td><td><b>Quantité</b&­gt;</td><td><b>Unité</b></td>&­lt;td><b>TU Bible</b></td><td><b>Aleas</b>­</td><td><b>TU</b></td><td&­gt;<b>Heures théoriques</b></td><td><b>Heures effectives</b></td></tr><br><TR&g­t;<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><b­r><b>RESEAU</b><br><br><table border=1><tr><td></td><td><b&g­t;Nom Tâche</b></td><td><b>Quantité</b&­gt;</td><td><b>Unité</b></td>&­lt;td><b>TU Bible</b></td><td><b>Aleas</b>­</td><td><b>TU</b></td><td&­gt;<b>Heures théoriques</b></td><td><b>Heures effectives</b></td></tr><tr><td&g­t;<input name='com'  id='com' type='text' value=''></td><td>test</td><td>&l­t;input name='qte1' type='text' value ='2'></td></td><td>m3</td><td&­gt;9.5</td><td><input name='aleas1' type='text' value='4'></td><td>38</td><td>76&­lt;/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><t­d><input name='qte1' type='text' value ='6'></td></td><td>cm</td><td&­gt;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><T­D><br></td></tr><tr><td><­;/td><td></td><td></td><td>­</td><td></td><td></td><td&­gt;<u><b>Total heures : </u></td><td><b>292</B></td­><td><b>0</tr></table><br>&­lt;br><b>FONDATATION</b><br><br>&­lt;table border=1><tr><td></td><td><b&g­t;Nom Tâche</b></td><td><b>Quantité</b&­gt;</td><td><b>Unité</b></td>&­lt;td><b>TU Bible</b></td><td><b>Aleas</b>­</td><td><b>TU</b></td><td&­gt;<b>Heures théoriques</b></td><td><b>Heures effectives</b></td></tr><br><TR&g­t;<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><b­r><td><input name='modif' type='submit' value='Modifier'></td><td><input name='suprr' type='submit' value='Supprimer'></td></tr></form>
</body>
</html>
Répondre à sidarks

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
sidarks, le vendredi 20 avril 2007 à 10:20:00
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&g­t;<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>&qu­ot;;
$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&­gt;";
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&­gt;<td></td><td><u><b>Total heures : </u></td><td><b>".$heure_total_­the['somme']."</B></td><td><b>&­quot;.$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.">&qu­ot;;// 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.">&qu­ot;;// on revient sur le formulaire
}}


?>
</form>
Répondre à sidarks

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Reivax962, le vendredi 20 avril 2007 à 12:03:23
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>)
Répondre à Reivax962

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 sidarks, le vendredi 20 avril 2007 à 13:18:10
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^^
Répondre à sidarks
Logiciels pertinents trouvés dans les téléchargements
Télécharger WAMP Server 2.0cWAMP Server - WAMP5 (WAMP signifiant Windows Apache Mysql PHP) est une plateforme de développement Web sous Windows. Il vous permet de...Catégorie: Serveurs
Licence: Freeware/gratuit
Télécharger MySQL 5.0.51bMySQL - MySQL est une des systèmes de gestion de bases de données le plus répandu au monde. Catégorie: Bases de données
Licence: Open Source
Télécharger easyPHP 2.0b1easyPHP - EasyPHP est un environnement de travail packagé comprenant le serveur web Apache, le système de gestion de bases de données...Catégorie: Serveurs
Licence: Open Source
Télécharger Excel Viewer 2003Excel Viewer - Avec Microsoft Office Excel Viewer 2003, vous pouvez ouvrir, afficher et imprimer des classeurs Excel (fichiers XLS ), même...Catégorie: Tableur
Licence: Freeware/gratuit
Plus de logiciels gratuits sur « [PHP/MySQL] Modif et suppr des données »