Aller au contenu

Table Mysql et PHP


DCO

Sujets conseillés

Bonjour,

Je voudrai savoir comment faire pour enregistrer des données d'une table MySql dans une autre. Je m'explique:

J'ai un ensemble de formulaires travaillant ensembles et l'un d'eux me sert à archiver dans une table MySql. Pour archiver je sélectionne dans un formulaire à l'aide d'une checkbox la ou les lignes à archiver et ensuite avec un bouton j'appelle un autre formulaire qui me liste les enregistrements à archiver et ensuite je confirme ma volonté d'archiver en cliquant sur OK et à partir de là ça ne marche pas mes champs sont vide sauf le Champ numero qui lui à bien le numero ID de l'enregistrement exporté.

Voci mes formulaires:

Le Formulaire 1 archiver

CODE
/* *********************** A T T E N T I O N *************************/

/* Veillez à indiquer le bon chemin vers votre fichier connexion.php */

require("include/connexionDB.php");

/* Connexion au serveur MySQL */

$connection=mysql_connect ($serveur, $username, $password, $table);

if (!$connection) {

die("Impossible de se connecter au serveur : " . mysql_error());

}

/* Sélection de la base de données */

$db_selected = mysql_select_db($database, $connection);

if (!$db_selected) {

die ("Impossible d'utiliser la base de données : " . mysql_error());

}

?>

<html>

<head>

<title>Archiver</title>

<link href="/enreg_form/css/style2.css" rel="stylesheet" type="text/css">

</head>

<body>

<?php

$query="select * from $table ORDER BY nom ASC";

$result=mysql_query($query);

$totenreg=mysql_num_rows($result);

echo "<form action='scripts/archive.php' method='post' name='archiver' enctype='multipart/form-data'>";

echo "<table width=100% border=1 align=center>";

echo "<tr bgcolor='#00FF00'>";

if ($totenreg==0)

echo "<td colspan=8><h2>IL N'Y A PAS D'ENREGISTEMENT A ARCHIVER</td>";

else

{

echo "<td colspan=8><h2>ARCHIVER ENREGISTREMENTS ?</td>";

echo "</tr>";

echo "<tr align=center bgcolor=#87CEEB>";

echo "<td><h4 class='h41'>Civilite</td>";

echo "<td><h4 class='h41'>Nom & Prénom</td>";

echo "<td><h4 class='h41'>Adresse</td>";

echo "<td><h4 class='h41'>Code Postal</td>";

echo "<td><h4 class='h41'>Ville</td>";

echo "<td><h4 class='h41'>Type</td>";

echo "<td><h4 class='h41'>Date</td>";

echo "<td><h4 class='h41'>Choix</td>";

echo "</tr>";

$i=0;

while ($row=mysql_fetch_array($result))

{

if ($i==0)

{

echo "<tr bgcolor=#D3D3D3>";

$i++;

}

else

{

echo "<tr bgcolor=#FFFFFF>";

$i--;

}

echo "<td><h5>".$row["civilite"]."</td>";

echo "<td><h5>".$row["nom"]."</td>";

echo "<td><h5>".$row["adresse"]."</td>";

echo "<td><h5>".$row["codepostal"]."</td>";

echo "<td><h5>".$row["ville"]."</td>";

echo "<td><h5>".$row["type"]."</td>";

echo "<td><h5>".$row["date"]."</td>";

echo "<td align=center><h4><input type='checkbox' name='type[]' value=".$row["id"]."></td>";

echo "<tr>";

}

echo "</table>";

echo "<br><br>";

echo "<table width=50% align=center>";

echo "<tr>";

echo "<td align=center><input class='bouton' type='submit' name='Suivant' value='ARCHIVER ?'></td>";

echo "<td align=center><input class='bouton' type='reset' name='Déselectionner' value='Déselectionner'></td>";

echo "</tr>";

}

echo "</table>";

echo "</form>";

?>

</body>

</html>

CODE
/* *********************** A T T E N T I O N *************************/

/* Veillez à indiquer le bon chemin vers votre fichier connexion.php */

require("../include/connexionDB.php");

/* Connexion au serveur MySQL */

$connection=mysql_connect ($serveur, $username, $password, $table);

if (!$connection) {

die("Impossible de se connecter au serveur : " . mysql_error());

}

/* Sélection de la base de données */

$db_selected = mysql_select_db($database, $connection);

if (!$db_selected) {

die ("Impossible d'utiliser la base de données : " . mysql_error());

}

?>

<html>

<head>

<title>Supprimer</title>

<link href="/enreg_form/scripts/css/style2.css" rel="stylesheet" type="text/css">

</head>

<body bgcolor="#FFFFE0">

<?php

if (!(isset($_POST["type"])))

