[PHP] Problème de variables
Fermé
analgesix
Messages postés
7
Date d'inscription
jeudi 1 mai 2003
Statut
Membre
Dernière intervention
18 mars 2009
-
15 févr. 2005 à 16:29
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 - 8 janv. 2008 à 15:02
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 - 8 janv. 2008 à 15:02
5 réponses
Bonjour
je suis débutante en php. j'ai déjà fait un site avec swishmax. J'ai créé une page avec un formulaire a remplir er un script en php.
Mon premier site marche correctement.
Jen ai fait un deuxième dans leqeul je mets exactement le meme procede de formulaire, avec tout pareil. Et la ca ne marche plus.
Voici mes scripts dans ma touche envoi dans swishmax :
on (press) {
var envoi = new LoadVars();
envoi.phpnom = nom;
envoi.phpprenom = prenom;
envoi.phpemail = email;
envoi.phpsociete = societe;
envoi.phptelephone = telephone;
envoi.phpmessage = message;
envoi.phpbooleennewletter = booleennewletter;
envoi.send("contact.php","POST");
}
Voici mon script dans le php:
$nom = $HTTP_POST_VARS['phpnom'];
$prenom = $HTTP_POST_VARS["phpprenom"];
$societe = $HTTP_POST_VARS["phpsociete"];
$telephone = $HTTP_POST_VARS["phptelephone"];
$email = $HTTP_POST_VARS["phpemail"];
$texte = $HTTP_POST_VARS["phpmessage"];
$booleennewletter = $HTTP_POST_VARS["phpbooleennewletter"];
$booleen = 0;
if ($booleennewletter == 0)
{
$txtbooleennewletter = "ne pas recevoir la newletter";
}
else
{
$txtbooleennewletter = "recevoir la newletter";
}
echo "<div align='center'>";
if ($nom == "")
{
echo 'le nom est vide...';
$booleen = 1;
}
if ($prenom == "")
{
echo 'le prénom est vide...';
$booleen = 1;
}
if ($societe == "")
{
echo 'la société est vide...';
$booleen = 1;
}
if ($telephone == "")
{
echo 'le téléphone est vide...';
$booleen = 1;
}
if ($email == "")
{
echo 'e-mail est vide...';
$booleen = 1;
}
else
{
$message="<HTML><BODY><FONT face=\"Courier\"><BR><BR>";
Le souci que j'ai c'est que quand je ne remplis aucun champ, il me mets nom vide, prenom vide... donc LOGIQUE
Quand je remplis tous les champs il me mets ke les champs sont vides et en plus il ajoute :
Notice: Undefined variable: HTTP_POST_VARS in C:\Program Files\EasyPHP 2.0b1\www\Plateform\contact.php on line 22
Alors je ne comprends pas...
Please help.
Je dois rendre ce projet dans quelque temps
Merci
je suis débutante en php. j'ai déjà fait un site avec swishmax. J'ai créé une page avec un formulaire a remplir er un script en php.
Mon premier site marche correctement.
Jen ai fait un deuxième dans leqeul je mets exactement le meme procede de formulaire, avec tout pareil. Et la ca ne marche plus.
Voici mes scripts dans ma touche envoi dans swishmax :
on (press) {
var envoi = new LoadVars();
envoi.phpnom = nom;
envoi.phpprenom = prenom;
envoi.phpemail = email;
envoi.phpsociete = societe;
envoi.phptelephone = telephone;
envoi.phpmessage = message;
envoi.phpbooleennewletter = booleennewletter;
envoi.send("contact.php","POST");
}
Voici mon script dans le php:
$nom = $HTTP_POST_VARS['phpnom'];
$prenom = $HTTP_POST_VARS["phpprenom"];
$societe = $HTTP_POST_VARS["phpsociete"];
$telephone = $HTTP_POST_VARS["phptelephone"];
$email = $HTTP_POST_VARS["phpemail"];
$texte = $HTTP_POST_VARS["phpmessage"];
$booleennewletter = $HTTP_POST_VARS["phpbooleennewletter"];
$booleen = 0;
if ($booleennewletter == 0)
{
$txtbooleennewletter = "ne pas recevoir la newletter";
}
else
{
$txtbooleennewletter = "recevoir la newletter";
}
echo "<div align='center'>";
if ($nom == "")
{
echo 'le nom est vide...';
$booleen = 1;
}
if ($prenom == "")
{
echo 'le prénom est vide...';
$booleen = 1;
}
if ($societe == "")
{
echo 'la société est vide...';
$booleen = 1;
}
if ($telephone == "")
{
echo 'le téléphone est vide...';
$booleen = 1;
}
if ($email == "")
{
echo 'e-mail est vide...';
$booleen = 1;
}
else
{
$message="<HTML><BODY><FONT face=\"Courier\"><BR><BR>";
Le souci que j'ai c'est que quand je ne remplis aucun champ, il me mets nom vide, prenom vide... donc LOGIQUE
Quand je remplis tous les champs il me mets ke les champs sont vides et en plus il ajoute :
Notice: Undefined variable: HTTP_POST_VARS in C:\Program Files\EasyPHP 2.0b1\www\Plateform\contact.php on line 22
Alors je ne comprends pas...
Please help.
Je dois rendre ce projet dans quelque temps
Merci
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
15 févr. 2005 à 23:13
15 févr. 2005 à 23:13
Salut,
Une fonction fonctionne comme un sous programme. Les variables utilisées dans une fonction ne seront donc pas les mêmes que celles utilisées dans le programme principal.
Une variable dans une fonction est une variable locale (au contraire des variables du programme principal qui sont des variables globales).
Donc le $en_cours = 0; du début n'est pas la même variable que celle utilisée dans la fonction afficher : $en_cours = $en_cours - 1; même si elles ont le même nom.
Si tu veux utiliser la variable globale $en_cours dans ta fonction il faut la déclarer en globale:
=> http://fr2.php.net/language.variables.scope
Autre soucis: quand on déclare une fonction en Php, elle s'execute.
Ex:
Donc dans ton cas tu risques de voir la valeur de $en_cours égale à -1 après avoir déclaré ta fonction (puisque au moment où tu déclares ta fonction, $var_img est vide, donc différent de -1). Je n'en suis pas sûr mais vérifie, ça ne m'étonnerais pas....
Si c'est le cas, il faudra ruser (un truc du style réecrire $en_cours = 0; après la déclaration de ta fonction.).
Et encore autre chose. Avec <?php Affiche("-1");?> tu risques d'avoir du vide. Tu ne lui a rien demandé d'afficher à ta fonction.
Donc dans ta fonction, fait un echo à la fin (echo $en_cours)
Bonne chance... :-)
Une fonction fonctionne comme un sous programme. Les variables utilisées dans une fonction ne seront donc pas les mêmes que celles utilisées dans le programme principal.
Une variable dans une fonction est une variable locale (au contraire des variables du programme principal qui sont des variables globales).
Donc le $en_cours = 0; du début n'est pas la même variable que celle utilisée dans la fonction afficher : $en_cours = $en_cours - 1; même si elles ont le même nom.
Si tu veux utiliser la variable globale $en_cours dans ta fonction il faut la déclarer en globale:
function Affiche($var_img) { global $en_cours; if ($var_img==-1) { $en_cours = $en_cours - 1; [...] }
=> http://fr2.php.net/language.variables.scope
Autre soucis: quand on déclare une fonction en Php, elle s'execute.
Ex:
function afficher() { echo "machin"; } // Ca va afficher machin afficher(); // Ca va afficher machin encore une fois
Donc dans ton cas tu risques de voir la valeur de $en_cours égale à -1 après avoir déclaré ta fonction (puisque au moment où tu déclares ta fonction, $var_img est vide, donc différent de -1). Je n'en suis pas sûr mais vérifie, ça ne m'étonnerais pas....
Si c'est le cas, il faudra ruser (un truc du style réecrire $en_cours = 0; après la déclaration de ta fonction.).
Et encore autre chose. Avec <?php Affiche("-1");?> tu risques d'avoir du vide. Tu ne lui a rien demandé d'afficher à ta fonction.
Donc dans ta fonction, fait un echo à la fin (echo $en_cours)
Bonne chance... :-)
analgesix
Messages postés
7
Date d'inscription
jeudi 1 mai 2003
Statut
Membre
Dernière intervention
18 mars 2009
16 févr. 2005 à 13:37
16 févr. 2005 à 13:37
Salut,
merci pour ton aide. J'essaie et je vous tiens au courant.
merci pour ton aide. J'essaie et je vous tiens au courant.
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
17 févr. 2005 à 22:46
17 févr. 2005 à 22:46
Erratum:
Je viens de tester la déclaration d'une simple fonction en Php.
Appremment avec Wamp (serveur avec Php5), lorsqu'on déclare une fonction elle ne s'execute pas....
Pourtant avant j'avais des soucis lorsque la déclaration d'une fonction envoyait une requête Sql...(si la requête était fausse j'avais une erreur)...
Voilà, donc je me suis peut être gourré à ce niveau là... Peut être que ça le fait avec certaine versions de Php... Chais pas :-)
Je viens de tester la déclaration d'une simple fonction en Php.
Appremment avec Wamp (serveur avec Php5), lorsqu'on déclare une fonction elle ne s'execute pas....
Pourtant avant j'avais des soucis lorsque la déclaration d'une fonction envoyait une requête Sql...(si la requête était fausse j'avais une erreur)...
Voilà, donc je me suis peut être gourré à ce niveau là... Peut être que ça le fait avec certaine versions de Php... Chais pas :-)
ad_creative
Messages postés
21
Date d'inscription
mardi 18 mars 2003
Statut
Membre
Dernière intervention
23 août 2005
14
18 févr. 2005 à 00:33
18 févr. 2005 à 00:33
salut ..
perso , j'ai jamais vu une fonction de lancée toute seul si tu ne l'appel pas ..
voilà le code que j'utilse ( 100% ok .. ;o)
// ----------------------------------------------------------
// Exécuter des requêtes SQL
$query = "SELECT * FROM photos ORDER by id";
$result = mysql_query($query) or die("Query failed");
// Afficher des résultats en HTML
$tmp_nom = "ejs_photo = new Array; \n";
$tmp_com = "com = new Array; \n";
$ind = 0 ;
$rep = "img/photos/";
while ($line = mysql_fetch_assoc($result))
{
$tmp_nom = $tmp_nom."ejs_photo[".$ind."]='".$rep.$line['lien']."'; \n" ;
$tmp_com = $tmp_com."com[".$ind."]='".$line['com']."'; \n" ;
$ind++ ;
}
// Fermeture de la connexion
mysql_close($link);
?>
<script language="JavaScript" type="text/javascript">
<!--
<? echo $tmp_nom; echo $tmp_com; ?>
function ejs_aff_photos(num)
{
if(document.getElementById)
{
ejs_fin = ""; insert = " .... | .... ";
if(num!=0)
ejs_fin += "<A HREF=# onClick='ejs_aff_photos("+(num-1)+");return(false)'><img src=img/back.jpg align=middle border=0></A>";
else
ejs_fin += "<A HREF=# onClick='ejs_aff_photos("+(ejs_photo.length-1)+");return(false)'><img src=img/back.jpg align=middle border=0></A>";
if(num!=(ejs_photo.length-1))
ejs_fin += insert+"<A HREF=# onClick='ejs_aff_photos("+(num+1)+");return(false)'><img src=img/next.jpg align=middle border=0></A>";
else
ejs_fin += insert+"<A HREF=# onClick='ejs_aff_photos("+(0)+");return(false)'><img src=img/next.jpg align=middle border=0></A>";
document.getElementById("ejs_photo_box").innerHTML = ejs_fin + "<br><br><IMG SRC='"+ejs_photo[num]+"' BORDER=0>" ;
document.getElementById("comment").innerHTML = (num+1) +" - "+com[num] ;
}
}
window.onload = new Function("ejs_aff_photos(0)")
-->
</script>
<big><div id="comment" class="header1"></div></big>
<P class=header2></p>
<br>
<center><DIV ID=ejs_photo_box></div></center>
// ----------------------------------------------------------
visible ici : http://adcomp.no-ip.org/photos.php
@+
perso , j'ai jamais vu une fonction de lancée toute seul si tu ne l'appel pas ..
voilà le code que j'utilse ( 100% ok .. ;o)
// ----------------------------------------------------------
// Exécuter des requêtes SQL
$query = "SELECT * FROM photos ORDER by id";
$result = mysql_query($query) or die("Query failed");
// Afficher des résultats en HTML
$tmp_nom = "ejs_photo = new Array; \n";
$tmp_com = "com = new Array; \n";
$ind = 0 ;
$rep = "img/photos/";
while ($line = mysql_fetch_assoc($result))
{
$tmp_nom = $tmp_nom."ejs_photo[".$ind."]='".$rep.$line['lien']."'; \n" ;
$tmp_com = $tmp_com."com[".$ind."]='".$line['com']."'; \n" ;
$ind++ ;
}
// Fermeture de la connexion
mysql_close($link);
?>
<script language="JavaScript" type="text/javascript">
<!--
<? echo $tmp_nom; echo $tmp_com; ?>
function ejs_aff_photos(num)
{
if(document.getElementById)
{
ejs_fin = ""; insert = " .... | .... ";
if(num!=0)
ejs_fin += "<A HREF=# onClick='ejs_aff_photos("+(num-1)+");return(false)'><img src=img/back.jpg align=middle border=0></A>";
else
ejs_fin += "<A HREF=# onClick='ejs_aff_photos("+(ejs_photo.length-1)+");return(false)'><img src=img/back.jpg align=middle border=0></A>";
if(num!=(ejs_photo.length-1))
ejs_fin += insert+"<A HREF=# onClick='ejs_aff_photos("+(num+1)+");return(false)'><img src=img/next.jpg align=middle border=0></A>";
else
ejs_fin += insert+"<A HREF=# onClick='ejs_aff_photos("+(0)+");return(false)'><img src=img/next.jpg align=middle border=0></A>";
document.getElementById("ejs_photo_box").innerHTML = ejs_fin + "<br><br><IMG SRC='"+ejs_photo[num]+"' BORDER=0>" ;
document.getElementById("comment").innerHTML = (num+1) +" - "+com[num] ;
}
}
window.onload = new Function("ejs_aff_photos(0)")
-->
</script>
<big><div id="comment" class="header1"></div></big>
<P class=header2></p>
<br>
<center><DIV ID=ejs_photo_box></div></center>
// ----------------------------------------------------------
visible ici : http://adcomp.no-ip.org/photos.php
@+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
922
8 janv. 2008 à 15:02
8 janv. 2008 à 15:02
salut,
ça doit être un problème de version de PHP. depuis PHP 4.1 tu peux utiliser '$_POST' à la place.
je suppose que tu as un serveur avec PHP 5, avec lequel il ne faut plus utiliser '$HTTP_POST_VARS'.
ça doit être un problème de version de PHP. depuis PHP 4.1 tu peux utiliser '$_POST' à la place.
je suppose que tu as un serveur avec PHP 5, avec lequel il ne faut plus utiliser '$HTTP_POST_VARS'.