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 :

Mettre à jour plusieurs ligne de la bdd en même temps [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2011
    Messages : 40
    Points : 26
    Points
    26
    Par défaut Mettre à jour plusieurs ligne de la bdd en même temps
    Bonjour,

    J'ai créé un formulaire pour mettre à jour plusieurs ligne de ma bdd en même temps.
    J'arrive à afficher le statut actuel de la liste mais pour la mise à jour ... je bloque

    Voici mon code actuel :
    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
    <?php 
     
    //connexion à ma bdd
    include 'bddconnect.php';
    //uniquement si le formulaire est complété
    //récupération des données du formulaire
     
    	$ok = (isset($_POST['ok'])) ? $_POST['ok'] : '';
    	$b = (isset($_POST['b'])) ? $_POST['b'] : '';
    	$p = (isset($_POST['p'])) ? $_POST['p'] : '';
    	$pk = (isset($_POST['pk'])) ? $_POST['pk'] : '';
    	//Ajout dans la BDD
    		if(isset($_POST['modifokbp'])){
    		foreach ( $_POST['ok'] as $stamnummer=>$ok ) {
    		$sql = "UPDATE sanctions 
    		SET 
    		sanction_ok = :ok, 
    		sanction_b = :b, 
    		sanction_p = :p
    		WHERE sanction_pk = :pk
    		";
    		$stmt = $bdd->prepare($sql);
    		$stmt->execute(array
    		(
    		':ok' => $ok, 
    		':b' => $b, 
    		':p' => $p,
    		':pk' => $pk
    		)
    		);
    				}
    		echo '<img src="images/ok.gif" width="45" height="24"> La lsite a été mise à jour';
    		$stmt->closeCursor();
    		}
    $sql="SELECT sanctions.sanction_type AS type_sanction, sanctions.sanction_pour AS pour_sanction, sanctions.sanction_nbr_h AS nbr_h_sanction, sanctions.sanction_date AS date_sanction, sanctions.sanction_ok AS ok_sanction, sanctions.sanction_motif AS motif_sanction, studenten.student_naam AS naam_student, studenten.student_voornaam AS voornaam_student, sanctions.sanction_pk AS pk_sanction, studenten.student_klas AS klas_student, studenten.student_stam AS student_stam, sanctions.sanction_b AS b_sanction, sanctions.sanction_e AS e_sanction, sanctions.sanction_p AS p_sanction
    FROM studenten, sanctions
    WHERE studenten.student_stam = sanctions.sanction_student AND sanctions.sanction_date = '2014-06-10'";
     
    $results = $bdd->query($sql);
    $i=1;
    echo '<form method="POST" action=""><table width="100%" border="1" cellpadding="2">
      <tr>
        <th scope="col">Date</th>
        <th scope="col">Nom</th>
        <th scope="col">Billet</th>
        <th scope="col">Pages</th>
        <th scope="col">Ok</th>
      </tr>';
    while( $row=$results->fetch() ){
    $checkedokO = ($row['ok_sanction'] === '1') ? 'checked' : '';
    $checkedokN = ($row['ok_sanction'] === '0') ? 'checked' : '';
    $checkedbO = ($row['b_sanction'] === '1') ? 'checked' : '';
    $checkedbN = ($row['b_sanction'] === '0') ? 'checked' : '';
    $checkedpO = ($row['p_sanction'] === '1') ? 'checked' : '';
    $checkedpN = ($row['p_sanction'] === '0') ? 'checked' : '';
    		echo '<tr>
        <td>'.$row['date_sanction'].'</td>
        <td>'.$row['naam_student'].' '.$row['voornaam_student'].' '.$row['klas_student'].'</td>
        <td><input type="radio" name="b['.$row['student_stam'].']" value="1" '.$checkedbO.'>Oui<input type="radio" name="b['.$row['student_stam'].']" value="0" '.$checkedbN.'>Non
      </td>
        <td><input type="radio" name="p['.$row['student_stam'].']" value="1" '.$checkedpO.'>Oui<input type="radio" name="p['.$row['student_stam'].']" value="0" '.$checkedpN.'>Non
      </td>
        <td><input type="radio" name="ok['.$row['student_stam'].']" value="1" '.$checkedokO.'>Oui<input type="radio" name="ok['.$row['student_stam'].']" value="0" '.$checkedokN.'>Non
      </td>
      </tr>
    
    <input type="hidden" name="pk" value="'.$row['pk_sanction'].'">
    ';
    		}
    $results->closeCursor();
    ?>
    </table>
    <input type="submit" value="Mettre à jour la liste" name="modifokbp">
    </form>
    La partie update ne fonctionne pas.

    Dans quelle direction dois-je chercher ? Je suis perdu

    Merci d'avance pour votre aide

    ;-)
    Sub

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il faut que ton champs de formulaire "pk" soit indexé comme tu l'as fait pour les autres champs.

    Pour le traitement tu parcours le tableau reçu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach ($_POST['pk'] as $student_stam=>$pk) {
        $b = $_POST['b'][$student_stam];
        etc.

  3. #3
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    Bonjour.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form method="POST" action=""><table width="100%" border="1" cellpadding="2">
    Dans l'attribut action mettre "traitement.php" et écrire cette nouvelle page. Non ?...

    Vous parliez d'une MAJ de plusieurs lignes en même temps. Cela implique des $_POST en tableau, et une boucle. Non ?...

    Donc, si j'ai bien compris : Une page avec une boucle de traitement ! (Excusez-moi je n'y connais rien à PDO)

    Cdlt

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2011
    Messages : 40
    Points : 26
    Points
    26
    Par défaut
    Merci beaucoup sabotage !

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

Discussions similaires

  1. [CakePHP] Mettre a jour plusieurs lignes d'un modèle
    Par Poulain dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 12/10/2014, 19h35
  2. Mettre à jour plusieurs lignes d'une table
    Par beegees dans le forum Langage
    Réponses: 5
    Dernier message: 15/10/2008, 19h09
  3. [Procédure Stockée] mettre à jour plusieurs lignes
    Par PoichOU dans le forum Langage SQL
    Réponses: 15
    Dernier message: 16/05/2007, 17h18
  4. Procédure mettre à jour plusieurs lignes
    Par JEFF56 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 29/05/2006, 11h53
  5. Mettre a jour plusieurs lignes d'une table
    Par Tartenpion dans le forum Langage SQL
    Réponses: 4
    Dernier message: 17/12/2005, 19h50

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