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 des lignes cochées


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Août 2007
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 416
    Par défaut Mise à jour des lignes cochées
    Bonsoir,

    Comment faire pour que lorsque je clique sur mon bouton "update", il fasse une mise à jour des lignes cochées dans ma base de données ?

    Mon code me permet d'afficher une sélection de lignes de ma base de données, mais je ne sais pas comment faire pour faire un update uniquement des lignes sélectionnées par les cases cochées.
    Comment les récupérer via ma page update.php ?

    Pouvez-vous m'aider ?

    Voici mon code :

    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
     
    <?php /* Date de création: 12/04/2009 */ ?>
    <html> 
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <style type="text/css">
    P { FONT-SIZE: 8pt; COLOR: #000000; FONT-FAMILY: Verdana, Tahoma, Arial}
    TD { FONT-SIZE: 8pt; COLOR: #000000; FONT-FAMILY: Verdana, Tahoma, Arial} 
    TH { FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Verdana, Tahoma, Arial} 
    h2 { FONT-SIZE: 18pt; COLOR: #EF0000; FONT-FAMILY: Verdana, Tahoma, Arial}	
    h3 { FONT-SIZE: 12pt; COLOR: #CCCCFF; FONT-FAMILY: Verdana, Tahoma, Arial}
    body { background-color: #2A13FB }
    </style>
    </head>
    <body>
    <?php 
    $conn=odbc_connect(mabase,'',''); 
    if (!$conn) 
    {exit("Connection Failed: " . $conn);} 
    $sql="SELECT * FROM SGCHISTO WHERE SGCHISTO.HTYPE='S' AND SGCHISTO.HPROCSTATUS='X' ORDER BY SGCHISTO.HDOCDATE"; 
    //$sql2="SELECT TRUNC(maDate,'DD') FROM SGCHISTO.HDOCDATE";	 
    //$sql2="select convert(char(10), getDate(), 103)";
     
    $rs=odbc_exec($conn,$sql); 
     
    if (!$rs) 
    {exit("Error in SQL");}  
     
     
    echo "<form name='logger' action='update.php' method='post'>" ;	 
     
    echo "<table width='800' align ='center' border='0' cellpadding='3' cellspacing='1' bgcolor='#CCCCFF'><tr>";  
    echo "<th align='center' bgcolor='white'>N° de documents</th>";
    echo "<th align='center' bgcolor='white'>Date</th>";
    echo "<th align='center' bgcolor='white'>Date d'échéance</th>";
    echo "<th align='center' bgcolor='white'>Montants</th>";
    echo "<th align='center' bgcolor='white'>Commentaire</th>";
    echo "<th align='center' bgcolor='white'>Bloquer</th></tr>";	
    while (odbc_fetch_row($rs)) 
    {  
    $HDOCNO=odbc_result($rs,"HDOCNO"); 	
    $HDOCDATE=odbc_result($rs,"HDOCDATE");
    $HDUEDATE=odbc_result($rs,"HDUEDATE"); 
    $HMOUNTH=odbc_result($rs,"HMOUNTH"); 
    $HREMINT=odbc_result($rs,"HREMINT");    
    $HPROCSTATUS=odbc_result($rs,"HPROCSTATUS");		
     
    echo "<tr>"; 
    echo "<td align='center' bgcolor='white'>$HDOCNO</td>";   
    echo "<td align='center' bgcolor='white'>$HDOCDATE</td>";
    echo "<td align='center' bgcolor='white'>$HDUEDATE</td>";
    echo "<td align='center' bgcolor='white'>$HMOUNTH</td>";
    echo "<td align='center' bgcolor='white'>$HREMINT</td>";
    echo "<td align='center' bgcolor='white'><input type=\"checkbox\" name=\"vartb[]\"  value=\"".$val[$HPROCSTATUS]."\"></td></tr><br>";	 
    }
    echo "</table><br><br>"; 
    echo "<table align='center'><tr>"; 
    echo "<tr>"; 
    echo "<td align='center'><input type=\"submit\" name=\"valide\" value=\"Update\">";	
    echo "<input type=\"submit\" value=\"Fermer le programme\" onclick=\"window.close();\" /></td></tr>"; 
    echo "</table><br><br>";
    echo "</form>";	  
     
    odbc_close($conn); 
     
    ?>
    </body> 
    </html>

  2. #2
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 25
    Par défaut
    Bonsoir a toi,

    Si j'ai bien compris tu veut que lorsque tu passe à la page update.php seule les lignes cochées soient mise à jour ?

    Si c'est ça voila comment tu peut procéder :

    Récupére le nombre de lignes affichées que tu passera à ta page update.php

    Ensuite voila l'algo grosso modo ce que ça donne :

    Il faut que chaque case à cocher est un ID différent (pourquoi pas un compteur qui donne un ID du genre Ma_Checkbox_1, Ma_Checkbox_2 ...)

    Tant que i < Nombre_Ligne faire
    Si ID_Checkbox_1 is checked faire
    update ....
    Fin si
    i <- i+1
    Fin tant que

    Voila comment moi je fait.
    Ce système montre surement ses limites lors du traitement d'un tableau avec beaucoup de lignes (un test a chaque tour de boucle ...)
    Mais j'ai jamais trouver mieux ;-)

    A toi de jouer !

  3. #3
    Membre éclairé
    Inscrit en
    Août 2007
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 416
    Par défaut
    Tu n'aurais pas un exemple concret ?

  4. #4
    Membre éclairé
    Inscrit en
    Août 2007
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 416
    Par défaut
    J'ai essayé avec ce code-ci, mais cela ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $conn=odbc_connect('mabase','',''); 
    if (!$conn) 
    {exit("Connection Failed: " . $conn);} 
     
    $sql2="UPDATE SGCHISTO SET HPROCSTATUS='G' WHERE HPROCSTATUS='.$_POST['vartb']'";
    $rs2=odbc_exec($conn,$sql2); 
    if (!$rs2) 
    {exit("Error in SQL2");} 
    odbc_close($conn);

  5. #5
    Membre chevronné
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Par défaut
    Le code que tu propose ne fait aucune boucle... c'est normal que rien ne fonctionne.

    Un exemple de code HTML (simple) qui va bien :

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <form ...>
    <div id="toto_1">
      <input type="checkbox" id="cb_1"/>
      <input type="text" id="txt_1"/>
    </div>
    <div id="toto_2">
      <input type="checkbox" id="cb_2"/>
      <input type="text" id="txt_2"/>
    </div>
    <div id="toto_3">
      <input type="checkbox" id="cb_3"/>
      <input type="text" id="txt_3"/>
    </div>
    </form>
    Tu as stocké quelque part que tu avais trois lignes.
    Tu peux alors faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $count = 3; // Pour l'exemple
    for ($i = 1 ; $i <= $count ; $i++) {
      if ($_POST["cb_$i"] == "checked") {
        // Mise à jour de la ligne
      }
    }
    Ce n'est qu'un exemple simpliste. A toi de l'adapter à ton besoin.

  6. #6
    Membre éclairé
    Inscrit en
    Août 2007
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 416
    Par défaut
    merci, mais je ne sais pas savoir à l'avance combien de lignes avec cases à cocher seront présentes à l'écran (l'affichage provient d'une requête).

Discussions similaires

  1. mise à jour des champs d'une ligne de table
    Par laurentSc dans le forum Langage SQL
    Réponses: 6
    Dernier message: 25/12/2009, 19h09
  2. Réponses: 10
    Dernier message: 03/03/2009, 11h46
  3. [JTable] mise à jour des données
    Par tripop dans le forum Composants
    Réponses: 3
    Dernier message: 04/02/2009, 18h52
  4. Mise à jour des tables liées + TIMESTAMP
    Par Homegrown dans le forum Access
    Réponses: 11
    Dernier message: 25/04/2005, 21h52
  5. Procedure Stocké et mise à jour de ligne
    Par Andry dans le forum SQL
    Réponses: 2
    Dernier message: 26/11/2004, 10h22

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