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 :

boucle, array et insert [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
    Inscrit en
    Septembre 2009
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 56
    Par défaut boucle, array et insert
    Bonjour,


    Je vous écris car j'ai un petit problème bien bête mais pour lequel je ne trouve pas de solution =(
    Il est tellement bete que beaucoup vont rire mais bon je me lance=(

    J'ai à la base un array :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $test =  array('coque','mat','voile');

    Et en parallèle j'ai un champs que je parcours pour voir si je retrouve coque, mat, voile

    Je fais donc une boucle pour parcourir mon array et voir avec preg_match si je retrouve dans $lendroitOuJeCherche une des 3 valeurs.

    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
     for($i=0;$i<count($test);$i++)                             
        {
            if(preg_match("#".$test[$i]."#",$lendroitOuJeCherche))          
            { 
                $recupTest = $test[$i];        
     
           }
     
    une fois que je trouve pour chaque ligne la coque, mat, voile associé je l'insère en BDD  
     
                    $sql = "INSERT INTO maTable (`champs1` ,`champs2` , `champs3` , `champs4` , `champs5`)VALUES ('','valueA','valueB','valueC','$recupTest') ";
     
    			   }//fin for test
     
                     $insert = mysql_query($sql);

    Mais voila a chaque fois on m'insére en BDD que la premiere value à savoir "coque" alors que pour chaque champs j'ai bien une valeur différentes

    je suppose que cela vient de ma boucle mais rien n'y fait . Si je place l'accolade de la fin du for apres le "insert" j'ai bien une valeur differente enregistré en BDD mais 3 fois =(

    si je la place avant j'ai tout le temps la même valeur enregistré=(

    quelqu'un aurait-il une idée=( je patauge

    merci d'avances pour votre aide

  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
    C'est pourtant bien ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $test =  array('coque','mat','voile');
    foreach ($test as $value) {           
            if(preg_match("#".$value."#",$lendroitOuJeCherche))          
            { 
                $sql = "INSERT INTO maTable (`champs1` ,`champs2` , `champs3` , `champs4` , `champs5`)VALUES ('','valueA','valueB','valueC',$value) ";
                $insert = mysql_query($sql);
           }
    (j'utilise une boucle foreach c'est plus efficace)
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre expérimenté
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Par défaut
    En fait, si je comprends bien, tu veux qu'il se passe la chose suivante:

    Si dans ton $lendroitOuJeCherche, il y a "coque" et "mat", tu veux que ça insère ça dans la base de données, mais sur une seule ligne. En supposant que chaque champs1, champs2, champs3 est destiné à une valeur, je m'y prendrais de la façon suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $test =  array('coque','mat','voile');
    $champs = array("", "", "", "");
     
    foreach ($test as $value) {           
            if(preg_match("#".$value."#",$lendroitOuJeCherche))          
            { 
                $champs[$i] = $value;
     
           }
    }
     
    $sql = "INSERT INTO maTable (`champs1` ,`champs2` , `champs3` , `champs4` , `champs5`)VALUES ('','$champs[0]','$champs[1]','$champs[2]','$champs[3]') ";
    $insert = mysql_query($sql);
    Je doute que ça soit exactement ce que tu veuilles faire (notamment, puisque le tableau $champs est plus grand que $test, sa dernière case sera toujours vide puisqu'on boucle sur la taille du premier). En contrepartie, si tu pouvais nous expliquer exactement comment tu veux que ces trois valeurs se retrouvent dans la BD, cela aiderait à fournir une réponse plus précise. En attendant, j'espère que cet exemple t'aura aiguillé sur une piste intéressante.

    Osu

  4. #4
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 56
    Par défaut
    merci beaucoup !!!!!!!

    tout marche avec le foreach j'ai arrangé tous mes problèmes !!!!

    un grand merci !!!

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

Discussions similaires

  1. [MySQL] Array et insert dans mysql
    Par yamatoshi dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 02/12/2009, 18h54
  2. Aide sur les boucles ARRAY
    Par angel26 dans le forum SAS Base
    Réponses: 1
    Dernier message: 16/11/2009, 17h36
  3. [MySQL] amelioration boucle array
    Par toulousain3117 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 31/05/2009, 19h02
  4. [MySQL] Boucle Array Php
    Par toulousain3117 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 29/05/2009, 00h13
  5. boucle partielle pour insertion virgule
    Par olivier80 dans le forum Langage
    Réponses: 3
    Dernier message: 10/09/2006, 19h55

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