begin process at 2012 05 30 18:34:32
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive PHP

 > 

Archives

 > 

AU SECOURS !!!

 > 

pbs de variables dans une zone admin


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

pbs de variables dans une zone admin

mercredi 25 août 2004 à 16:30:14 | pbs de variables dans une zone admin

attentio

salut !!!!
voila mon probleme j'ai une premiere page (formulaire.php) qui me permet de recuperer des données afin de les modifier, supprimer ou ajouter un enregistrement(grace a la variable action)jusque la pas de probleme ou presque (du moins j'arrive a recuperer le detail de chaque enregistrement dans le champs du formulaire).
mais la ou ca se complique C au traitement des données. je m'explique ...ce formulaire renvoie vers la page action.php
formulaire.php et si $action=supprimer on supprime l'enregitrement, si $action=modifier on le modifie,...
mais là, pb sur la page action.php :
Undefined index: action a la ligne 3
Undefined variable: resultatscollections a la ligne 5

je ne comprends pas, merci de bien vouloir me donner un coup de main pour que ca marche ... parce que la, je ne vois pas

voici le code de mes 2 pages



**************************************
//actions.php

<?
$action=$_GET['action'];
//initialisation
$message="la collection " . $resultatscollections['nom_collection'] . " a été ";
if ($action =="modifier"){
$requeteMYSQL="UPDATE ...etc;
$message .=" modifiée.";}

if ($action =="ajouter"){
$requeteMYSQL= "INSERT INTO ...etc ;
$message .=" ajoutée.";}
if ($action =="supprimer"){
$requeteMYSQL= "DELETE FROM ...etc;
$message .=" supprimée.";}
//alimentation de la base
$connexion=mysql_connect('localhost', 'root','');
mysql_select_db('ma_base', $connexion);
?>
<html><head></head><body>
<?
//message de confirmation
echo $message;
?>
</body></html>

************************************
//formulaire.php

<?
$connexion = mysql_connect('localhost', 'root', '');
mysql_select_db('ma_base', $connexion);
$collection_id=$_GET['collection_id'];
$action=$_GET['action'];
$req_collections = mysql_query("select* FROM collections WHERE collection_id='$collection_id'");

mysql_close($connexion);
?>
<html>
<head>
<title><? echo $action; ?> une collection</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<h2 align="center"><font face="Verdana, Arial, Helvetica, sans-serif"><? echo $action; ?> une collection</font></h2>
<?
//recuperer les donnees
$resultatscollections =mysql_fetch_array($req_collections);
//insertion des donnees
?>
<form action="actions.php" method="post">
nom de la collection : <input type="text" name="nom_collection" value="<? echo $resultatscollections['nom_collection'];?>"><br>

<input type="submit" value="<? echo $action; ?>">
</form>



</body>
</html>

************************************

@+

ATTENTIO
debutant malgré lui
mercredi 25 août 2004 à 17:51:52 | Re : pbs de variables dans une zone admin

blinkseb

Salut !

Dans ta première page (formulaire.php) tu ne passe à aucun moment la variable $action, ni par POST, ni par GET. Par conséquent rajoute un champs


<input type="hidden" name="action" value="<?=$action;?>" />


Tu pourra récupérer cette variable avec $action = $_POST["action"];

Seconde choses, tu utilises la variable $resultatscollections alors que tu passe par le fourmulaire nom_collection;

Il te suffit donc de remplacer



$message="la collection " . $resultatscollections['nom_collection'] . " a été ";



par



$message="la collection " . $_POST['nom_collection'] . " a été ";



Je te conseil aussi de vérifié que les variables ont bien été initialisé avec isset($var) pour éviter les erreurs du type "Notice: Undefined variable..."

Exemple :



if (isset($_POST["action"]))
{
$action = $_POST["action"];
}



