Flux rss
Collection CommentCaMarche.net
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

[PHP] Problème de variables

analgesix, le mardi 15 février 2005 à 16:29:19
Bonjour à tous,

étant un gros nul en PHP, je vous mets le code avec lequel ça va pas. A la fin du code, je vous mets ce qui ne va pas

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Document sans nom</title>
<script language="javascript">
ejs_photo = new Array;
<?
$a = 0;
$var_img = 0;
$en_cours = 0;
$handle = opendir("./photos");
while (($file = readdir())!=false) {
clearstatcache();
if($file!=".." && $file!=".")
{
echo "ejs_photo[$a] = './photos/$file';";
$a++;
}
}
closedir($handle);

function Affiche($var_img)
{
if ($var_img==-1)
{
$en_cours = $en_cours - 1;
}
else
{
$en_cours = $en_cours + 1;
}
}
?>
</script>
</head>

<body>
<p><img name="Navig_Images" src="<?php $ejs_photo[$en_cours]; ?>" width="157" height="184" alt="">
</p>
<a href="<?php Affiche("-1");?>" class="menulink">Précedent</a>
<a href="<?php Affiche("+1");?>" class="menulink">Suivant</a>
</body>
</html>

Au niveau de la fonction Affiche, $en_cours=$en_cours+1 ou -1 , il me met variable indéfinie
Au niveau de IMG NAME, je voudrais que SRC récupère le chemin contenu dans le tableau ejs_photo

Merci d'avance
Répondre à analgesix  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
kilian, le mardi 15 février 2005 à 23:13:50
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:

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... :-)
Répondre à kilian

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
analgesix, le mercredi 16 février 2005 à 13:37:41
Salut,

merci pour ton aide. J'essaie et je vous tiens au courant.
Répondre à analgesix

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
kilian, le jeudi 17 février 2005 à 22:46:03
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 :-)
Répondre à kilian

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
ad_creative, le vendredi 18 février 2005 à 00:33:02
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

@+ DURA LEX SED LEX
Répondre à ad_creative

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
analgesix, le lundi 21 février 2005 à 13:13:28
Merci à tous
Répondre à analgesix

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
leelou, le mardi 8 janvier 2008 à 14:41:47
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
Répondre à leelou

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 Dalida, le mardi 8 janvier 2008 à 15:02:27
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'.

[ Mathieu ]
« On embauchera plus s'il est moins compliqué de licencier. » LP, 29 août 2007.
Répondre à Dalida
Passage de variable php en url (Résolu) Bonjour, J'ai une variable php : $variable Je veux l'envoyer par url a une autre page en utilisant javascript, comme ça: www.commentcamarche.net/forum/affich-9113523-passage-de-variable-php-en-url
Problem de variable et de langague (Résolu) je cherche a recuperer une valeur d'une variable php pour l'integre dans du html sauf que ma valeur final ne peut etre quand chiffre dans un langage html ex variable php $variable ligne de command html www.commentcamarche.net/forum/affich-4066620-problem-de-variable-et-de-langague
[PHP] variable de recherche dans un tableau (Résolu) Bonjour, j'aimerais mettre la variable ci-dessous dans un tableau, j'ai tenté le coup mais j'ai énormement d'erreurs apparaissant : variable : www.commentcamarche.net/forum/affich-2335125-php-variable-de-recherche-dans-un-tableau
[PHP] variable dans header (Résolu)Bonjour bonjour, Peut on mettre des variables dans les header?? Je m'explique... J aiun pb avec du code php et dans le header qui est au debut du code. Alors voila je voudrais creer une variable du type $Var_Name = quelque chose et ensuite faire... www.commentcamarche.net/forum/affich-3061396-php-variable-dans-header
PHP : variable qui ne se transmet pas (Résolu)Bonjour, Alors petit probleme : j'ai un variable qui est envoyé à la page employant une fonction qui fait un include (qui fonctionne parfaitement) d'une autre dont voici le code : www.commentcamarche.net/forum/affich-7663079-php-variable-qui-ne-se-transmet-pas
[PHP] Variables de session (Résolu)Hello. Me revoilà pour la 113000ème fois, cette fois-ci pour un problème de session. En effet, il faut savoir que dans mon projet de gestion documentaire, j'ai choisi d'utiliser des variables de session afin de récupérer les données de ma... www.commentcamarche.net/forum/affich-4347493-php-variables-de-session
CGI - Les variables d'environnementNotion de variable d'environnement Les variables d'environnement sont des données stockées dans des variables du système et permettent aux programmes d'avoir des informations sur son environnement. Dans le cas du programme CGI, l'environnement est... www.commentcamarche.net/contents/cgi/cgienv.php3