{

echo "<H4>Vous devez sélectionner au moins un enregistrement !";

echo "<br><br><br><br>";

echo "<H4><a href='java script:history.go(-1)'>Retour à la page archiver un ou des enregistrement(s)</a><br>";

}

else

{

echo "<form action='confirm_archive.php' method='post' name='archive' enctype='multipart/form-data'>";

echo "<table width=100% border=1 align=center>";

echo "<tr bgcolor='#00FF00'>";

echo "<td colspan=7><h2>VOULEZ-VOUS ARCHIVER CET ENREGISTREMENT ?</td>";

echo "</tr>";

echo "<tr align=center bgcolor=#87CEEB>";

echo "<td><h4 class='h41'>Civilité</td>";

echo "<td><h4 class='h41'>Nom</td>";

echo "<td><h4 class='h41'>Adresse</td>";

echo "<td><h4 class='h41'>Code Postal</td>";

echo "<td><h4 class='h41'>Ville</td>";

echo "<td><h4 class='h41'>Type</td>";

echo "<td><h4 class='h41'>Date</td>";

echo "</tr>";

$j=0;

for ($i=0;$i<count($_POST["type"]);$i++)

{

$query="select * from $table where id='".$_POST["type"][$i]."'";

$result=mysql_query($query);

if ($j==0)

{

echo "<tr bgcolor=#D3D3D3>";

$j++;

}

else

{

echo "<tr bgcolor=#FFFFFF>";

$j--;

}

$row=mysql_fetch_array($result);

echo "<input type='hidden' Name='numero[]' value='".$row["id"]."'>";

echo "<td><h5>".$row["civilite"]."</td>";

echo "<td><h5>".$row["nom"]."</td>";

echo "<td><h5>".$row["adresse"]."</td>";

echo "<td><h5>".$row["codepostal"]."</td>";

echo "<td><h5>".$row["ville"]."</td>";

echo "<td><h5>".$row["type"]."</td>";

echo "<td><h5>".$row["date"]."</td>";

echo "<tr>";

}

echo "</table>";

echo "<br><br>";

echo "<table width=50% align=center>";

echo "<tr>";

echo "<td align=center><input class='bouton' type='submit' name='OK' value='OK Archiver'></td>";

echo "<td align=center><button onClick='java script:history.go(-1)'>Annuler</button></td>";

echo "</tr>";

echo "</table>";

echo "</form>";

}

?>

</body>

</html>

Et le 3ème formulaire qui lui devrai copier les enregistrement sélection dans la nouvelle table ET supprimer les ernregistreement après la copie:

CODE
/* *********************** A T T E N T I O N *************************/

/* Veillez à indiquer le bon chemin vers votre fichier connexion.php */

require("../include/connexionDB.php");

/* Connexion au serveur MySQL */

$connection=mysql_connect ($serveur, $username, $password, $table, $table_arch);

if (!$connection) {

die("Impossible de se connecter au serveur : " . mysql_error());

}

/* Sélection de la base de données */

$db_selected = mysql_select_db($database, $connection);

if (!$db_selected) {

die ("Impossible d'utiliser la base de données : " . mysql_error());

}

?>

<html>

<head>

<title>Editer</title>

<link href="/enreg_form/scripts/css/style2.css" rel="stylesheet" type="text/css">

</head>

<body>

<?php

for ($i=0;$i<sizeof($_POST["numero"]); $i++)

{

$query="insert into $table_arch values ('".$_POST["numero"][$i]."', '".$_POST["civilite"][$i]."', '".$_POST["nom"][$i]."', '".$_POST["adresse"][$i]."', '".$_POST["codepostal"][$i]."', '".$_POST["ville"][$i]."', '".$_POST["type"][$i]."', '".$_POST["date"][$i]."', '".$_POST["observation"][$i]."')";

$result=mysql_query($query);

$query="delete from $table where id='".$_POST["numero"][$i]."'";

$result=mysql_query($query);

}

if ($result)

{

echo "<H4>".$i." Enregistrement(s) archivé(s) !";

echo "<br><br><br><br>";

echo "<H4><a href='../archiver.php'>Archiver Enregistrement(s)</a><br>";

echo "<H4><a href='../lister_archives.php?test=3'>Lister les Archives</a>";

}

else

echo "<H4>Aucun Enregistrement Archivé !";

?>

</body>

</html>

Pouvez vous m'aider à résoudre ce problème?

Mais je pense que l'erreur doit venir de la ligne 28 du 3ème formulaire mais je ne vois pas où.

Avec mes sincères remerciements.

Lien vers le commentaire
Partager sur d’autres sites

utilise les balises codebox, ce sera plus lisible.

+ 1 indice :

http://dev.mysql.com/doc/refman/5.0/fr/insert-select.html

dans ton formulaire 2, il n'y a pas de champs correspondant à ta variable => $_POST["civilite"][$i] dans le formulaire 3

