redirection après envoi de données

redirection après envoi de données - PHP - Programmation

Marsh Posté le 30-04-2006 à 22:30:06    

Bonsoir,
Mon problème se situe à la redirection d'une page vers une autre.
Dans un formulaire, l'internaute saisit deux champs oùles données sont envoyées vers une table. Jusque là, tout va bien. Mais lors de ma redirection, la page redirigée est la meme que celle oùétait présent le formulaire alors qu'il devrait déboucher sur une autre pour informer l'utilisateur que tout s'ets bien passé.
 
Le code suivant est celui de ma page index.php reprenant d'autres pages via les différentes includes:
 

Code :
  1. <table align="center" border="1" cellpadding="0" cellspacing="0" bordercolor="#ffffff" width="920">
  2. <tr>
  3. <td>
  4.   <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="920" background="../Images/backgroundtable.gif">
  5.     <tr>
  6.       <td height="96" colspan="3" width="920">&nbsp;</td>
  7.     </tr>
  8.     <tr>
  9.       <td valign="middle" height="94" colspan="3" width="918"><?php include("../menu.php" ) ; ?></td>
  10.     </tr>
  11.     <tr>
  12.       <td valign="top" width="182" height="460" rowspan="2"><?php include("../connect.php" ) ; ?></td>
  13.       <td valign="top" width="556" height="460" rowspan="2"><?php include $page; ?></td>
  14.       <td valign="top" width="178" height="460" rowspan="2"><?php include("../rightcolumn.php" ) ; ?></td>
  15.     </tr>
  16.   </table>


 
<?php include $page; ?>: correspond à la page où se trouve mon formulaire.
 
Voici le code de la page en question

Code :
  1. <?php
  2. mysql_connect("localhost", "******", "******" ) or die("Impossible de se connecter :  " . mysql_error());
  3. mysql_select_db("******" );
  4. ?>
  5. <?php
  6. function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "" )
  7. {
  8.   $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;
  9.   switch ($theType) {
  10.     case "text":
  11.       $theValue = ($theValue != "" ) ? "'" . $theValue . "'" : "NULL";
  12.       break;
  13.     case "long":
  14.     case "int":
  15.       $theValue = ($theValue != "" ) ? intval($theValue) : "NULL";
  16.       break;
  17.     case "double":
  18.       $theValue = ($theValue != "" ) ? "'" . doubleval($theValue) . "'" : "NULL";
  19.       break;
  20.     case "date":
  21.       $theValue = ($theValue != "" ) ? "'" . $theValue . "'" : "NULL";
  22.       break;
  23.     case "defined":
  24.       $theValue = ($theValue != "" ) ? $theDefinedValue : $theNotDefinedValue;
  25.       break;
  26.   }
  27.   return $theValue;
  28. }
  29. $editFormAction = $_SERVER['PHP_SELF'];
  30. if (isset($_SERVER['QUERY_STRING'])) {
  31.   $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
  32. }
  33. if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "formnews" )) {
  34.   $insertSQL = sprintf("INSERT INTO newsletter (date, pseudo, email) VALUES (now(), %s, %s)",
  35.                        GetSQLValueString($_POST['requiredNom'], "text" ),
  36.                        GetSQLValueString($_POST['requiredEmail'], "text" ),
  37.                        GetSQLValueString($_POST['date'], "text" ));
  38.   mysql_select_db($database_newsletter, $newsletter);
  39.   $Result1 = mysql_query($insertSQL) or die(mysql_error());
  40.   $insertGoTo = "index.php?rub=2";
  41. if (isset($_SERVER['QUERY_STRING'])) {
  42.     $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
  43.     $insertGoTo .= $_SERVER['QUERY_STRING'];
  44.   }
  45.   header(sprintf("Location: %s", $insertGoTo));
  46. }
  47. ?>
  48. <?php
  49. mysql_select_db($database_newsletter, $newsletter);
  50. $query_newsletter = "SELECT * FROM newsletter";
  51. $newsletter = mysql_query($query_newsletter) or die(mysql_error());
  52. $row_newsletter = mysql_fetch_assoc($newsletter);
  53. $totalRows_newsletter = mysql_num_rows($newsletter);
  54. ?>
  55. <table align='center' border='1' bordercolor='#ffffff' width='450'>
  56. <tr>
  57. <td>
  58. <FORM name="formnews" method="POST" action="<?php echo $editFormAction; ?>" onSubmit="return checkrequired(this)">
  59. <table align='center' bgcolor='#000000' border='0' width='450' height='300'>
  60.           <tr>
  61.             <td align="left" width="236" colspan="3" height="43"><font face="Arial" color="#ffffff"><b>
  62.             <span style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  63.             Votre nom</span></b></font></td>
  64.             <td width="214" colspan="3" height="43"><font size="2" face="Verdana" color="#C5C5C5"><u><b>
  65.         <input type="hidden" name="date" value="date()"><input type="text" name="requiredNom" size="23" style="font-size: 10 pt"></b></u></font></td>
  66.           </tr>
  67.    <tr>
  68.             <td align="left" width="236" colspan="3" height="43"><font face="Arial" color="#ffffff"><b>
  69.             <span style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  70.             Votre email</span></b></font></td>
  71.             <td width="214" colspan="3" height="43"><font size="2" face="Verdana" color="#C5C5C5"><u><b>
  72.         <input type="text" name="requiredEmail" size="23" style="font-size: 10 pt"></b></u></font></td>
  73. </b></u></font></td>
  74.           </tr>
  75.   <tr>
  76.       <td height="50" colspan="6" width="450">
  77.       <p align="center"><input type="submit" value="Envoyer le résultat"></td>
  78.           </tr>
  79. </table>
  80. <input type="hidden" name="MM_insert" value="formnews">
  81. </FORM>
  82. </td>
  83. </tr>
  84. </table>
  85. <?php
  86. mysql_free_result($newsletter);
  87. ?>


 
