Probleme sql/php

Ninib -  
macgawel Messages postés 676 Statut Membre -
Bonjour,
alors voila j'ai 2 tables dans une base : Fiches et Fiches_resolu
Ce que je voudrait faire c'est passer une ligne de la première vers la deuxieme en procédant comme ceci :

-je récupère les données d'une ligne en m'aidant d'un numéro d'id (auto-incrémenté lors de l'ajout d'une ligne).
-je creer une nouvelle ligne dans la deuxieme table avec ces données
-je supprime la ligne dans la première table.

Et il y a un probleme lors de la deuxieme opération, en précisant que la première fonctionne.
Je vous met le code php que j'ai, le problème se situe lors du deuxieme isset je suppose, et j'ai aucune confiance en mes guillemets dans les requetes:

Au début on suppose qu'on a cliqué sur le bouton 'envoyer', en ayant renseigné un id par formulaire.
Le problème que je rencontre est que je n'ai aucun message d'erreur mais il ne se passe strictement rien, la base de données est inchangée.
----------------------------------------------------------------------------------------------
<?php
if(isset($_POST['envoyer'])){
$id = $_POST['id'];
if(!empty($id)){
$lien=connexionBD();
$requete=("SELECT * FROM Fiches WHERE Id=$id");
$res=executionRequete($requete,$lien);
$row=mysql_fetch_assoc($res);
echo "Voulez-vous déplacer cette ligne ?";
echo "<br>";
echo "<table>";
echo '<tr>
<td>'.$row['Id'].'</td>
<td>'.$row['Utilisateur'].'</td>
<td>'.$row['Poste'].'</td>
<td>'.$row['Date'].'</td>
<td>'.$row['Descriptif'].'</td>
</tr>';
echo "</table>";
echo "<form action='deplacer.php' method='post'>
<input type ='submit' value='Oui' name='oui' /><br>
<input type ='submit' value='Non' name='non' />
</form>";
if(isset($_POST['oui'])){
$requete2=("INSERT INTO Fiches_resolu VALUES('','".$row['Utilisateur']."','".$row['Poste']."','".$row['Date']."','".$row['Descriptif']."');");
$requete3=("DELETE from Fiches where Id=".$row['Id'].";");
$res2=executionRequete($requete2,$lien);
$res3=executionRequete($requete3,$lien);
if(!$res2) {
echo "Erreur d'écriture dans la deuxième table!";
if(!res3){
echo "Erreur de suppression dans la première table!";
} else echo "<FONT color=\"red\">Requêtes prises en compte!</FONT>";
}
deconnexionBD($lien);
}
} else echo "Le champ <b>Id</b> n'est pas rempli.";
}
?>
A voir également:

5 réponses

macgawel Messages postés 676 Statut Membre 89
 
Bonjour.

Où est la fonction executionRequete ?
Tu peux essayer de faire :
$res1=executionRequete($requete1,$lien) or die ('Erreur dans la requête : '.mysql_error() );

Ca devrait te donner un message d'erreur...

Sinon, ce ne serait pas plus simple de rajouter un champ Resolu dans ta table Fiches ?
0
Ninib
 
les fonction de connexion a la bd et pour executer les requetes se trouvent dans un autre fichier, avec les commande d'erreur avec.
Mais elles fonctionnent très bien car je fais deja plusieurs truc avec cette base.

Par contre justement j'ai fait une deuxième table pour ne pas laisser encombrée la première et pour que la deuxième serve aussi d'historique
0
macgawel Messages postés 676 Statut Membre 89
 
Tu as un message d'erreur ? Ou un des echo que tu as codé ('Erreur...') ?

Je ne maîtrise pas trop, donc je vais peut-être dire une connerie :
Ca ne pourrait pas être lié à ta toute première requête (le SELECT) ?
Genre, tu ne fermes pas ta connexion, et du coup la ligne que tu récupère par le SELECT ne peut pas être DELETE ?
0
Ninib
 
hmm peut etre, il est vrai que je relance la page avec le bouton "oui et non", je vais essayer
0
Ninib
 
ca ne change rien :(
0
macgawel Messages postés 676 Statut Membre 89
 
Tu as un message d'erreur ? Ou un des echo que tu as codé ('Erreur...') ?


Qu'est-ce que tu as fait, qui ne change rien ?
0
Ninib
 
je viens de trouver une alternative, ca moins bien mais ca marche.
J'ai viré la confirmation de déplacement (oui/non) qui faisait qu'on rechargeait la page, du coup je perdais toutes les variables passées par la première requete.
Ca marche mais c'est brutal du coup, enfin c'est pas grave.
Par contre maintenant, une dernière chose, ce n'est pas bien important mais, imaginon que j'ai 3 ligne dans la table Fiches. J'ai déplacé la 2e et donc du coup les Id passent de 1 à 3, ya aps moyen que ca se mette normal ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
macgawel Messages postés 676 Statut Membre 89
 
Pour la confirmation, tu peux :
- Passer par du JavaScript (un message de confirmation. Avantage : tu restes dans la page)
- Stocker tes données, dans le $_SESSION par exemple, et utiliser du php.

Pour ton problème d'Id :
Ca dépend un peu de ta base, mais normalement, si c'est un champ auto-incrémenté tu ne peux rien faire.

Tu pourrais repasser toute ta base dans une "moulinette" pour renuméroter, mais :
- Ca risque de te poser des problèmes : imagine que deux personnes archivent quasiment en même temps la fiche n° 2. Personne 1 archive la fiche 2 => tu renumérotes => Personne 2 archive la (nouvelle) fiche 2 !
- C'est compliqué à gérer avec ta table d'archivage (tu risques de te retrouver avec plusieurs fiches n°2)
0