Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
984 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  un form qui appele la page où il se trouve

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

un form qui appele la page où il se trouve

n°1978237
SV_LVH
Posté le 29-03-2010 à 01:17:19  profilanswer
 

Bonjour à tous,
 
Je suis en train d'essayer d'installer un petit sondage sur mon site et sur la page de création des sondages j'ai une erreur : Notice: Undefined variable: action in C:\wamp\www\test-sondage\poll\creer.php  on line 8
Avec mes maigres connaissances en php je comprend qu'il manque la définition de la variable $action, mais d'un autre coté je ne comprends pas trop le fonctionnement de cette page.  Je crois que le 'create' fait référence au <form method=\"POST\" action=\"creer.php?action=create\">  mais ce qui me parait bizarre c'est que la page s'appelle elle-même!?!
 
J'ai chopé ce code à cette adresse
 
Si quelqu'un voit ce qui ne va pas, je l'écoute avec attention  :ange:  
 
la page en question (creer.php)
<html>
<head>
<title>Créer un sondage</title>
</head>
<body>
<?php
if($action == 'create')
{
include("parametres.php" );
$connexion = mysql_connect("$url_db" , "$login" , "$password" );
$sql = "INSERT INTO sondage VALUES('', '$question', '$reponse1', '$reponse2', '$reponse3', '$reponse4')";
$result = mysql_db_query("$table",$sql,$connexion);
echo("Sondage créé !" );
}
else
{
echo("<form method=\"POST\" action=\"creer.php?action=create\">\n" );
echo("Question : <input type=\"text\" name=\"question\" size=\"20\"><br>\n" );
echo("Réponse 1 : <input type=\"text\" name=\"reponse1\" size=\"20\"><br>\n" );
echo("Réponse 2 : <input type=\"text\" name=\"reponse2\" size=\"20\"><br>\n" );
echo("Réponse 3 (si nécessaire) : <input type=\"text\" name=\"reponse3\" size=\"20\"><br>\n" );
echo("Réponse 4 (si nécessaire) : <input type=\"text\" name=\"reponse4\" size=\"20\"><br>\n" );
echo("<br><input type=\"submit\" value=\"Créer\">\n" );
echo("</form>\n" );
}
?>
</body>
</html>

 
ps: j'ai fait quelques modifications avec le code d'origine mais le résultat est identique.

mood
Publicité
Posté le 29-03-2010 à 01:17:19  profilanswer
 

n°1978252
AJW256
Posté le 29-03-2010 à 08:54:01  profilanswer
 

if($action == 'create')
 
changez à:
 
if($_POST['action'] == 'create')


---------------
J'apprends parler en français alors je ferai des erreurs. S'il vous plaît corrigez-moi :)
n°1978289
aspirateur
Posté le 29-03-2010 à 10:41:48  profilanswer
 

Heu non, il faut rajouter  

Code :
  1. $action = $_GET['action'];


 
ce qui donne :