Dernière chose, tu semble aussi confondre $_POST et $_GET. $_POST est pour ce qui provient d'un formulaire avec method="post". $_GET est pour ce qui provient de l'url (un formulaire en method=get transforme l'url pour passer les arguments)

En espérant avoir pu t'aider

bLiNkSeB - Anciennement sebastienbro
mercredi 25 août 2004 à 20:52:33 | Re : pbs de variables dans une zone admin

attentio

salut !

merci infiniment de ton aide seb ! C vraiment tres clair ce que tu m'as fait ...mais G encore quelques petits soucis :
C vrai je me melange pas mal les pinceaux entre le post et le get... en fait dans la page precedant formulaire.php G ma liste de toutes mes collections et pour chaque enregistrement j'ai des boutons modifier, supprimer du type :


<a href='formulaire.php?collection_id=" . $resultats['collection_id'] . "&action=modifier'> Modifier</a>


donc j'imagine que pour la recuperation de $action C du get ?

avec ton aide j'ai reussi a recuperer le nouveau nom de la collection modifiée dans action.php

$_POST['nom_collection']

mais par contre pour le $action pas moyen de la recuperer.
j'ai un truc du genre :
"la collection nouveau_nom_de_la_collection a été"

autre chose : si je veux ajouter une collection j'ai la variable collection_id qu'il ne reconnait pas, pourtant j'ai mis comme tu m'as dis une reconnaissance de variable

if (isset($_POST['collection_id']))
{
$collection_id=$_POST['collection_id'];
}
a la ligne


$req_collections = mysql_query("select* FROM collections WHERE collection_id='$collection_id'");





je te redonne le nouveau code des 2 pages:
(avec surement beaucoup de fautes get/post)


//action.php

<?
$action=$_POST['action'];
//initialisation
$message="la collection " . $_POST['nom_collection'] . " a été ";
if ($action =="modifier")
{
$requeteMYSQL="UPDATE ...
$message .=" modifiée.";
}

if ($action =="ajouter")
{
$requeteMYSQL= "INSERT INTO ..
$message .=" ajoutée.";
}

if ($action =="supprimer")
{
$requeteMYSQL= "DELETE FROM ...
$message .=" supprimée.";
}
$message .="<BR> Merci de votre collaboration.";

//alimentation de la base
$connexion=mysql_connect('localhost', 'root','');
mysql_select_db('db', $connexion);
?>

<html><head></head><body>
<?
//message de confirmation
echo $message;
?>
</body></html>





//formulaire.php

<?
$connexion = mysql_connect('localhost', 'root', '');
mysql_select_db('bd', $connexion);

if (isset($_POST['collection_id']))
{
$collection_id=$_POST['collection_id'];
}

if (isset($_GET["action"]))
{
$action = $_GET["action"];
}

$req_collections = mysql_query("select* FROM collections WHERE collection_id='$collection_id'");
$req_univers = mysql_query("select* FROM univers ");
$univers_id['univers_id']="";
mysql_close($connexion);
?>
<html><head></head><body>
<?
//recuperer les donnees
$resultatscollections =mysql_fetch_array($req_collections);
//insertion des donnees
?>
<form action="actions_collections.php" method="post">
<input type="hidden" name="action" value="<? $action; ?>" />
nom de la collection : <input type="text" name="nom_collection" value="<? echo $resultatscollections['nom_collection'];?>"><br>

<input type="submit" value="<? echo $action; ?>">
</form></body></html>


merci de ton aide ...

ATTENTIO
debutant malgré lui

A+



mercredi 25 août 2004 à 21:11:26 | Re : pbs de variables dans une zone admin

blinkseb

Salut :)

Donc premièrement dans la page avant formulaire.php :



<a href='formulaire.php?collection_id=" . $resultats['collection_id'] . "&action=modifier'> Modifier</a>



Tu passes tes deux variables par l'URL, donc methode GET. If faut donc coriger la ligne :



if (isset($_POST['collection_id']))
{
$collection_id=$_POST['collection_id'];
}



par



if (isset($_GET['collection_id']))
{
$collection_id=$_GET['collection_id'];
}



puisque tu passes par l'url.

Deuxièmement tu écris :


<input type="hidden" name="action" value="<? $action; ?>" />


Tu as un problème au niveau du php. En effet tu spécifie seulement une variable. Il faut soit rajouter un echo() pour afficher c'est variable, ou alors un "=" ce qui donne :



<input type="hidden" name="action" value="<?=$action; ?>" />
ou
<input type="hidden" name="action" value="<? echo($action); ?>" />



Voilà la normalement tout marche :)

Il y a aussi une technique pour ne plus t'embêter avec les $_GET ou $_POST il suffit de faire comme ça :



if (isset($_GET["var"]))
{
$var = $_GET["var"];
} else if (isset($_POST["var"])) {
$var = $_POST["var"];
}



Cette méthode est cependant à exclure, car elle enlève toute la sécurité introduite par l'usage de GET ou POST !

Voilà bonne prog !

bLiNkSeB - Anciennement sebastienbro
mercredi 25 août 2004 à 23:08:04 | Re : pbs de variables dans une zone admin

attentio

salut !

bon... alors pour la variable action C cool, ca a l'air de marcher,mais maintenant j'ai autre soucis dans la page action.php :


if ($action =="modifier")
{
$requeteMYSQL="UPDATE collections SET nom_collection='$nom_collection', univers_id='$univers_id' WHERE collection_id='$collection_id'";
$message .=" modifiée.";
}

la variable collection_id n'est toujours pas reconnu (ainsi que les autres)

j'uis chiant ....

merci encore

attentio

@+
mercredi 25 août 2004 à 23:53:47 | Re : pbs de variables dans une zone admin