Et donc, malgré tout cela, la redirection ne s'opère pas vers index.php?rub=2 comme indiqué, mais vers la page initiale.
 
 
Si quelqu'un pouvait m'aider...
 
Merci d'avance
 
 
PS: Lorsque j'exécute le formulaire avec l'include, dans ma page index.php donc, ca foire. Mais si je prends la page à part (sans l'include) ca marche ....


Message édité par oli1987 le 30-04-2006 à 22:31:16
Reply

Marsh Posté le 30-04-2006 à 22:30:06   

Reply

Marsh Posté le 30-04-2006 à 23:19:58    

en fait, mon formulaire utilise l'action $editFormAction  
 
Lorsque je remplace cette variable par une url simple, tout va bien (pour la redirection, mais les données ne sont pas insérées dans ma table)
 
Le bug se situe donc au niveau de ctette variable:
 

Code :
  1. $editFormAction = $_SERVER['PHP_SELF'];
  2. if (isset($_SERVER['QUERY_STRING'])) {
  3.   $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
  4. }
  5. if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "formnews" )) {
  6.   $insertSQL = sprintf("INSERT INTO newsletter (date, pseudo, email) VALUES (now(), %s, %s)",
  7.                        GetSQLValueString($_POST['requiredNom'], "text" ),
  8.                        GetSQLValueString($_POST['requiredEmail'], "text" ),
  9.                        GetSQLValueString($_POST['date'], "text" ));
  10.   mysql_select_db($database_newsletter, $newsletter);
  11.   $Result1 = mysql_query($insertSQL) or die(mysql_error());
  12.   $insertGoTo = "http://bcml.no-ip.org/Newsletter/index.php?rub=2";
  13. if (isset($_SERVER['QUERY_STRING'])) {
  14.     $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
  15.     $insertGoTo .= $_SERVER['QUERY_STRING'];
  16.   }
  17.   header(sprintf("Location: %s", $insertGoTo));
  18. }


 
Qu'est ce qui est donc incorrect ?


Message édité par oli1987 le 30-04-2006 à 23:24:37
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed