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

Langage PHP Discussion :

Formulaire AJAX, élément input radio ne fonctionne pas


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mai 2014
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Formulaire AJAX, élément input radio ne fonctionne pas
    Bonsoir,
    J'ai un problème dans un formulaire. C'est un formulaire qui affiche des fleurs par catégorie (Get chargé en ajax,donc pas de rafraichissement). L'internaute doit choisir une de ces fleurs grâce a un bouton radio. Le formulaire envoyé est ensuite traiter en PHP ($_POST['depot']) pour être enregistre dans une bdd.
    Tout s'affiche a merveille , MAIS la valeur de mon Bouton radio lors du post est vide alors qu'elle contient l'id de l'image de la fleur qui sera enregistré dans la bdd. J'ai l’impression que ça coince quand on envoie le formulaire. Voici le code du formulaire :

    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
     
    <form  method="post" action="choixfleurtraiter.php">
    <style type="text/css">
    div#img {
    float: left;
    margin-left: 0%;
    width: 160px;
    height: 160px;
    }
    </style>
    <?php
    include('config.php');
    if(is_numeric($_GET['cat'])) {
    $res = mysql_query('SELECT `id`, `cat`, `souscat` FROM catfleurs WHERE id="'.$_GET['cat'].'"');
    while($rec = mysql_fetch_array($res))
    $req = mysql_query('SELECT `id`, `nom`, `image` FROM choixfleurs WHERE nom="'.$rec["souscat"].'"');
    while($dnn = mysql_fetch_array($req))
    {
    ?>
    <div id="img">
    <table>
    <td><input type='radio' name='depot' id="depot" value='<?php echo $dnn["id"]; ?>' ></input></td>
    <td><img src='<?php
    echo ''.$dnn["image"].'~160x140';
    ?>'  ></td>
    </table>
    </div>
    <?php
    }
    }else{
    $res = mysql_query('SELECT `id`, `cat`, `souscat` FROM catfleurs WHERE id="1"');
    while($rec = mysql_fetch_array($res))
    $req = mysql_query('SELECT `id`, `nom`, `image` FROM choixfleurs WHERE nom="'.$rec["souscat"].'"');
    while($dnn = mysql_fetch_array($req))
    {
    ?>
    <div id="img">
    <table>
    <td><input type='radio' value='<?php echo $dnn["id"]; ?>' name='depot' id="depot"></td>
    <td><img src='<?php
    echo ''.$dnn["image"].'~160x140';
    ?>'  ></td>
    </table>
    </div>
    <?php
    }
    }
    ?>
    <input type="submit" value="Je valide" name="fleurs" />
    J'aimerai régler ce petit bug car ça me prend la tête. Et pourtant avant ça fonctionnait, j'ai rien modifier. Merci de votre aide.

  2. #2
    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.

    Vous devriez afficher l'id de la fleur (ainsi vous seriez sûr que cette variable contient qqchose dans votre base fleurs)...

    Par ailleurs votre code est un grand "if else" dans lequel vous répétez 2 fois la même chose.
    Cela peut être une source d'erreurs, car vous devrez toujours "maintenir" le code à 2 endroits. Faites plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if ( is_numeric($_GET['cat']) )
         $_id = $_GET['cat'] ; 
    else 
         $_id = 1 ;
    et ensuite vous déroulez une seule fois votre boucle de chargement avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $res = mysql_query('SELECT `id`, `cat`, `souscat` FROM catfleurs WHERE id = "$_id" ' );
    Enfin dans votre SELECT :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $res = mysql_query('SELECT `id`, `cat`, `souscat` FROM catfleurs WHERE id="'.$_GET['cat'].'"');
    Votre condition WHERE id est soumise à l'interprétation d'une cascade de quotes et de double quotes... Le problème ne viendrait-il pas de là ?

    Cdlt

  3. #3
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mai 2014
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Toujours pas
    Bonjour,
    Merci de votre réponse, je suis un jeune développeur (amateur) et je fais beaucoup d'erreurs (trop d'ailleurs). J'ai testé comme vous m'avez conseillé mais celane fonctionne toujours pas l'élément imput reste vide lors de l'envoi. J'ai allégé le code voici le nouveau :
    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
     
    <form  method="post" action="choixfleurtraiter.php">
    <style type="text/css">
    div#img {
    float: left;
    margin-left: 0%;
    width: 160px;
    height: 160px;
    }
    </style>
    <?php
    include('config.php');
    if ( is_numeric($_GET['cat']) )
    $_id = $_GET['cat'] ; 
    else 
    $_id = 1 ;
    $res = mysql_query('SELECT `id`, `cat`, `souscat` FROM catfleurs WHERE id = "'.$_id.'" ' );
    while($rec = mysql_fetch_array($res)){
    echo'Catégorie '.$rec["souscat"].'';
    $req = mysql_query('SELECT `id`, `nom`, `image` FROM choixfleurs WHERE nom="'.$rec["souscat"].'"');
    while($dnn = mysql_fetch_array($req))
    {
    ?>
    <div id="img">
    <table>
    <td><input type="radio" name="depot" id="depot" <?php echo'value="'.$dnn["id"].'">'; ?><?php echo $dnn["id"]; ?></td>
    <td><img src="<?php echo ''.$dnn["image"].'~160x140'; ?>"></td>
    </table>
    </div>
    <?php
    }
    }
    ?>
    <input type="submit" name="fleurs">
    </form>
    De plus je vous met coté PHP (si ça peux aidez) :
    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
     
    <?php
    if(isset($_POST['fleur'])){
    $ip = $_SERVER['REMOTE_ADDR'];
    $depot = mysql_real_escape_string($_POST['depot']);
    $dn2 = mysql_num_rows(mysql_query('select id from fleur'));
    $id = $dn2+1;
    $date = ''.date('d/m/Y').' &agrave; '.date('H:i').'';
    $message1 = ucfirst($message);
    $req = 'INSERT INTO `fleur`(`id`, `depot`, `date`, `ip`)
    VALUES("'.$id.'",
    "'.$depot.'", 
    "'.$date.'", 
    "'.$ip.'")';
    mysql_query($req); 
    echo 'Bravo vous avez choisit la meilleur fleur';
    }else{
    echo'<p>Erreur! Vous avez oublié quelque chose !</p>';
    }
    }
    ?>
    Merci d'avance.

  4. #4
    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.

    Il y a bcp de choses qui ne vont pas, mais je ne voudrais pas chambouler votre code. par exemple :

    - il me semble que mysql est obsolète il faut plutôt utiliser mysqli (mais vous dîtes que tout s'affiche bien, donc pourquoi pas...)
    - je ne comprends pas WHERE id = "'.$_id.'" alors que WHERE id = "$_id" devrait suffire... Non ?
    - Par aileurs, ne connaissant pas la structure de vos données SQL je n'ai pas trop cherché à comprendre. (J'ai bien vu une boucle imbriquée, mais je n'ai pas approfondi.
    - Ajoutez des commentaires dans votre code, et utilisez l'indentation pour mieux visualiser)

    Bon courage

  5. #5
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mai 2014
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Bizarre
    Bonjour,
    Merci pour vos réponses rapides. En déplaçant le style css j'ai remarqué que ça fonctionnait normal (le css empêchait au bouton radio d'obtenir sa valeur) C'est BIZARRE ! Je le met en résolu car ça refonctionne nickel.

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

Discussions similaires

  1. Ajax cross-domain qui ne fonctionne pas
    Par fanfouer dans le forum jQuery
    Réponses: 11
    Dernier message: 27/10/2013, 01h45
  2. Réponses: 1
    Dernier message: 22/05/2013, 13h29
  3. Mon script pour Tester un bouton radio ne fonctionne pas.
    Par Invité dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 10/06/2011, 00h39
  4. 1 formulaire, 2 boutons mais 1 ne fonctionne pas
    Par Lanfear dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 14/10/2009, 15h04
  5. Jquery/AJAX function click qui ne fonctionne pas.
    Par prome dans le forum jQuery
    Réponses: 2
    Dernier message: 12/03/2009, 12h57

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