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

  1. #1
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 416
    Points : 63
    Points
    63
    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
    Nouveau membre du Club
    Inscrit en
    Avril 2009
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 25
    Points : 25
    Points
    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 du Club
    Inscrit en
    Août 2007
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 416
    Points : 63
    Points
    63
    Par défaut
    Tu n'aurais pas un exemple concret ?

  4. #4
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 416
    Points : 63
    Points
    63
    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 éclairé
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Points : 709
    Points
    709
    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.
    « Se demander si un ordinateur peut penser est aussi intéressant que de se demander si un sous-marin peut nager. »
    -- Edsger Dijkstra

  6. #6
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 416
    Points : 63
    Points
    63
    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).

  7. #7
    Membre actif Avatar de Momodedf
    Inscrit en
    Juillet 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Juillet 2007
    Messages : 246
    Points : 221
    Points
    221
    Par défaut
    Normal dans tes résultat de checkbox l'ID de ton élement en base de donnée n'est pas stocké.

    Pour ça remplace cette ligne de ton code de départ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<td align='center' bgcolor='white'><input type=\"checkbox\" name=\"vartb[]\"  value=\"".$val[$HPROCSTATUS]."\"></td></tr><br>";
    Par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<td align='center' bgcolor='white'><input type=\"checkbox\" name=\"vartb[$HDOCNO]\"  value=\"".$val[$HPROCSTATUS]."\"></td></tr><br>";
    Pour ce qui est de ton script de traitement du formulaire j'ai corrigé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $conn=odbc_connect('mabase','',''); 
    if (!$conn) 
    {exit("Connection Failed: " . $conn);} 
     
    foreach($_POST['vartb'] as $HDOCNO => $HPROCSTATUS)
    {
    	$sql2="UPDATE SGCHISTO SET HPROCSTATUS='$HPROCSTATUS' WHERE HDOCNO='.$HDOCNO'";
    	$rs2=odbc_exec($conn,$sql2); 
    	if (!$rs2) 
    	{exit("Error in SQL2");}
    } 
    odbc_close($conn);
    Je ne penses pas avoir bien compris ce que le script devait faire donc la requête SQL ne fait peu être pas ce que tu attends, je te conseil de relire le code pour t'en assurer (histoire que tu vois à quoi correspondent les variables $HDOCNO et $HPROCSTATUS).

  8. #8
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 416
    Points : 63
    Points
    63
    Par défaut
    Bonsoir,

    Merci pour votre aide, enfait $HPROCSTATUS n'est pas une variable mes un champs de ma db ainsi que $HDOCNO.

    Je devrais faire un Update uniquement du champs HPROCSTATUS.

  9. #9
    Membre actif Avatar de Momodedf
    Inscrit en
    Juillet 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Juillet 2007
    Messages : 246
    Points : 221
    Points
    221
    Par défaut
    C'est aussi une variable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $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");
    Es tu sur de bien comprendre ce que fait ton script, et ce que tu fais ?

    Je te conseil de faire une sauvergarde de ta base de donnée avant d'exécuter.

  10. #10
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 416
    Points : 63
    Points
    63
    Par défaut
    Bonjour,

    Merci pour votre aide, enfait il faut que quand je coche il ajout dans la db 1 à la place 0 dans le champs : HPROCSTATUS je dois le faire ou dans mon script ?

    merci a vous

  11. #11
    Membre actif Avatar de Momodedf
    Inscrit en
    Juillet 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Juillet 2007
    Messages : 246
    Points : 221
    Points
    221
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $conn=odbc_connect('mabase','',''); 
    if (!$conn) 
    {exit("Connection Failed: " . $conn);} 
     
    foreach($_POST['vartb'] as $HDOCNO => $HPROCSTATUS)
    {
    	$sql2="UPDATE SGCHISTO SET HPROCSTATUS=1 WHERE HDOCNO='".$HDOCNO."'";
    	$rs2=odbc_exec($conn,$sql2); 
    	if (!$rs2) 
    	{exit("Error in SQL2");}
    } 
    odbc_close($conn);
    Ici on va update tout les champ qui ont été coché en boulant sur le tableau correspondant aux checkbox du formulaire (foreach).

  12. #12
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 416
    Points : 63
    Points
    63
    Par défaut
    Bonjour,

    Je fais le test mes j'ai tj le message d'erreur suivant : erro in sql2.

    Enfait le seul champs de ma db qui doit être modifier c'est HPROCSTATUS.

    Pour se qui est de la ligne de code ci dessous j'ai un poroblème il m'affiche juste une case a coché ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<td align='center' bgcolor='white'><input type=\"checkbox\" name=\"vartb[$HDOCNO]\"  value=\"".$val[$HPROCSTATUS]."\"></td></tr><br>";
    Encore merci pour votre aide.

  13. #13
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 416
    Points : 63
    Points
    63
    Par défaut
    rebonjour

    Je vais essayer d'être plus précis pour se que je voudrais faire :

    J'ai 3 script .php :

    login.php qui sert juste à se loguer et une fois loguer il liste tout les champs de ma db dont le champs HPROCSTATUS est égale à "1".
    Pour se script il fonctionne très bien.

    list.php affiche très bien mes champs qu'il me faut il fonctionne très bien aussi.

    update.php qui ne fonctionne pas. Je voudrais juste récupérer ce que j'ai coché et, dans le champ HPROCSTATUS, remplacer les 1 par 0.

    Pouvez-vous m'aider ?

    Voici les 3 codes source :

    login.php

    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
     
    <?php
    $password = "admin";  // Modify Password to suit for access, Max 10 Char.	
    $password2 = "user";
    ##########################################################################
    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>Password Protect </title>
    <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: #CCCCFF; FONT-FAMILY: Verdana, Tahoma, Arial} 	  
    h1 { FONT-SIZE: 8pt; COLOR: #CCCCFF; 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 style="background-color: #2A13FB">
    <?php 
      print "<h2 align=\"center\">Password Protect/h2>";
    // If password is valid let the user get access
    if (isset($_POST["password"]) && ($_POST["password"]=="$password")) {
    ?>
    <!-- START OF HIDDEN HTML - PLACE YOUR CONTENT HERE -->
     
      <p align="center"><br>
      <b>Welcome to Administration area</b><br><br><br>
      <?php
      include("sacedb.php"); 
      ?>
     
    <!-- END OF HIDDEN HTML -->
    <?php 
    }				  
    else
    if (isset($_POST["password"]) && ($_POST["password"]=="$password2")) {
    ?>
    <!-- START OF HIDDEN HTML - PLACE YOUR CONTENT HERE -->
     
      <p align="center"><br>
      <b>Welcome to area</b><br><br><br>
      <?php
      include("list.php"); 
      ?>
     
    <!-- END OF HIDDEN HTML -->
    <?php 
    }
    else
    {
    // Wrong password or no password entered display this message
    if (isset($_POST['password']) || $password == "") {
      print "<p align=\"center\"><font color=\"red\"><b>Incorrect Password</b><br>Please enter the correct password</font></p>";}
      print "<form method=\"post\"><p align=\"center\">Please enter your password for access<br><br>";
      print "<input name=\"password\" type=\"password\" size=\"25\" maxlength=\"10\"><input value=\"Login\" type=\"submit\"></p></form>";
     //echo "<td align='center' bgcolor='white'><input type=\"checkbox\" name=\"vartb[$HDOCNO]\"  value=\"".$val[$HPROCSTATUS]."\"></td></tr><br>";
    }	  
     ?>
     <br>
     <div style="text-align: center"><img src="Security.png" border="0" width="128" height="128" alt=""></div> 
    <BR>
    </body>
    </html>
    list.php
    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
     
    <?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='1' ORDER BY SGCHISTO.HDOCDATE"; 
     
    $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>
    update.php

    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
     
    <?php
     
    $conn=odbc_connect(mabase,'',''); 
    if (!$conn) 
    {exit("Connection Failed: " . $conn);} 
     
    foreach($_POST['vartb'] as $HDOCNO => $HPROCSTATUS)
    {
    	$sql2="UPDATE SGCHISTO SET HPROCSTATUS=0 WHERE HPROCSTATUS=1";
    	$rs2=odbc_exec($conn,$sql2); 
    	if (!$rs2) 
    	{exit("Error in SQL2");}
    } 
    odbc_close($conn);
    ?>

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

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Points : 709
    Points
    709
    Par défaut
    Tous tes checkbox ont le même nom : vartb[]. Déjà, difficile de les distinguer.

    Une solution simple serait de donner un id à tes checkboxes. A supposer que $HD_ID soit l'identifiant dans ta table (valeur à adapter donc), tu peux les appeler cb_$HD_ID (ce qui donne cb_toto, cb_tutu, cb_ahah, etc) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
        $checked = $val[$HPROCSTATUS] == 1 ? "checked=\"checked\"" : "";
        echo "<input type=\"checkbox\" name=\"cb_$HD_ID\" id=\"cb_$HD_ID\"  $checked />";
    ?>
    Dans update.php, tu parcours tous les champs de ton formulaire, si son id est de la forme "cb_*", alors tu extrait ce qui correspond à * et le statut (coché ou non). Tu peux alors lancer ta requête UPDATE en fonction de ces valeurs.
    « Se demander si un ordinateur peut penser est aussi intéressant que de se demander si un sous-marin peut nager. »
    -- Edsger Dijkstra

  15. #15
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 88
    Points : 48
    Points
    48
    Par défaut
    Salut :


    Exemple 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
     
    <form action="update.php" method="post" name="lst" id="lst">
     
    <?php for($i=1;$i<=$max;$i++) 
    {
    $rq0="Select * from table_lst` WHERE id=$id' AND ctrl='$i' ";
    $result0= mysql_query ($rq0) or die ("Select impossible");
    while($data = mysql_fetch_array($result0))
        {
    // lecture des datas
    	}	
    ?>
     
    <tr>
    <th align="center"><input  name="check[<?php echo $i ;?>]" style="position:relative;height:36px;" type="checkbox"  id="check[<?php echo $i ;?>]" value="<?php echo $i ;?>"></th>
    <td><center><input type="text" name="ctrl[<?php echo $i ;?>]" style="position:relative;width:37px;font-weight:normal;text-align:center;" value="<?php echo $ctrl; ?>" readonly></td>
     
      <input type="hidden" name="ligne" id="ligne" value='<?php echo $i-1;?>'>
    <input type="submit" value="Valider" >
    </td></tr>
     
    </table></form>


    page update :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    $ligne=isset($_POST['ligne'])?$_POST['ligne']:"";
    $check=isset($_POST['check'])?$_POST['check']:array();
    $ctrl=isset($_POST['ctrl'])?$_POST['ctrl']:array();
     
     
    foreach ($check as $ligne => $check)
    {
    $sql4 ="UPDATE table SET `ch1`='$ctrl[$check]' 
    		WHERE (mettre les conditions ici) LIMIT 1 ";
    		mysql_query($sql4) or die ("Mise à jour impossible update.php sql4");
    		}

    En espérant avoir aidé

  16. #16
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 416
    Points : 63
    Points
    63
    Par défaut
    Bonsoir,

    Un tout grand merci pour c'est exemple

    Je le test immédiatement.

  17. #17
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 416
    Points : 63
    Points
    63
    Par défaut
    rebonsoir,

    Serait il possibe de commenter un peu votre code ?

    Merci encore

  18. #18
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 88
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par Antherak Voir le message
    Salut :


    Exemple 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
     
    <form action="update.php" method="post" name="lst" id="lst">
     
    <?php for($i=1;$i<=$max;$i++) --> ici je mets en place une boucle pour autant de input qu'il y a à remplir si 10 lignes^$max =10.
    {
    $rq0="Select * from table_lst` WHERE id='$id' AND ctrl='$i' "; --> ici je vais chercher mes données en base de donnée mais ce n'est peut-être pas le cas pour tout le monde
    $result0= mysql_query ($rq0) or die ("Select impossible");
    while($data = mysql_fetch_array($result0))
        {
    // lecture des datas
    $data1=$data['champs1'];
     
    	}	
    ?>
     
    <tr>
    <th align="center"><input  name="check[<?php echo $i ;?>]" style="position:relative;height:36px;" type="checkbox"  id="check[<?php echo $i ;?>]" value="<?php echo $i ;?>"></th> ici la check box N°1 se nommera check[1] et son id check[1] car la première valeur de i=1 et ainsi de suite.
    <td><center><input type="text" name="ctrl[<?php echo $i ;?>]" style="position:relative;width:37px;font-weight:normal;text-align:center;" value="<?php echo $data1 ?>" readonly></td> là, je remplis mes "i" input dont le nom varie en fonction  de i ainsi que la valeur à cause du WHERE id='$id' AND ctrl='$i' dans la requête mysql
     
     
    <input type="hidden" name="ligne" id="ligne" value='<?php echo $i-1;?>'>
    là je cache une input dont la valeur est égale au nombre de ligne
    <input type="submit" value="Valider" >
    </td></tr>
     
    </table></form>


    page update :

    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
     
     
    $ligne=isset($_POST['ligne'])?$_POST['ligne']:"";
    $check=isset($_POST['check'])?$_POST['check']:array();
    $ctrl=isset($_POST['ctrl'])?$_POST['ctrl']:array();
     
    ^ ici je récupère mes variables
     
    foreach ($check as $ligne => $check) je fais ma boucle
    qui met à jour ma bdd pour chaque case cochée dont la valeur correspond à $ligne
    {
    $sql4 ="UPDATE table SET `ch1`='$ctrl[$check]' 
    		WHERE (mettre les conditions ici) LIMIT 1 ";
    		mysql_query($sql4) or die ("Mise à jour impossible update.php sql4");
    		}

    En espérant avoir aidé

  19. #19
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 416
    Points : 63
    Points
    63
    Par défaut
    Bonsoir,

    Merci bcp pour votre aide je suis sur le point de finir mon script

    Je vous tiens au courant.

    ps : au fait comment faire un script php qui vas rechercher dans un répertoir des fichiers .db ( j'ai créer une connection via ODBC " mabase")via une zone de texte par exemple et l'ajouter dans ma variable de ma connection ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $conn=odbc_connect('mabase','','');

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