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 19/01/2012, 21h53   #1
Candidat au titre de Membre du Club
 
Homme
Inscription : mai 2009
Messages : 35
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : France

Informations forums :
Inscription : mai 2009
Messages : 35
Points : 10
Points : 10
Par défaut Update multiple PHP/MySQL

Salut,

ça fait un moment que je cherche à faire un update multiple mais pour le moment ça coince donc je post un message.

J'ai un formulaire sur une page 1 qui à l'intérieur du <form> contient une boucle qui m'affiche tous les enreg de ma table avec certaines données. Cette page 1 appelle une page 2 qui fait le traitement.
Je souhaite pouvoir modifier tout d'un coup.
Je sais faire une modif unitaire mais là je ne vois pas, je n'ai encore jamais fait.

Le bout de code de ma page 1 :

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
72
73
74
75
76
77
78
79
80
81
82
83
84
 
<form method="post" action="check_modif_general.php">
 
				<table cellspacing="0" cellpadding="0" align="center" border="1">
					<tr>
						<td align="center" width="90px">Code</td>
						<td align="center" width="95px">Libelle</td>
						<td align="center" width="55px">Prix Achat</td>
						<td align="center" width="55px">Prix Vente</td>
						<td align="center" width="55px">Taille</td>
						<td align="center" width="55px">QTE</td>
						<td align="center" width="70px">Cat&eacute;</td>
						<td align="center" width="90px">Sous Cat&eacute;</td>
						<td align="center" width="90px">Marque</td>
					</tr>
					<?php while ($ligne1 = mysql_fetch_array($result1)) {
 
						$count = mysql_num_rows($result1);
 
						// Requête permettant de lister toutes les catégories
						$query2 = "SELECT * FROM Categorie ORDER BY Libelle_categorie";
						$result2 = mysql_query($query2) or die (mysql_error());
 
						// Requête permettant de lister toutes les sous catégories
						$query3 = "SELECT * FROM SousCategorie ORDER BY Libelle_souscategorie";
						$result3 = mysql_query($query3) or die (mysql_error()); ?>
 
						<input type="hidden" name="ID_produit" value="<?php echo $ligne1['ID_produit']; ?>" />
						<input type="hidden" name="count" value="<?php echo $count; ?>" />
 
						<tr>
							<td align="center" width="90px">
								<input type="text" name="Code_produit" class="modif_general" value="<?php echo $ligne1['Code_produit']; ?>" />
							</td>
							<td align="center" width="95px">
								<input type="text" name="Libelle_produit" class="modif_general" value="<?php echo stripslashes($ligne1['Libelle_produit']); ?>" />
							</td>
							<td align="center" width="55px">
								<input type="text" name="PrixAchat_produit" class="modif_general2" value="<?php echo $ligne1['PrixAchat_produit']; ?>" />
							</td>
							<td align="center" width="55px">
								<input type="text" name="PrixVente_produit" class="modif_general2" value="<?php echo $ligne1['PrixVente_produit']; ?>" />
							</td>
							<td align="center" width="55px">
								<input type="text" name="Taille_produit" class="modif_general2" value="<?php echo $ligne1['Taille_produit']; ?>" />
							</td>
							<td align="center" width="55px">
								<input type="text" name="QteStock_produit" class="modif_general2" value="<?php echo $ligne1['QteStock_produit']; ?>" />
							</td>
							<td align="center" width="70px">
								<select name="Categorie_produit" class="modif_general2">
								<?php while ($ligne2 = mysql_fetch_array($result2)) { ?>
 
									<option value="<?php echo $ligne2['Num_categorie']; ?>"<?php if ($ligne2['Num_categorie'] == $ligne1['Categorie_produit']) echo ' selected="selected"'; ?>><?php echo $ligne2['Libelle_categorie']; ?></option>
 
								<?php } ?>
								</select>
							</td>
							<td align="center" width="90px">
								<select name="SousCategorie_produit" class="modif_general2">
								<?php while ($ligne3 = mysql_fetch_array($result3)) { ?>
 
									<option value="<?php echo $ligne3['Num_souscategorie']; ?>"<?php if ($ligne3['Num_souscategorie'] == $ligne1['SousCategorie_produit']) echo ' selected="selected"'; ?>><?php echo $ligne3['Libelle_souscategorie']; ?></option>
 
								<?php } ?>
								</select>
							</td>
							<td align="center" width="90px">
								<input type="text" name="Marque_produit" class="modif_general" value="<?php echo $ligne1['Marque_produit']; ?>" />
							</td>
						</tr>
 
					<?php }
 
					// Déconnexion de la base de données
					mysql_close(); ?>
 
				</table>
 
				<p>&nbsp;</p><p>&nbsp;</p>
 
				<p><input type="submit" value="Modifier" /></p>
 
			</form>
et ma page 2 :

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
 
// On garde les sessions au passage sur cette page
session_start();
 
// Recherche des infos de connexion dans le fichier connexion_db.inc
include ('connexion_db.inc');
 
// Connexion au serveur MYSQL
mysql_connect ($host,$user,$password) or die ('La connexion au serveur de base de donn&eacute;es ne peut s\'&eacute;tablir');
 
// Connexion à la base de données
$db = mysql_select_db ($database) or die ('Impossible de se connecter &agrave; la base de donn&eacute;es');
 
 
	// On récupère le nombre d'enreg à modifier
	$count = $_POST['count'];
 
	echo '<p>Count = '.$count.'</p>';
 
	$ID_produit = $_POST['ID_produit'][$i];
 
	for ($i = 0; $i < $count; $i++) {
 
		echo '<p>ID = '.$ID_produit.'</p>';
 
	}
Vu que ça ne marche pas pour le moment je veux juste afficher dans un premier temps mes zones ID_produit mais ça m'affiche toujours le même ID...je dois avoir fais une connerie mais je ne vois pas.

Merci d'avance !
lebanner82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2012, 21h57   #2
Candidat au titre de Membre du Club
 
Homme
Inscription : mai 2009
Messages : 35
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : France

Informations forums :
Inscription : mai 2009
Messages : 35
Points : 10
Points : 10
J'avais essayé ça mais pas mieux :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
// On récupère le nombre d'enreg à modifier
	$count = $_POST['count'];
 
	echo '<p>Count = '.$count.'</p>';
 
	for ($i = 0; $i < $count; $i++) {
 
                $ID_produit = $_POST['ID_produit'][$i]; 
		echo '<p>ID = '.$ID_produit.'</p>';
 
	}
ça m'affichait que les premiers enreg et pas tous...
lebanner82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2012, 22h42   #3
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Bonsoir,

Pour pouvoir utiliser $_POST['ID_produit'] comme un tableau dans ta source php, tu dois formater ton html comme ça :
Code :
<input type="hidden" name="ID_produit[]" value="<?php echo $ligne1['ID_produit']; ?>" />
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2012, 06h37   #4
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 727
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 727
Points : 3 294
Points : 3 294
Salut

Etant donné qu'il y a plusieurs éléments pour chaque produits (Code_produit, Libelle_produit, etc ...), on peu exploiter un peu plus les tableaux HTML/Php.

Exemple :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
<?php
$cpt = 0;
while (...etc...) {
?>
<input type="text" name="produits[<?php echo $cpt; ?>][id]" value="<?php echo $ligne1['ID_produit']; ?>" />
<input type="text" name="produits[<?php echo $cpt; ?>][libelle]" value="<?php echo $ligne1['Libelle_produit']; ?>" />
<!-- ...etc... -->
<?php
    $cpt++;
}
?>
On obtiendra les produits dans un seul tableau structuré comme ceci :
$_POST['produits'][indice]['id'], etc ...

Suffit de faire une boucle foreach() pour parcourir chaque élément :
Code :
1
2
3
4
5
6
7
8
9
10
11
 
if (isset($_POST['produits'])) {
    foreach ($_POST['produits'] as $produit) {
        //
        // On effectue les mises à jour dans la boucle
        //
        echo 'id : '.$produit['id'].'<br />';
        echo 'code : '.$produit['code'].'<br />';
        // ...etc...
    }
}
A savoir qu'il n'est pas nécessaire de mettre le nombre de produits dans un champ caché (champ count), la boucle foreach() parcourt automatiquement tous les éléments.
Si on souhaite quand même obtenir le nombre total, suffit de faire :
Code :
$total = count($_POST['produits']);
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2012, 21h06   #5
Candidat au titre de Membre du Club
 
Homme
Inscription : mai 2009
Messages : 35
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : France

Informations forums :
Inscription : mai 2009
Messages : 35
Points : 10
Points : 10
Merci les gars ça marche nikel !
lebanner82 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 02h47.


 
 
 
 
Partenaires

Hébergement Web