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

jQuery Discussion :

Formulaire avec Jquery et Ajax


Sujet :

jQuery

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Points : 48
    Points
    48
    Par défaut Formulaire avec Jquery et Ajax
    Bonjour à tous,

    J'ai un formulaire comme ceci

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <form method="post" name="formAchat">
    <input type="hidden" class="inputtext1" name="id_prod" value="<?php echo $achat2->id;?>">
    <input type="hidden" class="inputtext1" name="id_membre" value="<?php echo $_SESSION['id_membre'];?>">
    <input type="text" class="inputtext1" name="id_vendeur" value="<?php echo $achat2->id_membre;?>">
    Qts. : <input type="text" name="qte" size="4" value="1">
    <input type="submit" style="font-size : 9px;"  value="Achat" />
    </form>

    Mon code Jquery

    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
    $(document).ready(function() {
        $("form[name='formAchat']").submit(function(event) { //Trigger on form submit
            $('#id_prod + .throw_error').empty(); //Clear the messages first
    		$('#id_membre + .throw_error').empty(); //Clear the messages first
    		$('#id_vendeur + .throw_error').empty(); //Clear the messages first
    		$('#qte + .throw_error').empty(); //Clear the messages first
            $('#success').empty();
     
                //Validate fields if required using jQuery
     
            var formAchat = { //Fetch form data
    			'qte'  : $('input[name=qte]').val(), //Store name fields value
                'id_prod'  : $('input[name=id_prod]').val(), //Store name fields value
    			'id_membre'  : $('input[name=id_membre]').val(), //Store name fields value
    			'id_vendeur'  : $('input[name=id_vendeur]').val() //Store name fields value
            };
     
            $.ajax({ //Process the form using $.ajax()
                type        : 'POST', //Method type
                url         : 'ajax/achat_code.php', //Your form processing file url
                data        : formAchat, //Forms name
                dataType    : 'json',
                success     : function(data) {
     
                if (!data.success) { //If fails
    				if (data.errors.qte) { //Returned if any error from process.php
                        $('.throw_error').fadeIn(1000).html(data.errors.qte); //Throw relevant error
                    }
     
                    if (data.errors.id_prod) { //Returned if any error from process.php
                        $('.throw_error').fadeIn(1000).html(data.errors.id_prod); //Throw relevant error
                    }
    				if (data.errors.id_membre) { //Returned if any error from process.php
                        $('.throw_error').fadeIn(1000).html(data.errors.id_membre); //Throw relevant error
                    }
    				if (data.errors.id_vendeur) { //Returned if any error from process.php
                        $('.throw_error').fadeIn(1000).html(data.errors.id_vendeur); //Throw relevant error
                    }
                } else {
                        $('#success').fadeIn(1000).append('<p>' + data.posted + '</p>'); //If successful, than throw a success message
    					//window.setTimeout("location=('deconnexion.php');",8000);
                    }
                }
            });
            event.preventDefault(); //Prevent the default submit
        });
    });

    formulaire achat_code.php

    Code php : 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
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    <?php
    session_start();
    setlocale(LC_TIME, 'fr_FR.ISO_8859-1');
    date_default_timezone_set('Europe/Paris');
    include_once('../includes/fonctions.php'); 
    $nomsite = "Ultra Code Discount";
    $debug = true; 
    $errors = array(); //To store errors
    $form_data = array(); //Pass back the data to `form.php`
    $id_prod = array();
    $id_vendeur = array();
     
    /* Validate the form on server side */
    if ($_POST['id_prod']) { //Name cannot be empty
     
    $id_prod = intval($_POST['id_prod']);
    $id_vendeur = intval($_POST['id_vendeur']);
    $info101 = $db->prepare('SELECT * FROM codetyp WHERE id = :id_prod');
    		$info101->bindValue('id_prod',$id_prod, PDO::PARAM_INT);
    		$info101->execute();
    		$membre101=$info101->fetch(PDO::FETCH_OBJ); 
     
    $codes2 = $db->prepare('SELECT * FROM codes WHERE type = :id_code AND id_vendeur = :id_vendeur AND utilisation = :util ');
    		$codes2->bindValue('id_code',$membre101->id_code, PDO::PARAM_INT);
    		$codes2->bindValue('id_vendeur',$id_vendeur, PDO::PARAM_INT);
    		$codes2->bindValue('util','0', PDO::PARAM_INT);
            $codes2->execute(); 
    		$nbentrees = $codes2->rowCount();
     
    if($nbentrees != ''){
    $errors['id_prod'] = $nbentrees.'-'.$id_prod; 
     
    }else{
    $errors['id_prod'] = "Stock Insufissant";
    }
    }
    if (!empty($errors)) { //If errors in validation
        $form_data['success'] = false;
        $form_data['errors']  = $errors;
    } else { //If not, process the form, and return true on success
        $form_data['success'] = true;
    if($form_data['success'] == true){
     
    $info = $db->prepare('SELECT * FROM membres WHERE id_membre = ?');
    		$info->bindValue(1,$_POST['id_membre'], PDO::PARAM_INT);
    		$info->execute();
    		$membre=$info->fetch(PDO::FETCH_OBJ); 
     
    $info10 = $db->prepare('SELECT * FROM codetyp WHERE id = ?');
    		$info10->bindValue(1,$_POST['id_prod'], PDO::PARAM_INT);
    		$info10->execute();
    		$membre10=$info10->fetch(PDO::FETCH_OBJ); 
     
     
    $quantite = intval($_POST['qte']);
     
    $total = $quantite * $membre10->prix;
    $codes = $db->prepare('SELECT * FROM codes WHERE type = ? AND id_vendeur = ? AND utilisation = ? LIMIT ' . $quantite);
            $codes->bindValue(1,$membre10->id_code, PDO::PARAM_INT);
    		$codes->bindValue(2,$_POST['id_vendeur'], PDO::PARAM_INT);
    		$codes->bindValue(3,'0', PDO::PARAM_INT);
            $codes->execute(); 
    		$nbentrees = $codes->rowCount();
            while($codeach=$codes->fetch(PDO::FETCH_OBJ)) {
                     $coderip1[] = $codeach->code;
                     $coderip12[] = $codeach->id_code;
     
     
    for($i=0;$i<$nbentrees;$i++) {
     
    $nouvdemande1 = $db->prepare('UPDATE codes SET utilisation=:utilisation, id_membre=:id_membre where code=:code');
                        $nouvdemande1->bindValue('utilisation','1', PDO::PARAM_INT);
    					$nouvdemande1->bindValue('id_membre',$_POST['id_membre'], PDO::PARAM_INT);
                        $nouvdemande1->bindValue('code',$codeach->code, PDO::PARAM_INT);
                        $nouvdemande1->execute();	
     
    $form_data['posted'] = $coderip1;
     
    }
    }
    $addClient1 =  $db->prepare("INSERT INTO achat_codes (id_membre,id_vendeur,timetemps,id_code,codes,montant,nbr_code) VALUES (:id_membre,:id_vendeur,:timetemps,:id_code,:codes,:montant,:nbr_code)");
                    $addClient1->bindParam('id_membre',$_SESSION['id_membre'], PDO::PARAM_INT);
    				$addClient1->bindParam('id_vendeur',$_POST['id_vendeur'], PDO::PARAM_INT);
                    $addClient1->bindParam('timetemps',time(), PDO::PARAM_INT);
                    $addClient1->bindParam('id_code',$_POST['id_prod'], PDO::PARAM_INT);
                    $addClient1->bindParam('codes',implode(',',array_values($coderip1)), PDO::PARAM_INT);
                    $addClient1->bindParam('montant',$total, PDO::PARAM_INT);
                    $addClient1->bindParam('nbr_code',$_POST['qte'], PDO::PARAM_INT);               
                    //$addClient1->execute();
    }		
     
    }
     
    //Return the data back to form.php
    echo json_encode($form_data);
     
    ?>

    Mon probleme c'est que le formulaire m'envoi toujour l'ID 1 et pas les autre ID
    Dans la base j'ai deux id 1 et 10 et quand je test il me donne que l'id 1

    Pouvez vous me dire pkoi

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Points : 48
    Points
    48
    Par défaut
    J'ai constaté que c'est toujours un seul id qui passe dans le form.
    Mais comme j'utilise un while pour afficher tout mes id de la base.


    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <form method="post" name="formAchat">
       <input type="text" class="inputtext1" name="id_prod" id="id_prod" value="<?php echo $achat2->id;?>" />
       <input type="hidden" class="inputtext1" name="id_membre" id="id_membre" value="<?php echo $_SESSION['id_membre'];?>" />
       <input type="hidden" class="inputtext1" name="id_vendeur" id="id_vendeur" value="<?php echo $achat2->id_membre;?>" />
       Qts. : <input type="text" name="qte" size="4" value="1">
       <input type="submit" style="font-size : 9px;"  value="Achat" />
    </form>

  3. #3
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Répété un nombre incalculable de fois : un id doit être unique dans le document !
    Si à la base ton code HTML n'est pas valide, il ne faut pas s'étonner que l'ensemble fonctionne mal.

    Bref, tu ne récupères que le premier id parce que $('#...') ne renvoie que le premier élément ayant l'id demandé.

    D'autre part
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'qte' : $('input[name=qte]').val(),
    Le principe est identique : $('input[name=qte]') te renvoie l'ensemble des input dont l'attribut name vaut qte, mais ensuite, la méthode (appelée getter) .val() ne peut renvoyer qu'une seule valeur, ce sera donc celle du premier élément de la collection.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Points : 48
    Points
    48
    Par défaut
    Donc je ne peu pas utilisé ce formulaire pour mes id, ou alors comment je peu procéder pour que l'appel ce fasse sur tout les ID

  5. #5
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Passer par une sélection basée sur les name :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('input[name*=qte]') //Retourne tous éléments qui ont la chaine "qte" dans leur nom
    Ou mieux, passe par l'utilisation d'une classe :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('.qte]') //Tous les éléments qui ont la classe qte
    Ensuite pour boucler sur l'ensemble des résultats utilise la méthode each.
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Points : 48
    Points
    48
    Par défaut
    Code jquery : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    'id_prod'  : $('input[name=id_prod]').val(),

    c'est surtout cette ligne qui me renvoi la même id j'ai fait ce que vous m'avez dit mais cela ne fonctionne pas

  7. #7
    Membre confirmé Avatar de freddou17
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2013
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 341
    Points : 566
    Points
    566
    Par défaut
    Tu peux aussi créer une variable cpt et tu construis ton id avec.

    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
     
    <?php 
     
    $cpt=0; 
    while(condition){
     
    ?>
     
    <form method="post" name="formAchat">
       <input type="text" class="inputtext1" name="id_prod" id="id_prod<?php $cpt ?>" value="<?php echo $achat2->id;?>" />
       <input type="hidden" class="inputtext1" name="id_membre" id="id_membre<?php $cpt ?>" value="<?php echo $_SESSION['id_membre'];?>" />
       <input type="hidden" class="inputtext1" name="id_vendeur" id="id_vendeur<?php $cpt ?>" value="<?php echo $achat2->id_membre;?>" />
       Qts. : <input type="text" name="qte" size="4" value="1">
       <input type="submit" style="font-size : 9px;"  value="Achat" />
    </form>
     
    <?php
     
      cpt++;
    }
     
     ?>
    pas tester ++
    "Aucun de nous ne sait ce que nous savons tous, ensemble."
    Lien vers mon appli Funcash n'hésitez pas à donner votre avis

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Points : 48
    Points
    48
    Par défaut
    Le probleme c'est que je ne sais pas quoi mettre en condition vue que j'ai déja

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    while($achat2=$achat->fetch(PDO::FETCH_OBJ)){

    et ca ne fonctionne pas

  9. #9
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM codetyp WHERE id IN (:idProd)

    La solution de "créer des ids" n'est pas une bonne idée (en tout cas si c'est pour les sélectionner).

    Passe un tableau json des ids dans ta fonction ajax, tout ton code est vraiment penser comme s'il n'y en avait qu'un.
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Points : 48
    Points
    48
    Par défaut
    Merci pour ton aide,

    Je n'ai jamais utilise JSON jusqu'a présent et je ne sais pas comment coder ca sur mon code avez vous des exemples ou une solution je galère merci

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

Discussions similaires

  1. [AJAX] Remplissage auto d'un formulaire avec jQuery et AJAX
    Par malaka44 dans le forum jQuery
    Réponses: 1
    Dernier message: 07/11/2014, 19h52
  2. Réponses: 4
    Dernier message: 05/06/2011, 12h28
  3. [AJAX] valider un formulaire avec une fonction ajax
    Par freums dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 18/02/2008, 11h34
  4. [AJAX] Envoi ou non d'un formulaire avec une fonction AJAX
    Par ohhh.gringo dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 16/05/2007, 11h47

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