PHP|Débutant :: Forums

Advertisement

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

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

#1 07-06-2012 14:04:56

cyberdoc
Membre
Inscription : 07-06-2012
Messages : 5

problème de redirection de formulaire avec un UPDATE mysql

Bonjour à tous, je vous explique mon soucis :
Je dois mettre en place un site web pour la gestion des manuels scolaires dans un collège.
Je suis plutôt débutant en php, soyez indulgent^^

jusqu'a présent j'ai réussi à mettre en place tout ce dont j'avais besoin, mais là je me retrouve face à gros soucis depuis 2 jours.
Peut-être la solution se cache sur la toile, mais malgré tout mes efforts pour me dépanner, je n'ai rien trouvé de concluant.

je bloque sur la page de restitution des livres.

si je laisse mon formulaire avec son option "action" réglé sur lui-même, l'INSERT sql qui lui est associé fonctionne trés bien; mais me renvoie sur la même page qui du coup est vide.
Il faut que ce formulaire me renvoie sur la page contenant la fiche de l'élève afin de vérifier que les paramètres soient bien à jour.

Quand je code ma page dans ce sens, la redirection est correcte, mais du coup l'UPDATE ne fonctionne plus.
(en remplacant action="restitution.php" par action="../eleve.php?id=<?php echo $id; ?>" à la ligne 48.

En espérant que ma question à bien été comprise, j'en appelle donc à votre sagesse et à vos connaissances afin de m'aider à enlever cette épine.

Je m'excuse par avance de la qualité médiocre de mon code que voici :



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "[url]http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd[/url]">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>GRATIA-Restitution des Manuels</title>
<link href="../style.css" rel="stylesheet" type="text/css" />

<style type="text/css">

body,td,th {
  font-family: Verdana, Geneva, sans-serif;
  font-size: 12px;
  color: #FFF;
}
body {
  background-color: #000
}
  </style>
</head>

<body>

<?php include ("../connexion.php");

$id = isset($_GET['id']) ? mysql_real_escape_string($_GET['id']) : '';
$sql= 'SELECT * FROM eleves WHERE ID ="'.$id.'"';
// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());

// on recupere le resultat sous forme d'un tableau
$data = mysql_fetch_array($req);

// on libère l'espace mémoire alloué pour cette interrogation de la base
mysql_free_result ($req);
mysql_close ();
?>

<table class="tablo" width="100%" border="0" cellspacing="8" cellpadding="0" align="center">
<tr><td height="40" align="center" valign="middle"><center><strong>Restitution des manuels scolaires</strong></center></td></tr>
</table>

<tr><td> </td></tr>

<table class="tablo" width="100%" border="0" cellspacing="8" cellpadding="0" align="center">
<tr>
  <td><form id="form_restit" name="form_restit" method="post" action="restitution.php"></td></tr>
  <tr>
    <td align="right" valign="top" width="50%"><font color="#00CC99">Classe :</td>
  <td align="left"  width="50%"><?php echo $data['classe']; ?></td>
  </tr>
      <tr>
    <td align="right" valign="top"><font color="#00CC99">Nom de l'élève :</td>
    <td align="left"><?php echo $data['nom_eleve']; ?></td>
  </tr>
    <tr>
  <td align="right" valign="top"><font color="#00CC99">Prénom de l'élève :</td>
    <td align="left"><?php echo $data['prenom_eleve']; ?></td>
  </tr>
</table>

<table class="tablo" width="100%" border="0" cellspacing="8" cellpadding="0" align="center">  
  <tr>
      <td COLSPAN=3 align="right" valign="top"><font color="#00CC99"><strong>Liste des manuels scolaires</strong></td>
      <td COLSPAN=3 align="left" valign="top">"rendu" signifie que le manuel à bien été rendu</td>
    </tr>
 
  <tr>
    <td COLSPAN=3 align="right" valign="top"><font color="#00CC99">ID de l'élève (non modifiable)</td>
    <td COLSPAN=3 align="left" valign="top">
      <select name="id" size="1" id="id">
        <option selected="selected"><?php echo $data['ID']; ?></option>
        </select>
    </td>
  </tr>
  <tr><td> </td></tr>  
  <tr>
    <td align="right" valign="top" width="15%"><font color="#00CC99">Français</td>
    <td align="left" width="15%">
      <select name="franc" size="1" id="franc">
        <option selected="selected"><?php echo $data['francais']; ?></option>
    <option>rendu</option>
      </select>
    </td>
  <td align="right" valign="top" width="15%"><font color="#00CC99">Mathématiques</td>
    <td align="left" width="15%">
      <select name="maths" size="1" id="maths">
        <option selected="selected"><?php echo $data['mathematiques']; ?></option>
    <option>rendu</option>
      </select>
    </td>
    <td align="right" valign="top" width="15%"><font color="#00CC99">Histoire - Géographie</td>
    <td align="left" width="15%">
      <select name="hist_geo" size="1" id="hist_geo">
        <option selected="selected"><?php echo $data['histoire_geographie']; ?></option>
        <option>rendu</option>
      </select>
    </td>
  </tr>
  <tr>
    <td align="right" valign="top"><font color="#00CC99">Physique - Chimie</td>
    <td align="left">
      <select name="phy_chi" size="1" id="phy_chi">
        <option selected="selected"><?php echo $data['physique_chimie']; ?></option>
        <option>rendu</option>
      </select>
    </td>
    <td align="right" valign="top"><font color="#00CC99">SVT</td>
    <td align="left">
      <select name="svt" size="1" id="svt">
        <option selected="selected"><?php echo $data['SVT']; ?></option>
        <option>rendu</option>
      </select>
    </td>
    <td align="right" valign="top"><font color="#00CC99">Anglais LV1</td>
    <td align="left">
      <select name="anglaislv1" size="1" id="anglaislv1">
        <option selected="selected"><?php echo $data['anglais_LV1']; ?></option>
    <option>rendu</option>
      </select>
    </td>
    </tr>
  <tr>
    <td align="right" valign="top"><font color="#00CC99">Anglais LV2</td>
    <td align="left">
      <select name="anglaislv2" size="1" id="anglaislv2">
        <option selected="selected"><?php echo $data['anglais_LV2']; ?></option>
    <option>rendu</option>
      </select>
    </td>
    <td align="right" valign="top"><font color="#00CC99">Espagnol LV1</td>
    <td align="left">
      <select name="espagnollv1" size="1" id="espagnollv1">
        <option selected="selected"><?php echo $data['espagnol_LV1']; ?></option>
    <option>rendu</option>
      </select>
    </td>
    <td align="right" valign="top"><font color="#00CC99">Espagnol LV2</td>
    <td align="left">
      <select name="espagnollv2" size="1" id="espagnollv2">
        <option selected="selected"><?php echo $data['espagnol_LV2']; ?></option>
    <option>rendu</option>
      </select>
    </td>
    </tr>
  <tr>
    <td align="right" valign="top"><font color="#00CC99">Allemand LV1</td>
    <td align="left">
      <select name="allemandlv1" size="1" id="allemandlv1">
        <option selected="selected"><?php echo $data['allemand_LV1']; ?></option>
    <option>rendu</option>
      </select>
    </td>
    <td align="right" valign="top"><font color="#00CC99">Allemand LV2</td>
    <td align="left">
      <select name="allemandlv2" size="1" id="allemandlv2">
        <option selected="selected"><?php echo $data['allemand_LV2']; ?></option>
    <option>rendu</option>
      </select>
    </td>
    <td align="right" valign="top"><font color="#00CC99">Demain Citoyens</td>
    <td align="left">
      <select name="demaincitoyens" size="1" id="demaincitoyens">
        <option selected="selected"><?php echo $data['demain_citoyens']; ?></option>
        <option>rendu</option>
      </select>
    </td>
    </tr>
  <tr>
    <td align="right" valign="top"><font color="#00CC99">Latin</td>
    <td align="left">
      <select name="latin" size="1" id="latin">
        <option selected="selected"><?php echo $data['latin']; ?></option>
    <option>rendu</option>
      </select>
    </td>
    <td align="right" valign="top"><font color="#00CC99">CD Langue</td>
    <td align="left">
      <select name="cdlangue" size="1" id="cdlangue">
        <option selected="selected"><?php echo $data['cd_langue']; ?></option>
        <option>rendu</option>
      </select>
    </td>
  </tr>
  <tr><td> </td></tr>
 </table>

<table class="tablo" width="100%" border="0" cellspacing="8" cellpadding="0" align="center">  
  <tr>
    <td align="center" valign="center"><input type="submit" name="valider" id="valider" value="Mettre à jour les données de <?php echo $data['nom_eleve']; ?> <?php echo $data['prenom_eleve']; ?>" /></td>

<?php
        if(isset($_POST['valider'])){
      $id=$_POST['id'];
      $franc=$_POST['franc'];
      $maths=$_POST['maths'];
      $hist_geo=$_POST['hist_geo'];
      $phy_chi=$_POST['phy_chi'];
      $svt=$_POST['svt'];
      $anglaislv1=$_POST['anglaislv1'];
      $anglaislv2=$_POST['anglaislv2'];
      $espagnollv1=$_POST['espagnollv1'];
      $espagnollv2=$_POST['espagnollv2'];
      $allemandlv1=$_POST['allemandlv1'];
      $allemandlv2=$_POST['allemandlv2'];
      $demaincitoyens=$_POST['demaincitoyens'];
      $latin=$_POST['latin'];
      $cdlangue=$_POST['cdlangue'];
     
    if(empty($franc) OR empty($maths) )
  {
     echo '<font color="red">Attention, des renseignements sont manquants !</font>'; }
   else
   {

    // connexion à la base
$db = mysql_connect('localhost', 'root', 'debian')  or die('Erreur de connexion '.mysql_error());
// sélection de la base  

    mysql_select_db('college',$db)  or die('Erreur de selection '.mysql_error());
         $sql = " UPDATE eleves SET francais='$franc', mathematiques='$maths', histoire_geographie='$hist_geo', physique_chimie='$phy_chi', SVT='$svt', anglais_LV1='$anglaislv1', anglais_LV2='$anglaislv2',
       espagnol_LV1='$espagnollv1', espagnol_LV2='$espagnollv2', allemand_LV1='$allemandlv1', allemand_LV2='$allemandlv2', demain_citoyens='$demaincitoyens', latin='$latin', cd_langue='$cdlangue' WHERE ID='$id'"
;
     
            mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
                           
            // on ferme la connexion
            mysql_close();}}
     
?>
  </tr>
  </table>   </form>
</body>
</html>
 

Hors ligne

#2 07-06-2012 14:53:22

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

Re : problème de redirection de formulaire avec un UPDATE mysql

Bonjour,

Ne t'excuses pas, c'est un site de débutant hein wink

Donc ton problème viens tout simplement du fait que ta page ne soit pas du tout structurée en fonction de tes besoins.
La première règle à appliquer à ton formulaire c'est de n'afficher que le stricte nécessaire ou d'effectuer le moins de tâches possibles tout en couvrant l'ensemble des cas de figure.

Voici l'algorithme que tu pourrais utiliser
1) On vérifie si des variables sont passées au formulaire ($_GET/$_POST). Si oui on les récupère.
2) Si des variables ont été trouvées et qu'elles sont incomplètes alors on affiche le formulaire avec les informations connues pour re validation. FIN.
3) Si des variables ont été trouvées on fait l'insert en BD et on reaffiche le formulaire en mode lecture pour vérification. FIN.
4) Si des variables ont été trouvées dans un contexte de mise à jour, on fait la mise à jour et on reaffiche le formulaire en mode lecture pour vérification. FIN.
5) Si on arrive ici c'est qu'il n'y pas de variables qui ont été transmises, on affiche le formulaire vierge. FIN.

