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 :

Déplacer un enregistrement d'une table vers une autre [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 23
    Points : 11
    Points
    11
    Par défaut Déplacer un enregistrement d'une table vers une autre
    Voici mon nouveau problème...
    J'ai créé un formulaire qui affiche le contenu d'une table . J'ai une colonne avec des checkbox, dont la valeur et le numéro ID de l'enregistrement, et j'aimerais déplacer les enregistrements cochés vers une autre table. (les 2 tables sont dans la même base).

    Voici le code de ma checkbox :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<td width="20px" ><input name="suppr" type="checkbox" value="'.$row["id"].'"></td>';
    Table d'origine = courrier_recu
    Table de destination = suppr_courrier_recu

  2. #2
    Membre averti Avatar de nicoaix
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 571
    Points : 362
    Points
    362
    Par défaut
    Voici ce que tu pourrais faire (à toi d'adapter en fonction du nombre et des noms des champs de tes table:
    Cette solution suppose que le champ 'id' de la table courrier_reçu siot celui utilisé pour le nom des checkbox...
    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
    <?php
          $sql = "SELECT * FROM  courrier_recu";
          $query = mysql_query($sql) or die ("Impossible d'exécuter la requête : ".$sql);
          $numrow = mysql_num_rows($query);
     
          for($i=0;$i<$numrow;$i++){
                $id = mysql_result($query,$i,'id');
                $champ1 = mysql_result($query,$i,'champ1');
                $champ2 = mysql_result($query,$i,'champ2');
     
                            $nombox = 'checkbox'.$id;
                            $box = $_POST[$nombox];
                            if($box == 'on'){
                                  //Insertion dans la 2ème table
                                  $sql2 = "INSERT INTO suppr_courrier_recu ('id', 'champ1', 'champ2') VALUES ('".$id."','".$champ1."','".$champ2."');"
                                  $req2 = mysql_query($sql2) or die('Erreur SQL : <br />'.$sql2);
                                  //Suppression dans la 1ère table
                                 $sql3 ="DELETE FROM  courrier_recu WHERE 'id'='".$id."';"
                                  $req3 = mysql_query($sql3) or die('Erreur SQL : <br />'.$sql3);
                }
          }
    ?>

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 23
    Points : 11
    Points
    11
    Par défaut
    Merci, je test ça de suite.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 23
    Points : 11
    Points
    11
    Par défaut
    Une petite erreur apparemment, mais je ne la comprends pas...

    Notice: Undefined index: checkbox1 in c:\program files\easyphp1-8\www\del.php on line 30
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    $box = $_POST[$nombox];
    ?>

  5. #5
    Membre expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Points : 3 001
    Points
    3 001
    Par défaut
    Ca veut dire que $nombox vaut checkbox1, mais que le formulaire n'a pas envoyé de variable checkbox1 par une méthode "post"

    analyse les résultats de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <pre>
    <?php
    var_dump($_POST);
    var_dump($_GET);
    ?>
    </pre>
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 23
    Points : 11
    Points
    11
    Par défaut
    En effet :
    array(0) {
    }
    array(0) {
    }

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 23
    Points : 11
    Points
    11
    Par défaut
    Ca avance...
    Voici ce que j'obtiens :

    array(1) {
      ["checkbox25"]=>
      string(10) "checkbox25"
    }
    array(0) {
    }

    Mais j'ai toujours cette erreur :
    Notice: Undefined index: checkbox1 in c:\program files\easyphp1-8\www\del.php on line 36
    Quelqu'un a une idée?

  8. #8
    Membre averti Avatar de nicoaix
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 571
    Points : 362
    Points
    362
    Par défaut
    C'est juste une erreur de type Notice.
    Si tu ne veux pas qu'elle s'affiche met un @ devant la variable qui pose problème : $box = @$_POST[$nombox];

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 23
    Points : 11
    Points
    11
    Par défaut
    Merci à tous

  10. #10
    Membre expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Points : 3 001
    Points
    3 001
    Par défaut
    Citation Envoyé par nicoaix
    C'est juste une erreur de type Notice.
    Si tu ne veux pas qu'elle s'affiche met un @ devant la variable qui pose problème. $box = @$_POST[$nombox];
    C'est un peu la politique de l'autruche cela !
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

  11. #11
    Membre averti Avatar de nicoaix
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 571
    Points : 362
    Points
    362
    Par défaut
    Si tu veux faire plus propre passe par un isset du post mais à mon sens c'est du pinaillage.

  12. #12
    Membre expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Points : 3 001
    Points
    3 001
    Par défaut
    Je chercherais plutot à ne pas appeler un élément de formulaire qui n'existe pas
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

  13. #13
    Candidat au Club
    Profil pro
    Intégrateur Web
    Inscrit en
    Décembre 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Déplacement enregistrement table 1 vers table2
    Bonjour,

    Voila déjà 3 jours que je cherche une solution a mon problème toujours pas de solution (:-(
    je souhaiterais envoyer, après sélection de checkbox de mon choix , les enregistrements dans une autre table avec les memes champs et faire un ->

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO table_2 SELECT * FROM table_1 WHERE id IN('.implode(',',$_POST['msg']).')');
    En gros j'ai dans ma page des checkbox qui récupèrent dans value les id des enregistrement ->

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <input name="msg[]" class="checkbox" type="checkbox" id="msg[]" value="'.$result['id'].'">
     
    <input class='Submit' type='submit' name='Submit' value='Envoyer'>

    en cliquant sur envoyer j'attérie dans la page résultat


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
       print_r ($_POST['msg']); // il m'affiche bien avec les id -> Array ( [0] => 162 [1] => 163 [2] => 164 ) 
     
     
    if(isset($_POST['msg']))
     
    {
     
    foreach($_POST['msg'] as $msg)  
    		{  
     
    		$sql='INSERT INTO table_2 SELECT * FROM tb_gestion WHERE id IN('.implode(',',$_POST['msg']).')'; 
     
    		}
    }
    en fait il ne se passe rien et je ne comprend pas pourquoi,

    Merci d'avance de votre aide (:-)

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

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. [VB.NET] Copie d'une table d'une DB vers une autre
    Par SergeF dans le forum Windows Forms
    Réponses: 9
    Dernier message: 20/11/2004, 10h54

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