Page 1 sur 1

PHP CHECKBOX envoyer enregistrement d'une table a une autre

Posté : 19 déc. 2012, 15:08
par Alyson_dev
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 (:-)

Re: PHP CHECKBOX envoyer enregistrement d'une table a une au

Posté : 19 déc. 2012, 15:22
par Alyson_dev
Est ce que quelqu'un pourrait m'aider s'il vous plait ?

Re: PHP CHECKBOX envoyer enregistrement d'une table a une au

Posté : 19 déc. 2012, 17:25
par moogli
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.


@+

Re: PHP CHECKBOX envoyer enregistrement d'une table a une au

Posté : 19 déc. 2012, 17:40
par Alyson_dev
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']).')');


}

Re: PHP CHECKBOX envoyer enregistrement d'une table a une au

Posté : 20 déc. 2012, 22:54
par moogli
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);
}

@+