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

AJAX Discussion :

Requête SQL DELETE en Ajax qui ne fonctionne pas (alors que tout fonctionne)


Sujet :

AJAX

  1. #1
    Membre à l'essai
    Homme Profil pro
    Les plantes et l'informatique
    Inscrit en
    Juillet 2017
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Les plantes et l'informatique

    Informations forums :
    Inscription : Juillet 2017
    Messages : 26
    Points : 15
    Points
    15
    Par défaut Requête SQL DELETE en Ajax qui ne fonctionne pas (alors que tout fonctionne)
    Bonsoir,

    voici quelques heures que j'ai un petit soucis concernant une requête SQL en AJAX via JQuery.

    Je développe pour m'entrainer, un site E-commerce avec un panier et la possibilité d'y modifier les quantités. J'utilise pour cela un "input number", associé à un bouton "modifier". Le click sur le bouton modifier va activer un script JQuery, qui va traiter les données reçues (quel produit est actualisé, quelle quantité est ajoutée ou retirée en fonction du nombre inscrit dans l"input number par l'utilisateur, ET SI il a entré un chiffre égal ou inférieur à zéro, alors on supprime la ligne du produit concerné). C'est à cette dernière étape que je ne comprends pas ce qu'il se passe.

    Bref, voici quelques images et mon code qui seront certainement plus parlant :

    Mon Panier :
    Nom : caddy.png