blinkseb

Ah oui exact c'est normal :)

En faite, tu ne passe à aucun moment les variables récupérés dans "formulaires.php" à "action.php".

Pour ce faire, tu as deux choix, soit l'url (GET) ou le formulaire (POST). Tu utilises le formulaire! Donc, vu que tu connais déjà tes valeurs, et que l'utilisateur n'a pas à les voir, ni à les modifier, tu doit utiliser des champs "hidden"

donc dans ton formulaire ça donnera :



<form action="actions_collections.php" method="post">
<input type="hidden" name="action" value="<?=$action; ?>" />
<input type="hidden" name="collection_id" value="<?=$collection_id;?>" />
<input type="hidden" name="univers_id" value="<?=$univers_id;?>" />

nom de la collection : <input type="text" name="nom_collection" value="<? echo $resultatscollections['nom_collection'];?>"><br>

<input type="submit" value="<? echo $action; ?>">


</form>



Rajoute autant de champ hidden que de variable à faire passer !

Et pour récupérer les valeurs sur l'autre page, c'est $_POST[] qu'il faut utiliser !



$collection_id = $_POST["collection_id"];
$univers_id = $_POST["univers_id"];



J'espère que tu as compris mon exemple !

bLiNkSeB - Anciennement sebastienbro
jeudi 26 août 2004 à 00:58:39 | Re : pbs de variables dans une zone admin

attentio

salut !!!

Merci de ta patience seb ....
bon en ce qui concerne la recuperation des variables je n'ai plus d' Undefined variable sauf si je veux ajouter une collection
sur la page formulaire.php avec la variable collection_id


$req_collections = mysql_query("select* FROM collections WHERE collection_id='$collection_id'");


Deuxieme chose que je fasse un INSERT TO, un UPDATE, un DELETE FROM rien ne se passe dans ma base de donnée, cad que dans la page action j'ai bien une confirmation de mon action mais apres ca suit pas ???? moi pas comprendre ...

Je te renvoie donc le code des deux pages a nouveau modifiées



//action.php

<?
$action=$_POST['action'];
$collection_id=$_POST['collection_id'];
$univers_id=$_POST['univers_id'];
$nom_collection=$_POST['nom_collection'];
//initialisation
$message="la collection " . $_POST['nom_collection'] . " a été ";
if ($action =="modifier")
{
$requeteMYSQL="UPDATE collections SET nom_collection='$nom_collection', univers_id='$univers_id' WHERE collection_id='$collection_id'";
$message .=" modifiée.";
}

if ($action =="ajouter")
{
$requeteMYSQL= "INSERT INTO collections VALUES('','$nom_collection', '$univers_id')";
$message .=" ajoutée.";
}

if ($action =="supprimer")
{
$requeteMYSQL= "DELETE FROM collections WHERE collection_id='$collection_id'";
$message .=" supprimée.";
}
$message .="<BR> Merci de votre collaboration.";

//alimentation de la base
$connexion=mysql_connect('localhost', 'root','');
mysql_select_db('db', $connexion);
?>

<html><head></head><body>
<?
//message de confirmation
echo $message;
?>
</body></html>








<?
$connexion = mysql_connect('localhost', 'root', '');
mysql_select_db('bd', $connexion);
if (isset($_GET['collection_id']))
{
$collection_id=$_GET['collection_id'];
}

if (isset($_GET["action"]))
{
$action = $_GET["action"];
}
$req_collections = mysql_query("select* FROM collections WHERE collection_id='$collection_id'");
$req_univers = mysql_query("select* FROM univers ");
$univers_id['univers_id']="";
mysql_close($connexion);
?>
<html><head></head><body>
<?
//recuperer les donnees
$resultatscollections =mysql_fetch_array($req_collections);
//insertion des donnees
?>


<form action="actions_collections.php" method="post">S
<input type="hidden" name="action" value="<? echo($action); ?>" />
<input type="hidden" name="univers_id" value="<? echo($univers_id); ?>" />
<input type="hidden" name="collection_id" value="<? echo($collection_id); ?>" />
<input type="hidden" name="nom_collection" value="<? echo($nom_collection); ?>" />
nom de la collection : <input type="text" name="nom_collection" value="<? echo $resultatscollections['nom_collection'];?>"><br>
univers : <select name="univers">
<?
//affichage des univers
$selection="";
for($n=0;$n<mysql_num_rows($req_univers);$n++)
{
$resultatsunivers =mysql_fetch_array($req_univers);
$selection="";
if($resultatsunivers['univers_id'] == $resultatscollections['univers_id'])
{
$selection = " selected";
}
else
{
$selection="";
}

echo"<option value='" . $resultatsunivers['univers_id'] ."'" . $selection . ">" . $resultatsunivers['nom_univers'] ."</option>";
}

