8791 sujets

Développement web côté serveur, CMS

Bonjour,

Voila déjà 3 jours que je cherche une solution a mon problème toujours pas de solution ( Smiley decu
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 ->

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 ->

<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


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 je suis un peu désespérée la ( Smiley smile
Salut,

C'est pour faire quoi au juste ton INSERT ... SELECT ... WHERE ?
Tu ne chercherais pas plutôt à faire un UPDATE ?

tm
Salut tm™,

merci de ta réponse je suis toujours en train de chercher une solution et je suis un peu perdue la ( Smiley decu

En fait je cherche juste a déplacer les enregistrements de ma table1 dont je recupere les id via les checkbox et les envoyer vers la table2


as tu une idée de requete stp Tm ?
Dans ma page resultat quand je met cette boucle ca me les supprimes bien, mais moi ce que je veux j'ai les supprimer et les inserer dans une autre table,


foreach($_POST['msg'] as $msg)
{
mysql_query('DELETE FROM tb_gestion WHERE id IN('.implode(',',$_POST['msg']).')');
}



( Smiley smile
Ok, ok.

Tu n'as pas un problème d'index ou de clé unique ? Un message d'erreur ?
Perso, j'essaierais en ajoutant IGNORE ou ON DUPLICATE KEY UPDATE.
Plus d'infos dans la doc mysql...

tm
OULA CA COMMENCE A SE COMPLIQUER LA

DANS MON CAS TU AS UNE IDÉE DE COMMENT FAIRE MA REQUETE tm ?

car je viens de regarder la doc ->

mysql> INSERT INTO table (a,b,c) VALUES (1,2,3)
-> ON DUPLICATE KEY UPDATE c=c+1;

mais je sais pas comment l'adapter a mon cas
foreach($_POST['msg'] as $msg) { 
  $sql='INSERT IGNORE INTO table_2 SELECT * FROM tb_gestion WHERE id = '.$msg.'; 
}

Je n'ai pas forcément le temps de tester mais pour chaque id des checkboxes, on duplique l'enregistrement et si un id est déjà présent dans la seconde table, on ignore l'enregistrement...

NB : A mon avis, ta clause WHERE ... IN et ta boucle foreach font double emploi.

tm