IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Update multiple PHP/MySQL [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 77
    Points : 54
    Points
    54
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !

  2. #2
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 77
    Points : 54
    Points
    54
    Par défaut
    J'avais essayé ça mais pas mieux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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...

  3. #3
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bonsoir,

    Pour pouvoir utiliser $_POST['ID_produit'] comme un tableau dans ta source php, tu dois formater ton html comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" name="ID_produit[]" value="<?php echo $ligne1['ID_produit']; ?>" />

  4. #4
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    $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]

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 77
    Points : 54
    Points
    54
    Par défaut
    Merci les gars ça marche nikel !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Récupération de CheckBox Multiples php/Mysql
    Par snorky94 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 19/10/2012, 09h15
  2. Case à cocher à choix multiple php/mysql
    Par tatutatu2009 dans le forum Langage
    Réponses: 10
    Dernier message: 31/05/2011, 18h48
  3. [MySQL] UPDATE MULTIPLE EN MYSQL
    Par andaman dans le forum PHP & Base de données
    Réponses: 23
    Dernier message: 15/01/2011, 14h46
  4. UPDATE * SET php/mysql
    Par Invité dans le forum Requêtes
    Réponses: 13
    Dernier message: 28/03/2006, 11h47
  5. multi update avec php/ mysql
    Par arnoweb dans le forum Administration
    Réponses: 1
    Dernier message: 17/11/2005, 22h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo