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 :

Ajax et BDD


Sujet :

PHP & Base de données

  1. #1
    Membre du Club Avatar de xender
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 93
    Points : 44
    Points
    44
    Par défaut Ajax et BDD
    Bonjour,

    je ne comprends pas pourquoi m'a boucle s'execute 2 fois :-S :
    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
    <?php require_once('connexion.php'); ?>
    <?php
    header('Content-Type: text/xml;charset=utf-8');
    echo(utf8_encode("<?xml version='1.0' encoding='UTF-8' ?><options>"));
    if (isset($_GET['debut'])) {
        $debut = utf8_decode($_GET['debut']);
    } else {
        $debut = "";
    }
    $debut = strtolower($debut); //mise en minuscules
    mysql_select_db("dbprotect", $dbprotect);
    $ref_piece = mysql_query("SELECT ref_piece FROM `posts_commande` WHERE ref_piece LIKE '".$_GET["debut"]."%'");
    $liste = mysql_fetch_array($ref_piece); //assignation des valeurs trouvée dans un tableau
     
    function generateOptions($debut,$liste) {
        $MAX_RETURN = 10; //loguer maxi de la liste
        $i = 0;
        foreach ($liste as $element) {
            if ($i<$MAX_RETURN && substr($element, 0, strlen($debut))==$debut) {
            echo $element;
                echo(utf8_encode("<option>".$element."</option>"));
                $i++;
            }
        }
    }
     
    generateOptions($debut,$liste);
     
    echo("</options>");
    ?>
    Le résultat avec comme adresse :
    http://127.0.0.1/autocompletion-sour...ns.php?debut=3

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      <?xml  version="1.0" encoding="UTF-8" ?> 
      <a href="http://www.developpez.net/forums/#" target="_blank">-</a> <options>
        3456 
        <option>3456</option> 
     
       3456 
        <option>3456</option> 
     
       </options>

    Alors que dans ma base il n'y a qu'un seul enregistrement qui correspond!
    Code SQL : 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
    -- 
    -- Structure de la table `posts_commande`
    -- 
     
    CREATE TABLE `posts_commande` (
      `id_commande` int(11) NOT NULL default '0',
      `ref_piece` varchar(32) NOT NULL default '',
      `quantite` int(5) NOT NULL default '0',
      `designation` varchar(64) NOT NULL default '',
      `ref_appareil` varchar(32) NOT NULL default '',
      `num_fabric` varchar(32) NOT NULL default ''
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
     
    -- 
    -- Contenu de la table `posts_commande`
    -- 
     
    INSERT INTO `posts_commande` VALUES (200, '3456', 1, 'porte', '1234', '2002');
    INSERT INTO `posts_commande` VALUES (201, '1234', 1, 'Joint', '89011', '2001');

    Pouvez-vous me dire mon erreur svp?
    Merci

    A bientôt

  2. #2
    Membre confirmé Avatar de stunti
    Inscrit en
    Mai 2006
    Messages
    520
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    Points : 594
    Points
    594
    Par défaut
    Si tu fais un mysql_getNumRows apres l'execution de ta requete, il te donne une ou deux lignes ?
    If it's not broken, don't fix it.
    BiliBa Built on top of Zend Framework

  3. #3
    Membre du Club Avatar de xender
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 93
    Points : 44
    Points
    44
    Par défaut
    Une seule c'est bien ça le pb que je ne comprends pas :-(

    voici l'exemple de code ajax que j'utilise :
    http://dcabasson.developpez.com/arti...ion-pas-a-pas/

  4. #4
    Membre confirmé Avatar de stunti
    Inscrit en
    Mai 2006
    Messages
    520
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    Points : 594
    Points
    594
    Par défaut
    Et si tu fais un print_r de liste dans ta fonction ?
    If it's not broken, don't fix it.
    BiliBa Built on top of Zend Framework

  5. #5
    Membre du Club Avatar de xender
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 93
    Points : 44
    Points
    44
    Par défaut
    ça donne ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ...
    function generateOptions($debut,$liste) {
        $MAX_RETURN = 10; //loguer maxi de la liste
        $i = 0;
        foreach ($liste as $element) {
            echo print_r($liste);
            if ($i<$MAX_RETURN && substr($element, 0, strlen($debut))==$debut) {
                echo(utf8_encode("<option>".$element."</option>"));
                $i++;
            }
        }
    }
    ...

    Résultat :
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     <?xml version="1.0" encoding="UTF-8"  ?> 
      <a href="http://www.developpez.net/forums/#" target="_blank">-</a> <options>
        Array ( [0] => 1234  [ref_piece] => 1234 ) 1 
        <option>1234</option> 
     
       Array ( [0] => 1234  [ref_piece] => 1234 ) 1 
        <option>1234</option> 
     
       </options>

  6. #6
    Membre confirmé Avatar de stunti
    Inscrit en
    Mai 2006
    Messages
    520
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    Points : 594
    Points
    594
    Par défaut
    Donc c normal que ca genere deux ligne car tu as le retour indexe par le numero de la colone de retour et par le nom de celle ci.
    donc 2 valeurs.
    If it's not broken, don't fix it.
    BiliBa Built on top of Zend Framework

  7. #7
    Membre du Club Avatar de xender
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 93
    Points : 44
    Points
    44
    Par défaut
    pas trop compris :-S comment je fais pour n'avoir qu'un ligne alors?

    Merci de ton aide.

  8. #8
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Points : 557
    Points
    557
    Par défaut
    ce qu'il veut dire, c'est qu'à cause de ton mysql_fetch_array, tu récupères deux index pour une même donnée, à savoir l'index numérique qui correspond à la position de la colonne, et l'index alphanumérique qui correspond au nom de la colonne dans la DB.

    essaye voir avec un mysql_fetch_assoc (pour n'avoir que l'index alphanum) ou mysql_fetch_row (pour n'avoir que l'index numérique) suivant le cas que tu préfères.
    Merci à Microsoft pour avoir transformé un métier relativement terne et basé sur une approche bêtement technique et rigoureuse des faits, en challenge quotidien, nécessitant une remise en question permanente à l'échelle du quart d'heure

  9. #9
    Membre du Club Avatar de xender
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 93
    Points : 44
    Points
    44
    Par défaut
    Génial ! ça marche ! Merci à tous pour votre aide !

    le code qui marche :
    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
    <?php require_once('connexion.php'); ?>
    <?php
    header('Content-Type: text/xml;charset=utf-8');
    echo(utf8_encode("<?xml version='1.0' encoding='UTF-8' ?><options>"));
    if (isset($_GET['debut'])) {
        $debut = utf8_decode($_GET['debut']);
    } else {
        $debut = "";
    }
    $debut = strtolower($debut); //mise en minuscules
    mysql_select_db("dbprotect", $dbprotect);
    $ref_piece = mysql_query("SELECT ref_piece FROM `posts_commande` WHERE ref_piece LIKE '".$_GET["debut"]."%'");
    $liste = mysql_fetch_assoc($ref_piece); //assignation des valeurs trouvée dans un tableau
     
    function generateOptions($debut,$liste) {
        $MAX_RETURN = 10; //loguer maxi de la liste
        $i = 0;
        foreach ($liste as $element) {
            if ($i<$MAX_RETURN && substr($element, 0, strlen($debut))==$debut) {
                echo(utf8_encode("<option>".$element."</option>"));
                $i++;
            }
        }
    }
    generateOptions($debut,$liste);
     
    echo("</options>");
    ?>

  10. #10
    Membre du Club Avatar de xender
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 93
    Points : 44
    Points
    44
    Par défaut
    RE salut a tous :-D

    voilà j'ai fais quelques tests et malheureusement, il reste quelques bugs :

    quand il y a plusieurs enregistrements ressemblant dans ma base, il n'y en a qu'un qui est récupérée dans ma page :

    code de la page :
    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
    <?php require_once('connexion.php'); ?>
    <?php
    header('Content-Type: text/xml;charset=utf-8');
    echo(utf8_encode("<?xml version='1.0' encoding='UTF-8' ?><options>"));
    if (isset($_GET['debut'])) {
        $debut = utf8_decode($_GET['debut']);
    } else {
        $debut = "";
    }
    $debut = strtolower($debut); //mise en minuscules
    mysql_select_db("dbprotect", $dbprotect);
    $ref_piece = mysql_query("SELECT ref_piece FROM `posts_commande` WHERE ref_piece LIKE '".$_GET["debut"]."%'");
    $liste = mysql_fetch_assoc($ref_piece); //assignation des valeurs trouvée dans un tableau
     
    function generateOptions($debut,$liste) {
        $MAX_RETURN = 10; //loguer maxi de la liste
        $i = 0;
        foreach ($liste as $element) {
        print_r($liste);
            if ($i<$MAX_RETURN && substr($element, 0, strlen($debut))==$debut) {
                echo(utf8_encode("<option>".$element."</option>"));
                $i++;
            }
        }
    }
    generateOptions($debut,$liste);
     
    echo("</options>");
    ?>
    lien utilisé :
    http://127.0.0.1/autocompletion-sour...ns.php?debut=3

    affichage:
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     <?xml version="1.0" encoding="UTF-8"  ?> 
      <a href="http://www.developpez.net/forums/#" target="_blank">-</a> <options>
        Array ( [ref_piece] =>  3456 ) 
        <option>3456</option> 
     
       </options>
    Alors que dans ma base il existe deux ref commençant par 3 :-(
    3456 et 3546

    cette page vas me servir pour afficher les ref existante de la base dans un liste en dessous d'un input.

    Dernière question :
    Comment puis-je supprimer les doublons de ref dans l'affichage.

    merci encore pour votre aide et je vous félicite encore pour votre soutiens qui me permet de finir mon projet de fin d'étude qui validera mon année

    A bientôt

  11. #11
    Membre du Club Avatar de xender
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 93
    Points : 44
    Points
    44
    Par défaut
    un petit coup de main svp?
    merci

  12. #12
    Membre confirmé Avatar de stunti
    Inscrit en
    Mai 2006
    Messages
    520
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    Points : 594
    Points
    594
    Par défaut
    il faut boucler sur le mysql_fetch_assoc generalement avec un while car cela retourne FALSE quand il n'y a plus de resultat
    If it's not broken, don't fix it.
    BiliBa Built on top of Zend Framework

Discussions similaires

  1. Upload d'image ajax, ID & BDD
    Par jv-boy dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 02/06/2011, 10h49
  2. [PHP 5.0] [conception] Un projet php (POO-BDD-Ajax-CSS)
    Par cryptom dans le forum Langage
    Réponses: 3
    Dernier message: 10/04/2009, 01h41
  3. script de verification d'une bdd avec ajax
    Par Invité dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/12/2008, 22h39
  4. [AJAX] Ecriture de balise html dans une BDD avc AJAX
    Par togzz dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/11/2008, 10h59
  5. [AJAX] Vérifier des données dans une BDD avec AJAX
    Par mwech dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 22/10/2008, 15h13

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