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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    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
    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
    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.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  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
    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
    Membre averti
    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
    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