Dans ce contexte, créer une fonction pour afficher le formulaire pour reduire la longueur du code.

++


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

Hors ligne

#3 07-06-2012 15:39:45

cyberdoc
Membre
Inscription : 07-06-2012
Messages : 5

Re : problème de redirection de formulaire avec un UPDATE mysql

Tout d'abord merci pour la réponse rapide !
Je comprend un peu mieux le principe du formulaire,mais mes variables sont toutes correctes (mes pags d'INSERT et de visualisation de bas de données fonctionnent très bien),il n'y a que la redirection vers la page élève qui m'affiche une page vide.
Peut être que je dois mettre un code particulier sur la destination ? En sachant que cette page "élève" est utilisé à d'autres endroits.
Pour avoir fait de nombreux tests de structurations, je n'ai pas réussi à créer un meilleur code; je ne vois donc pas comment améliorer tout ça.
Si éventuellement vous aviez un bout code bien explicatif ça pourrait éventuellement m'aider, merci d'avance !

Hors ligne

#4 07-06-2012 17:00:20

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

Re : problème de redirection de formulaire avec un UPDATE mysql

Petite question quand vous faites une redirection vers "eleve" dans un contexte où le formulaire de restitution est affiché, vous la faites comment?


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

Hors ligne

#5 07-06-2012 17:12:00

cyberdoc
Membre
Inscription : 07-06-2012
Messages : 5

Re : problème de redirection de formulaire avec un UPDATE mysql

Comme je l'ai expliqué au début de mon post :
à la ligne 48 :

<td><form id="form_restit" name="form_restit" method="post" action="restitution.php"></td>

je remplace action="restitution.php" (c'est le nom de la page qui est dans mon post) par :

<td><form id="form_restit" name="form_restit" method="post" action="../eleve.php?id=<?php echo $id; ?>"></td>

Cela m'affiche bien la page demandée avec les bonnes variables qui s'affichent, sauf que le UPDATE dans la requête SQL en bas de page à la ligne 222 ne fonctionne plus.
Alors que celui-ci fonctionne parfaitement si je laisse restitution.php à la ligne 48.
En espérant avoir été clair ^^

Pour être franc là j'en ai perdu mon bios !

Dernière modification par cyberdoc (07-06-2012 17:28:34)

Hors ligne

#6 07-06-2012 17:16:53

cyberdoc
Membre
Inscription : 07-06-2012
Messages : 5

Re : problème de redirection de formulaire avec un UPDATE mysql

a voir comment s'affiche mon code je me dis qu'il y a forcément une erreur, mais ou ? ...

Hors ligne

#7 07-06-2012 17:58:00

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

Re : problème de redirection de formulaire avec un UPDATE mysql

Si vous changez l'appel du fichier au niveau  de la soumission du formulaire c'est normal que l'update ne se fasse plus, car à partir de ce moment l'update doit être fait dans le fichier eleve.
Ce que je vous ai expliqué c'est pour tout faire dans la même page.


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

Hors ligne

#8 07-06-2012 18:51:10

cyberdoc
Membre
Inscription : 07-06-2012
Messages : 5

Re : problème de redirection de formulaire avec un UPDATE mysql

D'accord pas de problème je pense avoir saisie la subtilité !^:)
Je vais repenser mon formulaire de a à z, cela va bien me prendre une bonne partie du week-end, mais au moins j'apprends tongue
Merci beaucoup Grand Maitre !

Hors ligne

#9 01-02-2014 13:38:49

hebcha
Membre
Inscription : 01-02-2014
Messages : 3
Site Web

Re : problème de redirection de formulaire avec un UPDATE mysql

Si vous changez l'appel du fichier au niveau  de la soumission du formulaire c'est normal que l'update ne se fasse plus, car à partir de ce moment l'update doit être fait dans le fichier eleve.
Ce que je vous ai expliqué c'est pour tout faire dans la même page

Hors ligne

Pied de page des forums