Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/05/2011, 15h57   #1
Invité régulier
 
Homme
Développeur Web
Inscription : mai 2011
Messages : 24
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2011
Messages : 24
Points : 8
Points : 8
Par défaut [PHP/MySQL] Formulaire - Mise à jour BDD par DELETE + INSERT

Bonjour,

Je ne m’en sors pas avec mon formulaire de mise à jour.

Dans ce formulaire, l’utilisateur aura dans les champs le contenu de la base qu’il pourra modifier. (DELETE des données puis INSERT des nouvelles données saisies)

Lorsqu’il s’agit que d’une ligne = pas de problème.

Mais l’utilisateur à la possibilité d’appuyer sur un bouton plus pour ajouter de nouvelles lignes. (générées à l’aide de JAVASCRIPT)

Je dois mal m’y prendre au niveau des boucles car je n’ai pas le résultat voulu.
Soit les résultats s’affichent sur plusieurs lignes mais en prenant en compte que la dernière saisie, soit je n’arrive à afficher qu’une ligne.


Mon code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<?
// FORMULAIRE DE MODIFICATION
if (isset ($_POST['BtdbEnvoyer']))
{
	//Suppression des données
	$sqlDelAct = " DELETE FROM `action_has_tdb` WHERE `idTdb` = $dernierEnr ";
	mysql_query($sqlDelAct) or die('Erreur SQL !'.$sqlDelAct.'<br>'.mysql_error());
 
	//Insertion des données
	for ($i=0;$i<$_POST['nbreLigneAct'];$i++)
	{	
		if(isset($_POST['ActAct'][$i])) $ActAct = $_POST['ActAct'][$i]; else $ActAct = 0;
		if(isset($_POST['ActObj'][$i])) $ActObj = $_POST['ActObj'][$i]; else $ActObj = 0;
 
		$sqlAction = "	INSERT INTO indicaperf.action_has_tdb (`idTdb`,`Action`,`Objectif`)
							VALUES('$dernierEnr','$ActAct','$ActObj')";
		mysql_query($sqlAction) or die(mysql_error());					
	}
?>
<!--construction-->
<html>
	<head>
		<link href="styleIndicaPerf.css" rel="stylesheet" type="text/css" />
		<script language="javascript" src="script.js">						
		</script>
	</head>
	<body class="body">
		<form name="FormTdb" method="post" action="formTypeUpdate.php#formulaire">
		<table class="tableAction">
			<tr>
				<th class="action"><b>Actions</b></th>
				<th class="action"><b>Objectifs et Gains</b></th>
			</tr>
			<? 	
			//Affichage des données de la BDD dans les champs 
			echo $sqlAffichAction = "SELECT * FROM action_has_tdb WHERE idTdb = $dernierEnr";
			$resultAction = mysql_query($sqlAffichAction) or die ('Erreur : '.mysql_error() );
			while($rowAction = mysql_fetch_array($resultAction))
			{
				for ($i=0;$i<$_POST['nbreLigneAct'];$i++)
				{	
					if(isset($_POST['ActAct'][$i])) $ActAct = $_POST['ActAct'][$i]; else $ActAct = 0;
					if(isset($_POST['ActObj'][$i])) $ActObj = $_POST['ActObj'][$i]; else $ActObj = 0;	?>
 
				<tr>
					<td class="action"><textarea rows='5' cols="25" name='ActAct[]'><?
						if($ActAct!=0) echo $ActAct; else echo $rowAction["Action"];?></textarea></td>
					<td class="action"><textarea rows='5' cols="15" name='ActObj[]'><?
						if($ActObj!=0) echo $ActObj; else echo $rowAction["Objectif"];?></textarea></td>
				</tr>
			<?	}		
			}	
			?>
		</table>
		<div id=saisiesAct></div>
		<div align=center><input type=button value="+" onclick=AjouterAction()></div>
 
		<input type="hidden" name="nbreLigneAct" value="<?if (isset($_POST['nbreLigneAct'])) echo $_POST['nbreLigneAct'];
			else echo "1";?>" id="NbreLigneAct">
 
		<input type="submit" name="BtdbEnvoyer" value="modifier"></br>
		<a name="formulaire"></a>
 
	<?	if (isset ($_POST['BtdbEnvoyer'])) echo "<font color=green>Données modifées dans la base</font>"; ?>
 
		</form>
	</body>
</html>
<?
}
?>


Merci d’avance à ceux qui s’intéresseront à mon problème.
Code85 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2011, 16h01   #2
Membre régulier
 
Avatar de 2h15Crew
 
Homme Valentin
Étudiant
Inscription : mai 2011
Messages : 79
Détails du profil
Informations personnelles :
Nom : Homme Valentin
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 79
Points : 97
Points : 97
Pourquoi faire une suppression/insertion alors que la modification existe (UPDATE) ?
2h15Crew est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2011, 16h18   #3
Invité régulier
 
Homme
Développeur Web
Inscription : mai 2011
Messages : 24
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2011
Messages : 24
Points : 8
Points : 8
Citation:
Pourquoi faire une suppression/insertion alors que la modification existe (UPDATE) ?
J’aurai peut être du préciser ce choix, comme l’utilisateur peut ajouter des lignes en appuyant sur un bouton « + », les $_POST contiennent des array() pour faciliter les insertions.

Exemple :

Ligne 1 sera $_POST[‘ActAct’][0]
Ligne 2 sera $_POST[‘ActAct’][1]
Ligne 3 sera $_POST[‘ActAct’][2]


Admettons que Ligne 1 et Ligne 2 sont déjà présente dans le formulaire et sont destiné à être modifié, et bien DELETE puis INSERT.

De cette manière, si l’utilisateur ajoute Ligne 3, la boucle parcourra la totalité des champs existants et ajoutés.
Code85 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2011, 16h35   #4
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
Citation:
Admettons que Ligne 1 et Ligne 2 sont déjà présente dans le formulaire et sont destiné à être modifié, et bien DELETE puis INSERT.
Tu connais replace into ?
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2011, 16h48   #5
Invité régulier
 
Homme
Développeur Web
Inscription : mai 2011
Messages : 24
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2011
Messages : 24
Points : 8
Points : 8
Citation:
Tu connais replace into ?
Maintenant oui.
Cela peut en effet être intéressant dans mon cas.

Je test ça demain première heure.

Merci
Code85 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 14h26   #6
Invité régulier
 
Homme
Développeur Web
Inscription : mai 2011
Messages : 24
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2011
Messages : 24
Points : 8
Points : 8
J'avais donc bien un probleme au niveau de mes boucles, voici ce que j'ai du modifier afin d'avoir le resultat voulu:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
//Boucle pour l'insertion des données
	for ($i=0;$i<sizeof($_POST['ActAct']);$i++)
	{	
		if(isset($_POST['ActAct'][$i])) $ActAct = $_POST['ActAct'][$i]; else $ActAct = 0;
		if(isset($_POST['ActObj'][$i])) $ActObj = $_POST['ActObj'][$i]; else $ActObj = 0;
 
		$sqlAction = "	INSERT INTO indicaperf.action_has_tdb (`idTdb`,`Action`,`Objectif`)
							VALUES('$dernierEnr','$ActAct','$ActObj')";
		mysql_query($sqlAction) or die(mysql_error());					
	}
 
[...]
 
//Boucle de l'affichage des données
 
$i = 0;
			while($rowAction = mysql_fetch_array($resultAction))
			{	
 
					if(isset($_POST['ActAct'][$i])) $ActAct = $_POST['ActAct'][$i]; else $ActAct = 0;
					if(isset($_POST['ActObj'][$i])) $ActObj = $_POST['ActObj'][$i]; else $ActObj = 0;	?>
 
				<tr>
					<td class="action"><textarea rows='5' cols="25" name='ActAct[]'><?
						if($ActAct!=0) echo $ActAct; else echo $rowAction["Action"];?></textarea></td>
					<td class="action"><textarea rows='5' cols="15" name='ActObj[]'><?
						if($ActObj!=0) echo $ActObj; else echo $rowAction["Objectif"];?></textarea></td>
				</tr>
		<?	$i++;
			}			
			?>
Merci pour votre participation.
Code85 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h51.


 
 
 
 
Partenaires

Hébergement Web