Code :
  1. <html>
  2. <head>
  3. <title>Créer un sondage</title>
  4. </head>
  5. <body>
  6. <?php
  7. $action = $_GET['action'];
  8. if($action == 'create')
  9. {


 
la valeur de 'action' est transmise par l'adresse

n°1978329
rufo
Pas me confondre avec Lycos!
Posté le 29-03-2010 à 11:40:27  profilanswer
 

L'auteur du script creer.php avait probablement sa variable register_global à ON sur son serveur :/ Faut plus faire ça de nos jours.
 
Sinon, un bon petit soft GPL de sondage en PHP/MySQL, c'est Nabopoll ;)


Message édité par rufo le 29-03-2010 à 11:40:45

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°1978500
AJW256
Posté le 29-03-2010 à 16:54:51  profilanswer
 

aspirateur a écrit :

Heu non, il faut rajouter  

Code :
  1. $action = $_GET['action'];


 
ce qui donne :

Code :
  1. <html>
  2. <head>
  3. <title>Créer un sondage</title>
  4. </head>
  5. <body>
  6. <?php
  7. $action = $_GET['action'];
  8. if($action == 'create')
  9. {


 
la valeur de 'action' est transmise par l'adresse


 
Ahh, d'accord.
 
$action = $_GET['action'];
 
dois être:
 
$action = $_POST['action'];


---------------
J'apprends parler en français alors je ferai des erreurs. S'il vous plaît corrigez-moi :)
n°1978591
jeff@be
Posté le 29-03-2010 à 18:17:48  profilanswer
 

AJW256 a écrit :


 
Ahh, d'accord.
 
$action = $_GET['action'];
 
dois être:
 
$action = $_POST['action'];


 
 :non: pas post, get
 
Le formulaire est passé en POST, mais "action" est passé en GET dans l'url appelée par le formulaire. Donc c'est bien $_GET['action'].

n°1978602
SV_LVH
Posté le 29-03-2010 à 18:46:54  profilanswer
 

Merci à vous pour vos réponses!
 
En effet "action" doit être passé en GET et non en POST comme j'ai pu m'en apercevoir. J'ai fait cette modification ainsi que plusieurs autres, j'ai du passer toutes les variables en POST et modifier les connexions à la db, le problème c'est que l'ensemble du code est obsolète!
 
J'ai beau chercher partout un script récent pour faire des sondages je ne trouve rien. Pour ce qui est de nabopoll la dernière maj date de décembre 2003 ! Donc c'est même pas la peine de tenter le coup.  :(  
 
J'ai essayé Advanced Poll qui est très bien (voir le site officiel) mais hélas un poil obsolète (plein de fonctions à remplacer pour que ça fonctionne correctement) de plus son avantage est aussi son inconvénient : il est complet donc moins facile à utiliser pour l'utilisateur néofite. J'ai du abandonner cette solution pourtant prometteuse car les utilisateurs du site que je construis (des restaurateurs) ne connaissent rien à la programmation et cela doit être le plus simple possible, sans un bout de code à coller.  
 
Bref tout ça pour dire qu'il est difficile de trouver un système de sondage fiable (avec cookies pour éviter le vote à la chaine), facilement paramétrable (avec un vrai Back Office), insérable en quelques clics (pas de changement à la main du code pour chaque nouveau sondage) et assez récent (donc pas en php 3)  ;) .
 
Je sais que ça fait beaucoup mais si vous connaissez un outil qui ressemble à cette description, je vous serais reconnaissant de me le faire découvrir. :D

n°1978604
AJW256
Posté le 29-03-2010 à 18:53:06  profilanswer
 

jeff@be a écrit :


 
 :non: pas post, get
 
Le formulaire est passé en POST, mais "action" est passé en GET dans l'url appelée par le formulaire. Donc c'est bien $_GET['action'].


 
Ahh oui, désolé.


---------------
J'apprends parler en français alors je ferai des erreurs. S'il vous plaît corrigez-moi :)
n°1978606
SV_LVH
Posté le 29-03-2010 à 19:00:21  profilanswer
 

J'ai toujours une erreur persistante malgré les changements proposés. Mon erreur est devenue : Notice: Undefined index: action in C:\wamp\www\test-sondage\poll\creer.php  on line 10
 
Vous noterez que c'est maintenant l'index qui est en cause et plus la variable. Je vous laisse mon code tel qu'il est après modification:
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
<meta http-equiv="content-language" content="fr" />
<title>Créer un sondage</title>
</head>
<body>
<?php
$action = $_GET['action'];
if($action == 'create')
{
include("parametres.php" );
mysql_connect("$url_db" , "$login" , "$password" );
mysql_select_db("$table" );
$sql = "INSERT INTO sondage VALUES('', '".addslashes($_POST['question'])."', '".addslashes($_POST['reponse1'])."', '".addslashes($_POST['reponse2'])."', '".addslashes($_POST['reponse3'])."', '".addslashes($_POST['reponse4'])."')";
mysql_query($sql) or die(mysql_error());
echo("Sondage créé !" );
}
else
{
echo("<form method=\"POST\" action=\"creer.php?action=create\">\n" );
echo("<table  bgcolor=\"#CCCCCC\">\n" );
echo("<tr align=\"center\">\n<td colspan=\"2\" align=\"center\"><strong>Cr&eacute;ation d'un sondage</strong></td>\n</tr>\n" );
echo("<tr>\n<td width=\"80\">&nbsp;Question :</td>\n" );
echo("<td width=\"365\"><input type=\"text\" name=\"question\" size=\"55\"></td>\n</tr>\n" );
echo("<tr>\n<td width=\"80\">&nbsp;R&eacute;ponse 1 :</td>\n" );
echo("<td width=\"365\"><input type=\"text\" name=\"reponse1\" size=\"30\"></td>\n</tr>\n" );
echo("<tr>\n<td width=\"80\">&nbsp;R&eacute;ponse 2 :</td>\n" );
echo("<td width=\"365\"><input type=\"text\" name=\"reponse2\" size=\"30\"></td>\n</tr>\n" );
echo("<tr>\n<td width=\"80\">&nbsp;R&eacute;ponse 3 :</td>\n" );
echo("<td width=\"365\"><input type=\"text\" name=\"reponse3\" size=\"30\"></td>\n</tr>\n" );
echo("<tr>\n<td width=\"80\">&nbsp;R&eacute;ponse 4 :</td>\n" );
echo("<td width=\"365\"><input type=\"text\" name=\"reponse4\" size=\"30\"></td>\n</tr>\n" );
echo("<tr align=\"center\">\n<td colspan=\"2\" align=\"center\"><input type=\"submit\" value=\"Créer\"></td>\n</tr>\n" );
echo("</table>\n" );
echo("</form>\n" );
}
?>
</html>

 
En rouge la fameuse ligne 10 qui pose problème.
A noter que si je fais:
 
<?php
if($_GET['action'] == 'create')
{
include("parametres.php" );
...

 
J'obtiens la même erreur.
 
Qu'en pensez vous?
 
EDIT : j'ai trouvé la réponse comme un grand désolé pour le dérangement! (faut dire que c'était tout bête)
 
$action = '';
if (!empty ($_GET['action'])) {
$action = $_GET['action'];
}

if($action == 'create')
{
...


Message édité par SV_LVH le 29-03-2010 à 19:09:13

---------------
Quand vous demandez sur un forum comment changer un pneu de voiture peu de gens vous répondent. Et ceux qui le font vous expliquent généralement comment rouler sur 3 roues.
n°1978611
AJW256
Posté le 29-03-2010 à 19:13:25  profilanswer
 

essayez "print_r($_GET);" avant "$action = $_GET['action'];".
 
Dites-moi quel est le résultat.


---------------
J'apprends parler en français alors je ferai des erreurs. S'il vous plaît corrigez-moi :)

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  un form qui appele la page où il se trouve

 

Sujets relatifs
[Résolu] Perte de feuille de style sur changement de pageSubmit : faire apparaitre une partie de ma page sur une nouvelle page
Ouvrir la page d'un multipage avec son Nom et non son numéro[Résolu] Création d'une page html pour email, largeur zone texte ?
Internet Explorer : chargement de page aléatoirement incomplet[Résolu]Création d'une page html pour email, léger soucis avec outlook
gif pendant chargement de pageexecuter un script shell dans une page web
Colorbox - plusieurs thèmes en une pagePb de décalage de boutons lors de l'affichage d'une page sous PC...
Plus de sujets relatifs à : un form qui appele la page où il se trouve


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR