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 :

Copier une table vers une autre et classer avec PHP


Sujet :

PHP & Base de données

  1. #1
    Membre habitué Avatar de Alexandrebox
    Profil pro
    Inscrit en
    Août 2006
    Messages
    635
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 635
    Points : 153
    Points
    153
    Par défaut Copier une table vers une autre et classer avec PHP
    Bonjour tout le monde,
    J'aimerais copier une table (web) vers une autre table (newsletter). Là où ça se complique, c'est que je voudrais créer 6 groupes dans la nouvelle table. (Groupe A, Groupe B, Groupe C, Groupe D, Groupe E, Groupe F). Le choix de classement n'est pas imposé.
    Ce qui veut dire que je prends les 200 premiers enrégistrements par harsard et je les classe dans le Groupe A . Ainsi de suite. Comme je n'arrive pas à le faire d'une manière automatique, j'ai voulu le faire manuellement. Exécuter d'abord la condition du groupe A, modifier le champ pass de la table à copier pour ne plus sélectionner les données déjà enrégistrées, Modifier le nom du groupe et exécuter de nouveau.

    ça me paraît logique sauf que lorsque j'exécute ce code, ça m'enrégistre que 16, 26 54 enrégistrements mais jamais le chiffre 200 que j'ai fixé. En plus, il me donne ceci comme message d'erreur. "You have an error in your SQL syntax near 'kelly972_272@hotmail.com', 'Suisse')' at line 1". Rassurez-vous pas d'erreur. Je crois c'est au niveau de la logique que ça marche pas.

    Quelqu'un pourra m'aider à corriger ce code?
    Ou quelqu'un pourra m'aider à faire un code avec une boucle qui fait tout d'un coup?

    Voici le code
    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
    <?php 
    include('fichhier_connexion.php');
    //sélectionner les données de la table Web à copier
    $query_Recordset2 = "SELECT * FROM web WHERE pass != 'Deja envoye' order by rand()limit 200";
    $Recordset2 = mysql_query($query_Recordset2, $idConnex) or die("Problème lors de votre requête!");
    $res= mysql_numrows($Recordset2);
    $i=0;
    while($i < $res){
    $row_Recordset2 = mysql_fetch_assoc($Recordset2);
    $ID = $row_Recordset2['ID'];
    $nom = $row_Recordset2['nom'];
    $login = $row_Recordset2['login'];
    $ville = $row_Recordset2['ville'];
    $groupe = "Groupe A";
    $controle = "Deja envoye";
    $pass = $row_Recordset2['pass'];
     
     
    //Copier la table web et ajouter ses données à la table newsletter
    $ajoutDonnee = "INSERT INTO newsletter(sousrubrique, nom, email, ville) VALUES('$groupe', '$nom', '$login', '$ville')";
    mysql_query($ajoutDonnee, $idConnex) or die (mysql_error());
     
     
    //Modifier le champ pass de la table web pour que cette donnée ne soit plus copiée.
    $modifDonnee = "UPDATE web SET pass = '$controle' WHERE ID = '$ID'";
    mysql_query($modifDonnee, $idConnex) or die (mysql_error());
     
    }
    $i++;
     
    echo "Traitement effectué";
    ?>
    Je vous remercie beaucoup

  2. #2
    Membre éclairé
    Avatar de genova
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 487
    Points : 790
    Points
    790
    Par défaut
    Salut, tu peux utiliser cette syntaxe mysql pour copier le contenu d'une table vers une autre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE TABLE nouvelle_table SELECT * FROM ancienne_table

  3. #3
    Membre habitué Avatar de Alexandrebox
    Profil pro
    Inscrit en
    Août 2006
    Messages
    635
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 635
    Points : 153
    Points
    153
    Par défaut
    Merci, c'est gentil mais ce n'es pas de ça que je parle. C'est un peu plus compliqué que ça. Merci qu'en même

  4. #4
    Membre habitué Avatar de galak63
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 126
    Points : 146
    Points
    146
    Par défaut
    ce que tu peux faire c'est créer un tableau contenant les noms de tes groupes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tab_groupes = array("Groupe A","Groupe B" ,... );
    Et dans ta boucle tu choisis le groupe en fonction de l'index courant (exemple pour 5 groupes) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $groupe = $tab_groupes[$i % 5];
    Comme çà chaque enregistrement sera dispatché dans un groupe différent à chaque itération

  5. #5
    Membre habitué Avatar de Alexandrebox
    Profil pro
    Inscrit en
    Août 2006
    Messages
    635
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 635
    Points : 153
    Points
    153
    Par défaut
    Merci pour ton explication. Mais comme je suis débutant, j'ai du mal à comprendre. Peux-tu me donner un exemple avec mon code stp?

  6. #6
    Membre habitué Avatar de galak63
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 126
    Points : 146
    Points
    146
    Par défaut
    fais EXACTEMENT ce que j'ai marqué et c'est ok

  7. #7
    Membre habitué Avatar de Alexandrebox
    Profil pro
    Inscrit en
    Août 2006
    Messages
    635
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 635
    Points : 153
    Points
    153
    Par défaut
    Ce que tu ne comprends pas, c'est que d'après mon code, je ne sais même pas où ajouter ce que tu as écrit.

    Dans la boucle. Oui ça j'ai compris.

    Voici le code:
    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
    $query_Recordset2 = "SELECT * FROM web ";
    $Recordset2 = mysql_query($query_Recordset2, $idConnex) or die("Problème lors de votre requête!");
    $res= mysql_numrows($Recordset2);
    $tab_groupes = array("Groupe A","Groupe B","Groupe C", "Groupe D", "Groupe E" );
    for($i=0; $i < $res; $i++){
     
    $row_Recordset2 = mysql_fetch_assoc($Recordset2);
    $ID = $row_Recordset2['ID'];
    $nom = $row_Recordset2['nom'];
    $login = $row_Recordset2['login'];
    $ville = $row_Recordset2['ville'];
    $controle = "Mon Controle";
    $pass = $row_Recordset2['pass'];
     
    $sousrubrique = $tab_groupes[$i % 5];
     
    //Ajouter des donnée
    $ajoutDonnee = "INSERT INTO newsletter(sousrubrique, nom, email, ville) VALUES('$groupe', '$nom', '$login', '$ville')";
    mysql_query($ajoutDonnee, $idConnex) or die (mysql_error());
     
    }
    Merci à toute bonne âme

  8. #8
    Membre habitué Avatar de Alexandrebox
    Profil pro
    Inscrit en
    Août 2006
    Messages
    635
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 635
    Points : 153
    Points
    153
    Par défaut
    Le code marche sauf que le message d'erreur suivant s'affiche et que seulement 65 enrégistrements ajoutés au lieu de 1200
    Voici le message d'erreur
    You have an error in your SQL syntax near 'kelly972_272@hotmail.com', 'Sannois France')' at line 1
    Voici le code
    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
    $query_Recordset2 = "SELECT * FROM web ";
    $Recordset2 = mysql_query($query_Recordset2, $idConnex) or die("Problème lors de votre requête!");
    $res= mysql_numrows($Recordset2);
    $tab_groupes = array("Groupe A","Groupe B","Groupe C", "Groupe D", "Groupe E" );
    for($i=0; $i < $res; $i++){
     
    $row_Recordset2 = mysql_fetch_assoc($Recordset2);
    $ID = $row_Recordset2['ID'];
    $nom = $row_Recordset2['nom'];
    $login = $row_Recordset2['login'];
    $ville = $row_Recordset2['ville'];
    $controle = "Mon Controle";
    $pass = $row_Recordset2['pass'];
     
    $groupe = $tab_groupes[$i % 5];
     
     
     
    //Ajouter des donnée
    $ajoutDonnee = "INSERT INTO newsletter(sousrubrique, nom, email, ville) VALUES('$groupe', '$nom', '$login', '$ville')";
    mysql_query($ajoutDonnee, $idConnex) or die (mysql_error());
     
    }
    D'avance merci

Discussions similaires

  1. copier une table d'une BDD dans une table d'une autre BDD
    Par faniette dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/05/2013, 11h17
  2. [VB.Net] Comment copier une DataRow d'une table vers une autre ?
    Par YLF dans le forum Accès aux données
    Réponses: 7
    Dernier message: 06/09/2012, 00h23
  3. Réponses: 1
    Dernier message: 19/10/2011, 13h13
  4. Copier les enregistrements d'une table vers une table d'une autre DB
    Par karinette21 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 18/11/2008, 22h50
  5. Copier un enregistrement d'une table vers une autre
    Par le lynx dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 04/01/2006, 10h56

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