?>
</select>
<input type="submit" value="<? echo $action; ?>">
</form></body></html>



merci encore mille fois

attentio

A+
jeudi 26 août 2004 à 01:39:55 | Re : pbs de variables dans une zone admin

blinkseb

Il est fort probable que le Undefined variable vienne d'ici :


if (isset($_GET['collection_id']))
{
$collection_id=$_GET['collection_id'];
}


En effet si la variable n'est pas passer en GET, elle n'est pas initialisé.

Il faut donc être sûr que ton URL d'appel de la page est bien
http://www.monsite.com/formulaire.php?collection_id=10 par exemple. Sinon la variable $collection_id n'existe pas.

Pour contrer celà, tu peux faire


if (isset($_GET['collection_id']))
{
$collection_id=$_GET['collection_id'];
} else
$collection_id = 0;


Ici si la variable n'existe pas, elle est crée avec comme valeur 0

Ton second problème découle du faite que $connection_id n'étant pas défini dasn formulaire.php, la variable passé à action.php est vide.

Enfin


<input type="hidden" name="nom_collection" value="<? echo($nom_collection); ?>" />


Cette ligne n'est pas nécessaire, puisque tu redéfini après un TEXT avec le même nom, donc les données seront transmises, donc enlève le HIDDEN !

Tiens moi au courant !

bLiNkSeB - Anciennement sebastienbro
jeudi 26 août 2004 à 14:11:19 | Re : pbs de variables dans une zone admin

attentio

salut !

bon ben voila les nouvelles ...
alors pour les variables tout passe mais toujours pas moyen d'interagir sur la base de données ... est ce que ca vient de $requeteMYSQL ???? je n'en sais rien....

merci de ton aide

attentio
jeudi 26 août 2004 à 14:18:24 | Re : pbs de variables dans une zone admin

blinkseb

Ah mais bien sûr, je suis bête :)

Tu créé ta requête avec $requeteMYSQL, mais tu ne l'envoit jamais à mysql avec mysql_query() !

Il faut donc faire :



$connexion=mysql_connect('localhost', 'root','');
mysql_select_db('db', $connexion);

mysql_query($requeteMYSQL) or die
("Erreur MySQL : " . mysql_error()); //Envoie des infos à la base

mysql_close($connexion); // fermeture de la connection



Voilà, cette fois si je pense que c'est la bonne :)

bLiNkSeB - Anciennement sebastienbro

1 2

Cette discussion est classée dans : page, php, formulaire, action, collection


Répondre à ce message

Sujets en rapport avec ce message

2 formulaire en conflit [ par scromania ] bonjour, Voila dans la cas ou l'utilisateur et de niveau =9 alors une page (include)et en plus. [code=php]if ($visiteur == 9){ include("modules/Page Sécurité Formulaire php. Dangereux ou pas? [ par KcHeY ] Bonjour all, J'ai entendu parler de faille(s) php et j'aurai souhaiter savoir si j'était concerné. J'ai un formulaire et un bouton (sur une page html téléchargement de fichier de puis serveur [ par nouvinfo ] Bonjour, Je suis un novice. voici ce que je fais: J'ai crée un formulaire dans une page.php ('formulaire_entrer_donnee.php'). Ce formulaire permet d Mon formulaire ne s'affiche pas dans ma page php [ par brfrance ] Bonjour, Bonjour, Mon formulaire html (voir ci dessous) ne s'affiche pas dans ma page php. formulaire :[code=html] " name="commentaire"> plusieurs submit dans un seul formulaire [ par smahaneAAI ] Salut tout l monde!! j'ai crée un formulaire qui poste à une seule page .php . dans mon formulaire j'ai 4 bouton normalement : 1=>affichage 2=>modific html ep php [ par manueg ] Bonjour, je débute en déve PHP et je me pose les questions suivantes....J'utilise Dreamweaver et EasyPHP et ApacheMon approche est la suivante: je fai PHP 4.2.3 sous Linux [ par JosueClement ] Bonjour à tous...Je viens de réinstaller mon PC sous linux et j'ai installé apache et PHP 4.2.3maintenant j'ai un problème avec les formulaires:// Pag definir l'action d'une page php [ par LazY ] Ca peut paraitre evident,mais comment on fait pour recupérer ce qui est inscrit apres l'adresse d'une page php?ex: comment marche Action=ajout dans 'h recorset sous dream mx [ par sbailay ] salut je debute en PHP et je rame à max pour faire un recordset un peu particulier:sur la premiere page "recherche.php" j'ai un formulaire "form_reche formulaire [ par LeoLS ] Bonjour ,Voilà j'ai un problème ...Je voudrais faire via l'admin un formulaire sur la page formulaire_demon.php et que cela s'écrit sur une page du st


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,260 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales