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 :

Mise à jour plusieurs enregistrements depuis le même formulaire


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 185
    Par défaut Mise à jour plusieurs enregistrements depuis le même formulaire
    Bonjour,

    J'enregistre des données comptables dans ma BDD, donc toujours la même "ligne" comprenant : ordre, ecriture, montant, montant1 et montant2.

    Je fais une boucle dans mon formulaire pour nommer chaque champs envoyé de manière unique :
    for ($i=0; $data = mysql_fetch_array($result) ;$i++)
    puis ordre.$i, ecriture.$i etc. et id en champs caché.

    Tout ceci fonctionne parfaitement.
    Par contre, je ne sais pas comment faire pour récupérer mes champs (pour faire un UPDATE), par exemple :
    ordre.$i va 'envoyer en fonction du nombre d'enregistrements ordre0, ordre1, ordre2, ... ordreN

    Une idée ?
    Merci.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 185
    Par défaut Précisions, voilà le code
    FORMULAIRE (extrait)

    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
     
    <?php
    $sql ="SELECT * 
    FROM ecritures 
    WHERE idbienav='$idbienav' AND ordre >'603' AND ordre <'652' 
    ORDER BY ordre ASC ";
    $result = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br/>'.mysql_error()); 
     
    // On nomme chaque champs en ajoutant un identifiant unique a chaque champs  - initialisation du compteur
    for ($j = 0;$data = mysql_fetch_array($result);$j++) {
    ?>					
    <tr >
     <td>	<input name=" <?php echo 'ordre'.$j; ?>" type="text" value="<?php echo $data['ordre']; ?>" size="3" maxlength="3" />
    	<input name="<?php echo 'ecriture'.$j; ?>" type="text" value="<?php echo $data['ecriture']; ?>" size="45" maxlength="255" /></td>
     <td>	<input name="<?php echo 'montant'.$j; ?>" type="text"  value="<?php echo $data['montant']; ?>" size="6" maxlength="11" />  &euro;
    	<input name="annee_bilan" type="hidden" id="annee_bilan" value="<?php echo $an; ?>" /></td>
     <td>	<input name="<?php echo 'montant1.$j'; ?>" type="text"  value="<?php echo $data['montant1']; ?>" size="6" maxlength="11" />&euro;</td>
    					<td>	<input name="<?php echo 'montant2'.$j; ?>" type="text"  value="<?php echo $data['montant2']; ?>" size="6" maxlength="11" />&euro;</td>
    					<td>	<input name="Modifier" type="submit" class="bouton" id="Modifier" value="Modif." />
    					   		<input name="<?php echo 'idecritures'; ?>" type="hidden" id="idecritures" value="<?php echo $data['idecritures']; ?>" /></td>
    				 </tr>
    <?php
    }
    ?>
    et la partie du script qui est sensée récupérer les donnees à mettre à jour

    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
     
    elseif ($_POST['Modifier']) {
    	// Recherche de tous les enregistrements concernés par la modification en conservant la meme requete que sur le formulaire
    	$sql ="SELECT * FROM ecritures 
    					WHERE idbienav='$idbienav' AND ordre >'603' AND ordre <'652' 
    					ORDER BY ordre ASC ";
    	$result = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    	for ($j = 0;$data = mysql_fetch_array($result);$j++) {
     
    		if(isset($_POST['ordre'].$j) && !empty($_POST['ordre'].$j)) {
    		$ordre=htmlentities(trim($_POST['ordre'].$j));
    		}
    		if(isset($_POST['ecriture'].$j) && !empty($_POST['ecriture'].$j)) {
    		$ecriture=htmlentities(trim($_POST['ecriture'].$j));
    		}
    		if(isset($_POST['montant'].$j) && !empty($_POST['montant'].$j)) {
    		$montant=htmlentities(trim($_POST['montant'].$j));
    		}
    		if(isset($_POST['montant1'].$j) && !empty($_POST['montant1'].$j)) {
    		$montant1=htmlentities(trim($_POST['montant1'].$j));
    		}
    		if(isset($_POST['montant2'].$j) && !empty($_POST['montant2'].$j)) {
    		$montant2=htmlentities(trim($_POST['montant2'].$j));
    		}
     
    		$sql="	UPDATE ecritures  
    						SET ordre = '$ordre', ecriture = '$ecriture', montant = '$montant', montant1 = '$montant1', montant2 = '$montant2'  
    						WHERE idecritures ='$idecritures' ";
    		mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());		
    		echo $sql.'<br />' ;
    		}
    }
    Pour commencer, il m'indique une erreur de syntaxe à cette ligne :
    if(isset($_POST['ordre'].$j) && !empty($_POST['ordre'].$j)) {

    Je galère ... Si une âme charitable ...

    Merci

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Par défaut
    Bonjour,

    Nomme plutôt tes champs de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input name=" <?php echo 'ordre['.$j.']' ?>" type="text" value="<?php echo $data['ordre']; ?>" size="3" maxlength="3" />
    C'est plus simple à récupérer. Tu récupère le tableau "$_POST['ordre']".
    Même chose pour les autres "input" évidemment.
    Pour récupérer, exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    foreach ($_POST['ordre'] as $cle => $valeur)
    {
      echo $valeur . ' => ' . $_POST['ecriture'][$cle] . ' => ' . $_POST['montant'][$cle] . ' => ' . $_POST['montant1'][$cle] . ' => ' . $_POST['montant2'][$cle] . ' => ' . $_POST['ecriture'][$cle] . '<br>';
    }

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 185
    Par défaut Merci JECA
    Ta réponse est

    J'ai un peu modifier mon code pour récupérer les id et suis en train de préparer les requêtes SQL pour l'update, les tests fonctionnent donc pas de soucis pour la suite. Encore merci.

Discussions similaires

  1. [MySQL] Mise à jour d'enregistrements à partir d'un formulaire
    Par lupus83 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 23/06/2008, 11h09
  2. Réponses: 0
    Dernier message: 19/02/2008, 11h35
  3. Réponses: 2
    Dernier message: 18/07/2007, 08h38
  4. Réponses: 2
    Dernier message: 25/09/2006, 17h24
  5. Réponses: 3
    Dernier message: 21/08/2006, 10h03

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