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 avec case à cocher [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
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 26
    Par défaut Mise à jour avec case à cocher
    Bonjour a tous,

    Ayant deja ete sauve sur ce forum je renouvelle l'experience...

    Cela fait mtnt quelques temps que je bloque sur une partie de code et j'avoue que je commence a serieusement m'embrouiller. Je m'explique...

    J'ai un formulaire avec des checkbox qui lisent une information sur ma base de donnees mysql et qui doivent etre mises a jour via un bouton valider.

    Pour ce qui est de la lecture, pas de probleme. En revanche, je n'arrive pas a faire la mise a jour sur la base.

    Voici le code que j'utilise pour lire dans la base et afficher une de mes checkbox cochée ou non en fonction du resultat de la requete :

    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
     
    // la requete
    $sql = 'SELECT Coher_offre_epci, Coher_gares_epci, Coher_poles_epci FROM epci WHERE (ID_epci="'.$_SESSION['ID_epci'].'")';  
     
    // on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)  
    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());   
    // on va scanner tous les tuples un par un  
    while ($data = mysql_fetch_array($req)) {
     
          echo '<form method="post" action="irrigcoh.php"><table class="checkbox">
                  <tr class="titreform1">
                    <td height="30" valign="middle">';
    if($data['Coher_offre_epci'] == "-1") 
    { 
          echo '    <input type="checkbox" checked="checked" id="Coher_offre_epci" name="Coher_offre_epci" value="OUI"> offre difficilement lisible';    
    } 
    else 
    { 
          echo '    <input type="checkbox" id="Coher_offre_epci" name="Coher_offre_epci" value="NON"> offre difficilement lisible';   
    }
    Et voici le code que j'utilise pour mettre a jour la base de donnée avec un bouton valider (valide_coherence_x fait reference a un input de type image):

    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
     
    if ($_POST['valide_coherence_x']) {
     
    if ($_POST['Coher_offre_epci']==OUI) {
     
    		$offreoui = 'UPDATE epci SET Coher_offre_epci="-1" WHERE ID_epci="'.$_SESSION['ID_epci'].'"';
    		// on exécute la requête (mysql_query) et on affiche un message au cas où la requête ne se passait pas bien (or die)
    		mysql_query($offreoui) or die('Erreur SQL !'.$offreoui.'<br />'.mysql_error());
    }
     
    else{
     
    		$offrenon = 'UPDATE epci SET Coher_offre_epci="0" WHERE ID_epci="'.$_SESSION['ID_epci'].'"';
    		// on exécute la requête (mysql_query) et on affiche un message au cas où la requête ne se passait pas bien (or die)
    		mysql_query($offrenon) or die('Erreur SQL !'.$offrenon.'<br />'.mysql_error());
    }
    Ce que je ne comprends pas c'est que cette logique fonctionne parfaitement lorsque j'utilise des input radio en choix oui/non. Mais dans ce cas la, il ne lis pas ma conditionnelle et me update toujours 0 comme si la condition n'etait jamais respectee...

    Avez-vous une idee car la j'avoue que je seche...

    Je debute en web donc merci d'etre indulgent pour les enormites...
    N'hesitez pas a me donner le code entier si necessaire

    Merci d'avance

  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
    Je vois déjà qu'il te manque les guillemets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($_POST['Coher_offre_epci']=="OUI") {
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 26
    Par défaut
    Merci pour cette reponse rapide!

    L'ajout de " " ou ' ' ne change rien. J'avais deja essayé cette option et de toute facon cela fonctionne pour les radio sans rien.

    Je pense que cela vient d'une betise de ma part dans l'utilisation des checkbox (peut etre avec les id ou le name)...

  4. #4
    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
    Tes deux checkbox ont le meme nom, donc tu ne recois que le resultat de la deuxieme.

    Pour le point précedent, les guillemets sont nécessaires : PHP qui est très gentil rectifie la syntaxe pour toi mais c'est une erreur.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 26
    Par défaut
    Ah ok merci pour l'info pour les " " je vais les corriger sur les autres pages aussi. Pour ce qui est des checkbox, j'ai mis le meme nom car il s'agit bien de la meme checkbox. Dans le cas ou ma condition est respectée j'ai ajouté le checked="true" et je lui mets value="oui". Dans l'autre cas je ne lui demande pas de cocher la case et je lui mets value="non". C'est ces valeurs que je recupere dans ma feuille de traitement php du formulaire.

    Voici l'ensemble du formulaire pour etre sur que je me suis bien fait comprendre

    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
     
          echo '<form method="post" action="irrigcoh.php"><table class="checkbox">
                  <tr class="titreform1">
                    <td height="30" valign="middle">';
    if($data['Coher_offre_epci'] == "-1") 
    { 
          echo '    <input type="checkbox" checked="checked" id="Coher_offre_epci" name="Coher_offre_epci" value="OUI"> offre difficilement lisible';    
    } 
    else 
    { 
          echo '    <input type="checkbox" id="Coher_offre_epci" name="Coher_offre_epci" value="NON"> offre difficilement lisible';   
    }                
          echo '    </td>
                  </tr>
                  <tr class="titreform1">
                    <td height="30" valign="middle">';
    if($data['Coher_gares_epci'] == "-1") 
    { 
          echo '    <input type="checkbox" checked="checked" id="Coher_gares_epci" name="Coher_gares_epci" value="OUI"> réseau seulement organisé depuis/vers les gares';    
    } 
    else 
    { 
          echo '    <input type="checkbox" id="Coher_gares_epci" name="Coher_gares_epci" value="NON"> réseau seulement organisé depuis/vers les gares';   
    }                
          echo '    </td>
                  </tr>
                  <tr class="titreform1">
                    <td height="30" valign="middle">';
    if($data['Coher_poles_epci'] == "-1")
    { 
          echo '    <input type="checkbox" checked="checked" id="Coher_poles_epci" name="Coher_poles_epci" value="OUI"> réseau qui dépend de plusieurs pôles extérieurs sans réelle prise en compte de la desserte locale';    
    } 
    else 
    { 
          echo '    <input type="checkbox" id="Coher_poles_epci" name="Coher_poles_epci" value="NON"> réseau qui dépend de plusieurs pôles extérieurs sans réelle prise en compte de la desserte locale';   
    }                
     
          echo '    </td>
                  </tr>
                </table></form>';
    Cette logique n'est pas bonne?

  6. #6
    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
    Pardon je n'avais pas vu que tu affichais soit "oui" soit "non".

    Par contre ici pour ta valeur numériques, il ne faut pas de guillemets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($data['Coher_offre_epci'] == -1)
    Je pense qu'il y un problème de logique entre ta construction de formulaire et ce que contiens ta base de donnée.
    En reprenant les codes que tu as donné, j'obtiens bien un requete differente si je cocho ou non ; la seule difference est que je donne pas la "value" en fonction de la base de données.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

Discussions similaires

  1. [MySQL] Mise à jour et case à cocher
    Par pasbonte dans le forum PHP & Base de données
    Réponses: 19
    Dernier message: 05/03/2009, 19h51
  2. Mise à jour avec des cases à cocher
    Par jiojio dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 25/02/2009, 11h53
  3. Requête mise à jour sur case à cocher
    Par Marcopololo dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 18/08/2008, 08h32
  4. TreeView avec case à cocher
    Par da_latifa dans le forum Delphi
    Réponses: 9
    Dernier message: 07/10/2006, 01h01
  5. Mise à jour avec jointure
    Par taupain dans le forum Bases de données
    Réponses: 5
    Dernier message: 09/07/2004, 11h27

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