Affichages : 144
Taille : 18,2 Ko


    Mon Code HTML / PHP (affichage du panier simplifié) :
    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
    echo'<tr>
         <td class="img-table"><img src="assets/img/shop/produit_'.$produit['id'].'/photo_1.jpg" alt="'.$produit['name'].'" title="'.$produit['name'].'"></td>
         <td>'.$produit['name'].'</td>
         <td class="test">
              <input type="number" name="quantite" id="quantite_'.$produit['id'].'" class="quantite" value="'.$caddyItems['quantite'].'"><br>
              <input type="button" name="modifier" id="modifier_'.$produit['id'].'" class="modifier" value="Modifier" data-id="'.$produit['id'].'" data-user="'.$idUser.'" data-idDel="'.$caddyItems['id'].'">
         </td>                                                
         <td>'.$produit['prix'].'€</td>
         <td>';
              if($produit['pourcent'] != 0)
              {
                   echo $produit['pourcent'].'%';
              }
              else{
                   echo '-';
              }
         echo'</td>
         <td>'.$total.'€</td>                               
    </tr>

    Mon Code JQuery (je vous place TOUT le traitement lié au panier) :
    Code JS : 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
    // Actualisation des quantités du caddy ou suppression de ce dernier si quantite < ou = 0
    $(document).ready( function()
    {
        // On créé une délégation d'événement sur TOUT le documents afin de toujours vérifier le click sur ce dernier et si le clic correspond au bouton "Modifier"
        $(document).on('click', ".modifier", function () 
        {   
            // On récupère l'ID du produit sur lequel on désire modifier la quantité          
            const idProduit = $(this).attr('data-id');
            // On récupère l'ID de l'utilisateur qui effectue cette modification
            const idUser = $(this).attr('data-user');
     
            // On récupère l'input number associé au bouton sur lequel on a cliqué pour valider la modification
            const idItem = $(this).attr('id'); 
            var recupId = document.getElementById(idItem);
            const inputQuantite = document.querySelector('input[id="quantite_' + recupId.dataset.id + '"]')
     
            if (inputQuantite) 
            {
                // On récupère la value de l'input number concerné
                let quantite = inputQuantite.value;
                let idDelete = $(this).attr('data-idDel');
     
                // On UPDATE la BDD avec la nouvelle quantité via une requête AJAX si quantite > 0
                if (quantite > 0)
                {
                    $.ajax(
                    {
                        type: "POST",
                        data: 'newQuantite='+quantite+'&idP='+idProduit+'&idU='+idUser,
                        url: "./assets/fonctions/modifQuantite.php",
                        // Si succès, on actualise la liste du panier
                        success: $('#caddyList'). load('index.php #caddyList')
                    });
                }
     
                // Sinon, on supprime le produit concerné du panier de l'utilisateur
                else
                {                
                    $.ajax(
                    {
                        type: "POST",
                        data: 'idI='+idDelete,
                        url: "./assets/fonctions/deleteProduit.php",
                        // Si succès, on actualise la liste du panier                    
                        success: $('#caddyList'). load('index.php #caddyList')
                    });               
                }
     
                return false;            
            }
        });
    }); // FIN ACTUALISATION CADDY
    (Alors oui, je mélange du JQuery et du JS, c'est pas très beau, mais ça fonctionne et j'améliorerais cela avec le temps.)
    Lorsque je modifie un produit avec une quantité supérieure à 0, tout fonctionne bien. Mon caddy s'actualise avec la nouvelle valeur et les nouveaux prix, pas de soucis avec ça.
    En revanche, lorsque j'inscris 0 ou un chiffre négatif dans l'input number, mon algo rentre bien dans le ELSE (j'ai testé avec des console.log) et l'actualisation du caddy a bien lieu, mais la requête n'est pas exécutée.


    Code PHP deleteProduit.php :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
         $idI = $_POST['idI'];
     
         $delete = $db->prepare('DELETE FROM caddy WHERE id = :idI');
         $delete->execute([
              'idI' => $idI
         ]) or die(print_r($db->errorInfo()));
     
         $delete->closeCursor();
    ?>
    D'ordinaire je fais mes requêtes comme ceci :

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $delete = $db->prepare('DELETE FROM caddy WHERE id = :idI');
    $delete->execute(array(
              'idI' => $idI));
    Mais ne fonctionnant pas, j'ai tenté tout ce que j'ai pu trouver sur le net, mais rien n'y fait.
    Je ne vois pas mon erreur...
    Parce que TOUT fonctionne, sauf la ligne qui n'est pas retirée de la BDD... C'est à n'y rien comprendre :s

    La connexion à ma BDD est ok. Les droits de suppression me semblent être bons car je me connecte en root.


    Si quelqu'un a la patience de me lire et de m'aider à comprendre, je suis preneur

    En attendant, je vous souhaite une très bonne soirée !

    Cordialement,
    Derko.

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    commencez par vérifier si la requete http est bien lancée. pour cela, vous pouvez utiliser l'onglet "Réseau" de la console de développement de votre navigateur.
    par exemple avec Firefox, faites Ctrl + Maj + E
    https://developer.mozilla.org/fr/doc...ur_r%C3%A9seau

    je voulais aussi vous prévenir qu'avec votre code actuel, un utilisateur malveillant peut vider les paniers de tous les clients. si jamais vous voulez plus d'aide sur ce point, n'hésitez pas à créer une nouvelle discussion une fois que le souci de cette discussion sera réglé.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Les plantes et l'informatique
    Inscrit en
    Juillet 2017
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Les plantes et l'informatique

    Informations forums :
    Inscription : Juillet 2017
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    Bonsoir Mathieu,

    la requête HTTP est bien lancée lorsque j'indique une quantité de 0 (ou inférieure) et que je clique sur mon bouton "modifier" :
    Nom : requeteHTTP.png
Affichages : 124
Taille : 3,2 Ko

    Pour ce qui est des utilisateurs malveillants, je pense que ce que vous cherchez à me dire c'est que l'on peut facilement modifier les ID des produits / utilisateurs / quantités via les method GET et POST c'est cela ?
    Je débute le JS / JQuery donc j'ai un peu de mal à voir les failles potentielles pour le moment, mais ça m'intéresse oui, et je serais curieux de trouver une solution à ce problème ! Donc avec plaisir pour travailler là dessus à vos côtés

    Merci pour votre intérêt et bonne nuit (j'imagine) !

    Derko.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Les plantes et l'informatique
    Inscrit en
    Juillet 2017
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Les plantes et l'informatique

    Informations forums :
    Inscription : Juillet 2017
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    Bon,

    après de longues recherches et d'analyse de mon code j'ai trouvé l'erreur...

    Je me connectais à ma BDD en déclarant la variable $bdd, et j'appelais ensuite ma requête sous la variable $db...

    J'ai honte d'avoir perdu plus de 5h la dessus...

    Mais au moins, tout fonctionne !

    Du coup, Mathieu, vous pouvez m'envoyer un message privé si vous souhaitez toujours m'expliquer comment modifier mon code pour éviter de potentiels actes de sabotages. Car je ne saurais pas comment nommer un post comme celui-ci ni où le mettre dans le forum. Donc pour éviter tout soucis, j'attends de vos nouvelles (si vous avez le temps et la motivation bien entendu)

    Je clôture le post actuel.

    Derko.

  5. #5
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    avez vous activé l'affichage de toutes les erreurs php ?
    https://www.php.net/manual/fr/errorf...display-errors
    https://www.php.net/manual/fr/errorf...rror-reporting
    c'est important pendant la phase de développement pour justement éviter de perdre des heures.

    ensuite quand il s'agit de requête http, vous pouvez cliquer dessus dans la console de développement et c'est à cet endroit que vous aurez dû voir l'erreur php s'afficher.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Les plantes et l'informatique
    Inscrit en
    Juillet 2017
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Les plantes et l'informatique

    Informations forums :
    Inscription : Juillet 2017
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    Oui, je suis tombé sur un lien qui indiquait comment activer toutes les erreurs PHP, et j'obtenais cette erreur :

    Undefined variable $db in <b>C:\MAMP\htdocs\1-myWebSite\assets\fonctions\deleteProduit.php</b> on line <b>33
    Uncaught Error: Call to a member function exec() on null in C:\MAMP\htdocs\1-myWebSite\assets\fonctions\deleteProduit.php:33
    Même avec ça, j'ai mis 1h pour voir de quoi il s'agissait... La fatigue !

  7. #7
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    pour le souci de sécurité, cela vient de l'appel des scripts qui peut être modifié par n'importe qui. quelqu'un pourrait donc appeler deleteProduit.php en essayant tous les identifiants en boucle.

    pour éviter cela, vous devez utilisez l'identifiant client stocké dans la session pour vérifier que la ligne du panier à supprimer correspond bien au client connecté.
    et de la même façon pour modifQuantite.php, ne passez pas l'identifiant client comme paramètre mais utilisez l'identifiant stocké dans la session.

  8. #8
    Membre à l'essai
    Homme Profil pro
    Les plantes et l'informatique
    Inscrit en
    Juillet 2017
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Les plantes et l'informatique

    Informations forums :
    Inscription : Juillet 2017
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    Bonjour Mathieu,

    Alors du coup j'avais simplifié mon code pour faciliter la recherche de mes erreurs en utilisant uniquement l'ID d'une ligne de ma table caddy.
    Mon véritable code est celui-ci :

    Code JS - AJAX :
    Code JS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    const idUDel = $(this).attr('data-user');
    const idPDel = $(this).attr('data-prod');
     
    $.ajax({
         type: "POST",
         data: 'idP='+idPDel+'&idU='+idUDel,
         url: "./assets/fonctions/deleteProduit.php",
         // Si succès, on actualise la liste du panier                    
         success: function() {
                updateCaddyList();
         }

    L'ID client que je récupère ici est en réalité $_SESSION['idUser'].
    Mais comme le client peut ajouter un produit à son panier, avant même de créer son compte ou de se connecter à celui-ci, j'utilise cette petite fonction lors de l'arrivée d'un utilisateur sur mon site :
    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
    // Tout en haut de mes pages 
    if (!isset($_SESSION['idVisiteur']) AND !isset($_SESSION['idUser']))
    {
         $_SESSION['idVisiteur'] = $boundary = md5(rand());
    }
     
    // Avant le caddy
    if(!isset($_SESSION['id']))
    {
         $idUser = $_SESSION['idVisiteur'];
    }
    else 
    {
         $idUser = $_SESSION['id'];
    }

    Si l'utilisateur décide de se connecter, alors l'idVisiteur se transforme en idUser et je modifie toutes les lignes du caddy ou l'ancien idVisiteur apparait pour le remplacer par son idUser.
    (il y a surement plus simple pour faire tout cela, notamment avec les cookies ou le cache navigateur, mais pour le moment je reste en BDD pour apprendre étant le seul utilisateur qui se connecte à mon site ^^)

    et ma fonction deleteProduit.php :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $idP = $_POST['idP'];
    $idU = $_POST['idU'];
     
    if($_SESSION['idVisiteur'] == $idU OR $_SESSION['id'] == $idU)
    {
            $delete = $bdd->prepare('DELETE FROM caddy WHERE idProduit = :idP AND idUser = :idU');
            $delete->execute([
                'idP' => $idP,
                'idU' => $idU
            ]) or die(print_r($db->errorInfo()));  
    }

    Idem sur ma fonction modifQuantite.php.

    Donc je pense qu'il n'y a plus de soucis à ce niveau la !

  9. #9
    Membre éclairé
    Homme Profil pro
    Urbaniste
    Inscrit en
    Août 2023
    Messages
    386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Août 2023
    Messages : 386
    Points : 788
    Points
    788
    Par défaut
    Bonjour,

    De manière taquine j'ai envie de demander
    que ce passe t'il si j'envoie qté=-100 sur ./assets/fonctions/modifQuantite.php ?

    Ce ne serait pas la même chose que d'appeler ./assets/fonctions/deleteProduit.php ?

    Je n'ai pas bien compris la mécanique derrière idVisiteur/idUser,
    il me semble qu'on bénéficie déjà d'un id de session unique.

    Vous apprendrez que dans le métier du commerce,
    on ne supprime jamais de ligne.
    On sait jamais, ça peut servir pour du retargeting,
    ou autres hallucinations de marketeux,
    mais bon, y parait que ça fait rentrer le pognon,
    ils ont sûrement raison.

    Bonne journée.

  10. #10
    Membre à l'essai
    Homme Profil pro
    Les plantes et l'informatique
    Inscrit en
    Juillet 2017
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Les plantes et l'informatique

    Informations forums :
    Inscription : Juillet 2017
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    Bonjour unanonyme,

    Citation Envoyé par unanonyme Voir le message
    De manière taquine j'ai envie de demander
    que ce passe t'il si j'envoie qté=-100 sur ./assets/fonctions/modifQuantite.php ?
    Ce ne serait pas la même chose que d'appeler ./assets/fonctions/deleteProduit.php ?
    Lorsque l'utilisateur envoi un chiffre inférieur ou égal à 0, on appel la fonction deleteProduit.php
    Si strictement supérieur à 0, on appelle la fonction modifQuantite.php

    Citation Envoyé par unanonyme Voir le message
    Je n'ai pas bien compris la mécanique derrière idVisiteur/idUser,
    il me semble qu'on bénéficie déjà d'un id de session unique.
    Je pars du principe que si l'utilisateur n'a pas envie de créer un compte sur mon site, il peut tout de même commander ses produits sans cela. Donc je lui attribue un ID visiteur. Si l'utilisateur possède un compte ou souhaite en créer un pour sauvegarder ses points de fidélités lors de sa commande, alors je lui attribue un id utilisateur unique lors de sa création de compte. Ce n'est peut-être pas la bonne manière de faire, ou très certainement inutile j'en conviens, mais pour le moment ça me va comme cela. Je reviendrais certainement dessus mais ce n'est pas ma priorité pour le moment.


    Citation Envoyé par unanonyme Voir le message
    Vous apprendrez que dans le métier du commerce,
    on ne supprime jamais de ligne.
    On sait jamais, ça peut servir pour du retargeting,
    ou autres hallucinations de marketeux,
    mais bon, y parait que ça fait rentrer le pognon,
    ils ont sûrement raison.
    Cool, mais je ne compte pas travailler dans le commerce (à l'échelle ou vous l'entendez). En réalité je suis en pleine création d'entreprise agricole (culture de plantes PPAM) et n'ayant que peu de moyens à ma disposition, j'ai décidé de réaliser moi-même mon site vitrine. Le côté "vente en ligne" n'arrivera que plus tard. J'utilise juste mon temps libre entre 2 rendez-vous pour avancer dans l'apprentissage du développement web afin de pouvoir, par la suite, proposer une petite partie vente (simple mais fonctionnelle). Par conséquent, pardonnez-moi l'expression, je me fou royalement du côté collecte de données et je refuse de rentrer dans ce jeu la. Mon but étant la reconnaissance de mes futurs clients vis à vis de mes produits et la satisfaction de pouvoir vivre dignement de ma passion. L'argent ne m'intéresse que dans la mesure où il me permet de vivre.

    Merci quand même pour votre intérêt.

    Cordialement,
    Derko.

  11. #11
    Membre éclairé
    Homme Profil pro
    Urbaniste
    Inscrit en
    Août 2023
    Messages
    386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Août 2023
    Messages : 386
    Points : 788
    Points
    788
    Par défaut
    Bonjour,

    vous feriez plus de pognon à faire la même chose pour des marketeux.

    Lorsque l'utilisateur envoi un chiffre inférieur ou égal à 0, on appel la fonction deleteProduit.php
    Si strictement supérieur à 0, on appelle la fonction modifQuantite.php
    ça c'est la partie envoi de données, mais je faisait référence à la partie réception.
    En fait, vous vous concentrez sur le cas idéal où l'utilisateur fait uniquement ce que vous avez pré mâché pour lui,
    dans la vraie vie, il y a toujours des petits malins pour chercher les failles, du coup, vous êtes obligés de blinder côté serveur.

    Finalement, puisque votre projet n'est pas de monter des solutions commerce,
    pourquoi ne pas vous être tourné vers des solutions open source ?

    Bonne journée.

  12. #12
    Membre à l'essai
    Homme Profil pro
    Les plantes et l'informatique
    Inscrit en
    Juillet 2017
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Les plantes et l'informatique

    Informations forums :
    Inscription : Juillet 2017
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par unanonyme Voir le message
    ça c'est la partie envoi de données, mais je faisait référence à la partie réception.
    En fait, vous vous concentrez sur le cas idéal où l'utilisateur fait uniquement ce que vous avez pré mâché pour lui,
    dans la vraie vie, il y a toujours des petits malins pour chercher les failles, du coup, vous êtes obligés de blinder côté serveur.
    J'en suis conscient mais comme précisé, j'apprends. Donc ça viendra.

    Citation Envoyé par unanonyme Voir le message
    Finalement, puisque votre projet n'est pas de monter des solutions commerce,
    pourquoi ne pas vous être tourné vers des solutions open source ?
    Parce que j'aime faire les choses par moi-même, apprendre et comprendre, quitte à "perdre des heures".

    Citation Envoyé par unanonyme Voir le message
    vous feriez plus de pognon à faire la même chose pour des marketeux.
    Votre attitude me déplait fortement. Je ne veux plus de votre aide. Merci d'avoir essayé, mais passez votre chemin svp.

    Cordialement,
    Derko.

  13. #13
    Membre éclairé
    Homme Profil pro
    Urbaniste
    Inscrit en
    Août 2023
    Messages
    386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Août 2023
    Messages : 386
    Points : 788
    Points
    788
    Par défaut
    Bonjour,

    ça me plaît pas beaucoup plus, c'est "juste" factuel.

    Bon courage et bonne chance dans votre entreprise.

    Bonne journée.

  14. #14
    Membre à l'essai
    Homme Profil pro
    Les plantes et l'informatique
    Inscrit en
    Juillet 2017
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Les plantes et l'informatique

    Informations forums :
    Inscription : Juillet 2017
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    Merci, à vous également

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

Discussions similaires

  1. [AJAX] J'ai un script AJAX qui ne fonctionne pas
    Par beegees dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 29/10/2008, 16h21
  2. [AJAX] AJAX qui ne fonctionne pas sous IE
    Par tavarlindar dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 30/05/2008, 11h01
  3. [AJAX] Méthode sous Ajax qui ne fonctionne qu'une fois?
    Par patrice419 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/04/2007, 13h19
  4. [SQL] un create table qui devrait fonctionner
    Par klerdesign dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 28/06/2006, 14h05
  5. [SQL] Requête à jointure qui ne fonctionne pas
    Par Bensor dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/12/2004, 16h10

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