PHP CHECKBOX envoyer enregistrement d'une table a une autre

Petit nouveau ! | 3 Messages

19 déc. 2012, 15:08

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

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 (:-)

Petit nouveau ! | 3 Messages

19 déc. 2012, 15:22

Est ce que quelqu'un pourrait m'aider s'il vous plait ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

19 déc. 2012, 17:25

bonjour,

en 20 minutes peux de gens vois ton message, il faut être patient.

pour répondre à ta question :

- configure php pour afficher les erreurs (display_error = on) et un niveau d'erreur correct (error_reporting = E_ALL) c'est obligatoire pour développer correctement.
- Ta syntaxe SQL n'est pas bonne, un insert a forcément un value !. je te conseil aussi de nommer les champs dans lesquelles tu fait insertion ainsi que les champs selectionnés (et dans le même ordre).

Je n'ai jamais testé ce type de requête il est probable que cela ne soit pas possible, et que tu doivent faire un boucle pour traiter le select.

deux possibilités :
- en php : select + une requête préparée pour l'insert
- en SQL : la même chose :) mais dans une procédure stockée qui prend en paramètre le résultat de l'implode.


@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 3 Messages

19 déc. 2012, 17:40

Bonjour moogli,

Merci d'avoir repondu , je t'assure j ai tout essayée la (:-)

est ce que tu aurai une idée de requete ?

dans ma page resultat il recupere bien tous les id de ma table 1 -> print_r ($_POST['msg']); // Array ( [0] => 162 [1] => 163 [2] => 164 )
en faisant ca il supprime tous les id de ma table 1 mais moi je veux qu'il les inserent dans ma table 2
foreach($_POST['msg'] as $msg)
{

mysql_query('DELETE FROM table1 WHERE id IN('.implode(',',$_POST['msg']).')');


}

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

20 déc. 2012, 22:54

delete : suppression


Tu devrais peut être voir un minimum de syntaxe SQL http://sqlpro.developpez.com/

comme déjà dit il faut sélectionner (select) tous les éléments qui t'intéresse et utiliser un insert pour les mettre dans l'autre table. 7

A priori le select c'est bon il ne te reste qu'a faire l'insert.
c'est un requête basique, tu utilise les valeur fournit par le select.

le select est conditionné par ta les valeurs de $_POST$_POST['msg']
<?php
// selection
$select = 'select les champs from la table1 where id in ( '.implode(',',$_POST['msg']).')';
$res = mysql_query($select);
if ($res === false) {
echo '<p class="erreur">Erreur SQL : '.mysql_error().'<br />Avec la requête : '.$select.'</p>';
}else {
while($data = mysql_fect_assoc($res)) {
$insert = 'insert into lasecondetable ( les champs) values ( les valeurs issues issues de data)';
$ri = mysql_query($insert);
if ($ri === false) {
echo '<p class="erreur">Erreur SQL : '.mysql_error().'<br />Avec la requête : '.$select.'</p>';
}
}
mysql_free_result($res);
}

@+
Il en faut peu pour être heureux ......