PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 14-10-2014 10:04:42

ing_tiziouzou2014
Membre
Inscription : 14-09-2014
Messages : 13

Insertion des enregistrements dans une table Mysql

Bonjour à tous;
Voilà , j'ai écrit un script php qui consiste à insérer les enregistrements depuis une table appelée table1 vers une autre appelée table2 sachant que la table1 est dans la base de données "moodle" et la table2 est dans la base de données "moodle_purge". à la première exécution, la table2 est remplie, mais quand j'ajoute d'autre enregistrements à ma première table manuellement (c-à-d dans phpmyadmin) et que je tente une deuxième exécution de mon script, je remarque que ma deuxième table reste telle qu'elle est c-à-d que les nouveaux enregistrements ne s'insèrent pas.
Voici mon script:

<?php
include ('connection.php');//fichier de connexion
$db=mysql_select_db("moodle");//se connecter à la base de données moodle
$db=mysql_select_db ("moodle_purge");//se connecter à la base de données moodle_purge

/********création de la table2 de même structure que table1 dans la base de données moodle_purge************/
$sql_cr= "CREATE TABLE IF NOT EXISTS table2  LIKE  `moodle`.`table1` ";
$res_sql_cr=mysql_query($sql_cr);
if($res_sql_cr==FALSE)
{die(mysql_error());
mysql_close();}

$sql_ins= "INSERT INTO  table2  as (SELECT * FROM `moodle`.`table1` WHERE `TABLE1`.`id` >=$MIN AND `TABLE1`.`id` <=$x1 )";/*$MIN et $x1 changent à chaque nouvelle insertion  dans la lable1*/
$res_sql_ins=mysql_query($sql_ins);
if($res_sql_ins==FALSE)
{die(mysql_error());
mysql_close();}

?>


Pouvez-vous me dire qu'est ce qui manque à celui-ci? Merci d'avance.

Hors ligne

#2 14-10-2014 11:51:59

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Insertion des enregistrements dans une table Mysql

Bonjour,

La syntaxe n'est pas la bonne en effet.

admettons la table table1 avec pour noms de colonnes (t1_id1,t1_c1,t1_c2,t1_c3), et la table table2 avec pour noms de colonnes (t2_id2,t2_c1,t2_c2,t2_c3)

Pour insérer la table 2 dans la table 1:


$sql="INSERT INTO TABLE1 (t1_c1,t1_c2,t1_c3) SELECT t2_c1,t2_c2,t2_c3 FROM TABLE2 WHERE .... ";
 

A condition que le typage des colonnes reste compatible entre elles.

Lien vers la doc
++

Dernière modification par Jc (14-10-2014 19:10:13)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#3 15-10-2014 10:55:46

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Insertion des enregistrements dans une table Mysql

Jc a écrit :

A condition que le typage des colonnes reste compatible entre elles.

La table de destination étant issue de

CREATE TABLE IF NOT EXISTS table2  LIKE  `moodle`.`table1`

la condition devrait forcément être remplie.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#4 16-10-2014 11:37:42

djimy_cartel
Membre
Inscription : 16-10-2014
Messages : 1

Re : Insertion des enregistrements dans une table Mysql

Bonjour ;
Merci Jc et Infantimigulo pour vos réponses.

La syntaxe n'est pas la bonne en effet.
admettons la table table1 avec pour noms de colonnes (t1_id1,t1_c1,t1_c2,t1_c3), et la table table2 avec pour noms de colonnes (t2_id2,t2_c1,t2_c2,t2_c3)
Pour insérer la table 2 dans la table 1:
$sql="INSERT INTO TABLE1 (t1_c1,t1_c2,t1_c3) SELECT t2_c1,t2_c2,t2_c3 FROM TABLE2 WHERE .... ";
CODE: TOUT SÉLECTIONNER
A condition que le typage des colonnes reste compatible entre elles.


J'ai corrigé la requête comme vous m'avez dit,  mais Mysql me retourne une erreur Table 'table2' already exists , alors j'ai modifié la requête comme ceci:

"INSERT INTO table2  IF EXISTS  (SELECT * FROM `moodle`.`table1` WHERE `table1`.`id` >=$VAL_MIN AND `table1`.`id`<=$dx1) ";//la structure des tables est la même

Mysql m'affiche toujours la même chose.

la condition devrait forcément être remplie.

J'ai inséré dans ma table1  un  nombre important d'enregistrements donc la condition est remplie.

Dernière modification par djimy_cartel (16-10-2014 11:39:35)

Hors ligne

#5 17-10-2014 15:11:29

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Insertion des enregistrements dans une table Mysql

"INSERT INTO table2  IF EXISTS  (SELECT * FROM `moodle`.`table1` WHERE `table1`.`id` >=$VAL_MIN AND `table1`.`id`<=$dx1) ";//la structure des tables est la même

Cette requête n'est pas bonne et n'a rien à voir avec ce que l'on vous à dit.

J'ai corrigé la requête comme vous m'avez dit

On peut savoir à quoi cela corresponds pour vous? par ce que j'ai un sérieux doute.

CREATE TABLE IF NOT EXISTS table2  LIKE  `moodle`.`table1`

En sachant que ce code aussi n'est pas bon. Je vous invite à consulter la doc MySQL correspondant à la version de votre serveur.

Bonne journée.


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

Pied de page des forums