Modifié par pluriels
Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

J'ai lu avec attention le lien donné par pluriels

http://dev.mysql.com/doc/refman/5.0/fr/insert-select.html

dans ton formulaire 2, il n'y a pas de champs correspondant à ta variable => $_POST["civilite"][$i] dans le formulaire 3

mais je n'y comprend plus rien, je suis perdu.

Pouvez vous m'aider?

D'avance merci.

Lien vers le commentaire
Partager sur d’autres sites

1 - tu dois probablement avoir un message d'erreur ou un warning, peux-tu nous l'indiquer ?

2 - la partie insert...select permets de faire une requête du type insertion dans une table depuis une sélection:

"INSERT INTO insert into $table_arch SELECT numero, civilite,nom, adresse, codepostal, ville,type,date,observations FROM $table WHERE

numero = ".$_POST["numero"][$i];

C'était juste un indice pour faire les choses autrement, mais je t'ai embrouillé je crois

3 - ton formulaire 2 renvoie les variables suivantes dans le $_POST:

numero[0] = X1;

...

numero[n]= Xn;

Dans ta troisième page, tu peux donc utiliser

$_POST["numero"][$i]

mais pas

$_POST["civilite"][$i] qui n'existe pas

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

He ben non je n'ai pas de message d'erreur ou un warning car il y a bien quelque chose qui se copie dans la table archive et c'est le numero qui est égal à l'ID. et c'est là que je ne comprend plus, pourquoi il n'y a que ce numéro qui est copié et pas le reste:

Voici le code qui permet de faire la copie et la suppression:

<?php
for ($i=0;$i<sizeof($_POST["numero"]); $i++)
{
$query="insert into $table_arch values ('".$_POST["numero"][$i]."', '".$_POST["civilite"][$i]."', '".$_POST["nom"][$i]."', '".$_POST["adresse"][$i]."', '".$_POST["codepostal"][$i]."', '".$_POST["ville"][$i]."', '".$_POST["type"][$i]."', '".$_POST["date"][$i]."', '".$_POST["observation"][$i]."')";
$result=mysql_query($query);
$query="delete from $table where id='".$_POST["numero"][$i]."'";
$result=mysql_query($query);
}
if ($result)
{

Et encore merci pour votre aide.

Lien vers le commentaire
Partager sur d’autres sites

voici ce que cela affiche

insert into archive_form values ('55', '', '', '', '', '', '', '', '')

Lien vers le commentaire
Partager sur d’autres sites

A aucun moment tu ne transmets les données... le seul champ que tu passes est l'ID sur le formulaire pour archiver...

Le mieux serais de tout avoir dans la même table avec une colonne "archive" qui contiendrait 0 ou 1

1 - On coche les cases concernées

2 - Tu réceptionnes la variable contenant les cases cochées

3 - Tu passes ta valeur de "archive" à 1 pour les enregistrements choisis

Sinon, tu dois récupérer les données pour les enregistrements concernés et les ré-inserés.

Mais là, pour le moment, tu ne transmets QUE l'Id et rien d'autre donc, normal...

Lien vers le commentaire
Partager sur d’autres sites

je crois que mes explications sont foireuses ou je m'exprime mal, ce qui au final donne le même résultat.

On n'avance pas.

Pour expliquer à nouveau le probleme :

Formulaire 2

echo "<input type='hidden' Name='numero[]' value='".$row["id"]."'>";
echo "<td><h5>".$row["civilite"]."</td>";

Formulaire 3

$query="insert into $table_arch values ('".$_POST["numero"][$i]."', '".$_POST["civilite"][$i]."', '".$_POST["nom"][$i]."', '".$_POST["adresse"][$i]."', '".$_POST["codepostal"][$i]."', '".$_POST["ville"][$i]."', '".$_POST["type"][$i]."', '".$_POST["date"][$i]."', '".$_POST["observation"][$i]."')";

Dans la logique, c'est ce qui vient du formulaire 2 qui est utilisé dans ta requête du formulaire 3.

or si on observe bien, tu as un input type hidden pour les numeros

mais tu n'as rien d'autres.

Dans ta requête du formulaire 3, tu utilises $_POST["numero"][$i] qui a bien été envoyé, par contre $_POST["civilite"][$i] n'existe pas

.

Lien vers le commentaire
Partager sur d’autres sites

Bonsoir,

:thumbsup:

Ok maintenant c'est plus clair et cela fonctionne.

J'ai fait comme ceci:

Dans mon deuxième formulaire j'ai recopier cette ligne autant de fois que de champs:

echo "<input type='hidden' Name='numero[]' value='".$row["id"]."'>";

1 pour civilite, 1 pour le nom .....

et cela à fonctionné.

Et un GRAND merci pour votre aide.

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...