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

Requêtes MySQL Discussion :

Problème sur une requete d'update


Sujet :

Requêtes MySQL

  1. #1
    Nouveau membre du Club
    Inscrit en
    Septembre 2009
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 56
    Points : 30
    Points
    30
    Par défaut Problème sur une requete d'update
    Bonjour tout le monde !

    Je tente "l'appel à un ami", car j'ai un problème sur une requête qui m'embête depuis pas mal de temps

    Pour la petite histoire j'ai une table "contact" avec 1000 inserts

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Contenu de la table "Contact"
     
    Champs : email, nom, prenom, promo
    et j'en ai une autre "codeP" avec 200 codes promo

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Contenu de la table "codeP"
    Champs : id, code

    Mon but : donner un code promo aux 200 premières adresses de ma table "Contact"


    J'ai donc fait ça :

    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
     
     
    $codeP = "select code  FROM codeP" ;
     
    $countCodeP = count($codeP);
     
    if($codeP != false ){
     
             for ($j = 0; $j < $countCodeP; $j++) {
     
              $insertCodeP = $codeP[$j]['code'];
     
              UPDATE Contact SET promo ="'.$insertCodeP.' ");
    	}
     
    }

    Dans le global ça fonctionne, mais il met à chaque fois le dernier code pour tout le monde au lieu de répartir l'ensemble des codes sur les 200 premiers contacts.

    En plus, comment m'assurer que seuls les 200 premiers auront un code et qu'il ne va pas tourner en boucle =(

    Je vous avouerais que je ne sais pas comment faire =(

    Est-ce que quelqu'un aurait une idée ?

    Merci d'avance pour votre gentillesse

  2. #2
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2007
    Messages : 43
    Points : 22
    Points
    22
    Par défaut
    Bonjour,

    c'est logique que la modification s'applique sur tous les contacts,, car il n'y a aucune clause WHERE au UPDATE

    Je pense que ta table contact n'est pas assez précise, il faudrait un id pour identifier distinctement chaque contact.

    Voilà ce que je te propose :
    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
     
     
    $codeP = "select code  FROM codeP" ;
     
    $countCodeP = count($codeP);
     
    IF($codeP != false ){
     
             FOR ($j = 0; $j < $countCodeP; $j++) {
     
              $insertCodeP = $codeP[$j]['code'];
     
              UPDATE Contact SET promo ="'.$insertCodeP.' ORDER BY id LIMIT ".$j.", 1");
    	}
     
    }

    Donc en gros avec le ORDER BY id tu tries les contacts suivant ton souhait, cela peut être via un champs date pour les 200 premiers ou derniers.
    Le ORDER BY id LIMIT ".$j.", 1" te permet de sélectionner le contact n qui correspond à un élément de ta boucle (ici $j) et de limiter la modification à un seul élément.

    Par contre, n'ayant pas trop compris en quel langage tu essaies de développer, je ne pourrai pas être plus précis.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Septembre 2009
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 56
    Points : 30
    Points
    30
    Par défaut
    Bonjour Couscouss sensei !

    Tout d'abord, merci de vouloir m'aider, c'est très gentil à toi !!

    J'ai testé la requête en base, toute seule :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE Contact SET promo ="6984"  ORDER BY id LIMIT 900, 1
    mais il semblerait que php myadmin n'apprécie pas le ", 1" =(

    Sais-tu pourquoi?

  4. #4
    Nouveau membre du Club
    Inscrit en
    Septembre 2009
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 56
    Points : 30
    Points
    30
    Par défaut
    Autrement, j'ai oublié de préciser un truc

    Au début je disais que ma table "contact" contenait 1000 inserts. Mais en fait c'est le nombre d'inserts max qu'elle aura à la fin.
    Là pour le moment j'ai à peine 10 contacts.

    L'idée est donc d'attribuer un code promo au fur et à mesure que la table se remplit, et une fois que les codes ont été attribués on stoppe tout.

    Mais ça, je ne sais vraiment pas comment faire =(

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2007
    Messages : 43
    Points : 22
    Points
    22
    Par défaut
    Apparemment plusieurs solutions sont possibles.

    A quoi correspond le 900 ? car je pensais que le nombre de codes promo était limité à 200 ?
    Normalement tu aurais dû avoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    UPDATE Contact SET promo ="[CODE_PROMO_1]"  ORDER BY id LIMIT 1, 1;
    UPDATE Contact SET promo ="[CODE_PROMO_2]"  ORDER BY id LIMIT 2, 1;
    ...
    UPDATE Contact SET promo ="[CODE_PROMO_n]"  ORDER BY id LIMIT n, 1;
    Affiche-nous l'erreur retournée stp

  6. #6
    Membre averti
    Profil pro
    Administrateur
    Inscrit en
    Mai 2008
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 237
    Points : 433
    Points
    433
    Par défaut
    Il faut juste modifier la structure de la table comme ceci :

    Contacts (id_contact, email, nom, prenom)
    Promos (id_contact, promo)

Discussions similaires

  1. Problème sur une requete
    Par boby15000 dans le forum Windows Forms
    Réponses: 10
    Dernier message: 16/05/2008, 09h28
  2. Problème sur une requete : erreur 1054
    Par fulgaro dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/11/2007, 11h32
  3. Probleme sur une requete d'update
    Par trinea dans le forum Langage SQL
    Réponses: 3
    Dernier message: 17/08/2007, 19h57
  4. Problème sur une requete avec champ date
    Par islande dans le forum Access
    Réponses: 2
    Dernier message: 21/09/2006, 19h39
  5. Réponses: 2
    Dernier message: 11/01/2006, 15h49

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