Précédent   Forum des professionnels en informatique > PHP > Scripts
Scripts Forum d'entraide sur les scripts PHP téléchargés. Les meilleurs scripts PHP, la FAQ scripts PHP, toutes les FAQ PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/06/2007, 15h17   #1
Membre du Club
 
Inscription : novembre 2003
Messages : 155
Détails du profil
Informations forums :
Inscription : novembre 2003
Messages : 155
Points : 66
Points : 66
Envoyer un message via ICQ à jncoffy
Par défaut Problème de variable non déclarée

Bonjour

Après installation de easyPHP 1.8, j'ai une erreur dans mes scripts qui m'indique 'variable non déclarée'

Mon code est le suivant ;
Code :
1
2
3
4
if ($ch_logi=="")
{
    $nb=$nb+1;
}
A l'exécution, la variable ch_logi est déclarée inconnue. Cette variable est récupérée d'un formulaire avec la méthode Post.

Quelqu'un peut-il me dire comment déclarer correctement cette variable dans mon script php ?

Question subsidiaire.Quelle ligne du fichier php.ini faut-il modifier pour que la déclaration des variables ne soit plus obligatoire ?

Merci de votre aide

Jean noël
jncoffy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 15h22   #2
Membre éclairé
 
Avatar de Asmodean
 
Inscription : février 2006
Messages : 311
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France

Informations forums :
Inscription : février 2006
Messages : 311
Points : 346
Points : 346
Envoyer un message via MSN à Asmodean
La déclaration de variable n'est pas obligatoire. Si je ne me trompes pas ce n'est pas une erreur que tu as mais une "notice". C'est juste pour attirer ton attention sur quelque chose qui pourrait être un problème (mais qui n'en ai pas forcément).

Pour ne pas que cette notice apparaisse il faut que la ligne suivante soit dans ton php.ini (recherche "error_reporting") :

error_reporting = E_ALL & ~E_NOTICE


En ce qui concerne la variable de formulaire tu la récupère par l'intermédiaire de :

Asmodean est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 15h29   #3
Membre du Club
 
Inscription : novembre 2003
Messages : 155
Détails du profil
Informations forums :
Inscription : novembre 2003
Messages : 155
Points : 66
Points : 66
Envoyer un message via ICQ à jncoffy
Par défaut Variable non déclarée

Merci Asmodean pour ton aide

J'ai modifié mon code en mettant

Code :
1
2
3
4
if ($POST['ch_logi']=="")
{
    $nb=$nb+1;
}
Mais j'obtiens le message d'erreur :
Citation:
Notice: Undefined variable: POST in e:\easyphp\www\jncoffy\dossiers.php on line 107
Pourtant mon formulaire est déclaré comme ceci

Code HTML :
1
2
3
4
5
6
7
8
9
10
11
                    <form method="post" action="dossiers.php">
                      Logiciel : 
                      <select name="ch_logi">
                        <option value="tout">tout 
                        <option value="access">access 
                        <option value="ciel">ciel 
                        <option value="excel">excel 
                        <option value="frontPage">frontPage 
                        <option value="powerPoint">powerPoint 
                        <option value="word">word 
                      </select>


Quelle erreur ai-je encore faite ?
jncoffy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 15h31   #4
Membre éclairé
 
Avatar de deY!
 
Inscription : avril 2006
Messages : 403
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : avril 2006
Messages : 403
Points : 358
Points : 358
et pas

Le premier est une variable globales, le deuxieme un simple tableaux inexistant en l'occurence.
__________________
deY!
deY! est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 15h38   #5
Membre du Club
 
Inscription : novembre 2003
Messages : 155
Détails du profil
Informations forums :
Inscription : novembre 2003
Messages : 155
Points : 66
Points : 66
Envoyer un message via ICQ à jncoffy
Par défaut variable non déclarée

effectivement j'avais une erreur dans $_post. Je mettais $post.

Mais, même en corrigeant

Code :
1
2
3
4
if ($_POST['ch_logi']=="")
{
    $nb=$nb+1;
}
j'obtiens toujours le message :
Citation:
Notice: Undefined index: ch_logi in e:\easyphp\www\jncoffy\dossiers.php on line 107
si j'enlève les apostrophes autour de ch_logi
Code :
1
2
3
4
if ($_POST[ch_logi]=="")
{
    $nb=$nb+1;
}
J'obtiens l'erreur
Citation:
Notice: Use of undefined constant ch_logi - assumed 'ch_logi' in e:\easyphp\www\jncoffy\dossiers.php on line 107
Je ne vois vraiment pas ce qui ne va pas dans mon code
jncoffy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 15h40   #6
Membre éclairé
 
Avatar de Asmodean
 
Inscription : février 2006
Messages : 311
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France

Informations forums :
Inscription : février 2006
Messages : 311
Points : 346
Points : 346
Envoyer un message via MSN à Asmodean
En fermant les balise <option> (avec </option>) dans ton formulaire ca serait mieux.
Asmodean est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 15h41   #7
Membre du Club
 
Inscription : avril 2007
Messages : 121
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 121
Points : 61
Points : 61
peut on avoir le code du formulaire que tu envoi ?
audran12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 15h45   #8
Membre éclairé
 
Avatar de deY!
 
Inscription : avril 2006
Messages : 403
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : avril 2006
Messages : 403
Points : 358
Points : 358
en fermant ton formulaire surtout... voir en ajoutant un name et un enctype... ça peut toujours aider...

Mais surtout... comment valides-tu ton formualaire ? avec un bouton submit, ou une fonction javascript ?

et au lieu de
Code :
if ($_POST['ch_logi']=="")
Code :
if (empty($_POST['ch_logi']))
peut etre preferable, sinon
Code :
if (!isset($_POST['ch_logi']))
__________________
deY!
deY! est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 15h53   #9
Membre du Club
 
Inscription : novembre 2003
Messages : 155
Détails du profil
Informations forums :
Inscription : novembre 2003
Messages : 155
Points : 66
Points : 66
Envoyer un message via ICQ à jncoffy
Par défaut variable non délcarée

Voici un extrait de mon code

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
      <table width="95%" border="0">
          <tr> 
            <td width="30"></td>
            <td> 
              <table width="100%" border=1 bgcolor="#C4836C">
                <tr> 
                  <td> 
                    <form method="post" action="dossiers.php">
                      Logiciel : 
                      <select name="ch_logi">
                        <option value="tout">tout </option>
                        <option value="access">access </option>
                        <option value="ciel">ciel </option>
                        <option value="excel">excel </option>
                        <option value="frontPage">frontPage </option>
                        <option value="powerPoint">powerPoint </option>
                        <option value="word">word </option>
                      </select>
                      &nbsp;&nbsp;&nbsp;&nbsp; Niveau souhaité :&nbsp; 
                      <select name="ch_niveau">
                        <option value="tout">tout 
                        <option value="débutant">débutant 
                        <option value="initié">initié 
                        <option value="expert">expert 
                      </select>
                      &nbsp;&nbsp;&nbsp;&nbsp; Type de dossier :&nbsp; 
                      <select name="ch_type">
                        <option value="tout">tout 
                        <option value="cours">cours 
                        <option value="exercice">exercice 
                        <option value="memento">memento 
                      </select>
                      &nbsp;&nbsp; 
                      <input type="submit" value=" O K " name="submit">
                    </form>
                  </td>
                </tr>
              </table>
            </td>
          </tr>
        </table>
        <img src="images/ligne.jpg" width="304" height="25"></h4>
      <h4>S&eacute;lectionnez un dossier dans la liste
     <?
     include("inclus/connect.php");
     $nb=0;
	 $table = "dossiers";
	 $query = "SELECT numero,document,remarque,niveau,logiciel,taille,fichier FROM $table";
	if ($_POST['ch_logi']=="")
        {
        $nb=$nb+1;
		}
	 if ($_POST['ch_niveau']=="")
        {
        $nb=$nb+1;
		$ch_niveau="tout";
        }
Les lignes en rouge sont celles sur lesquelles le message d'erreur s'affiche.
j'ai rajouté </option> dans le formulaire, mais sans changement
Mon formulaire est validé par submit.
jncoffy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 15h59   #10
Membre du Club
 
Inscription : novembre 2003
Messages : 155
Détails du profil
Informations forums :
Inscription : novembre 2003
Messages : 155
Points : 66
Points : 66
Envoyer un message via ICQ à jncoffy
Si je met
if (!isset($_POST['ch_logi']))
à la place de if ($ch_logi=="")
alors là OK, ça marche.

Mais comment coder si j'ai
if ($ch_logi<>"tout")

avec
if ($_POST['ch_logi']<>"tout")
ça ne marche pas
jncoffy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 16h03   #11
Membre du Club
 
Inscription : avril 2007
Messages : 121
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 121
Points : 61
Points : 61
jncoffy je ne comprends pas les erreurs que tu as:

J'ai repris ton code, j'ai testé avec easyphp et j'ai aucun message d'erreur, et en faisant :
Code :
echo $_POST['ch_logi'];
cela ma ecrit la variable qui était selectionnée.

donc je vois vraiment pas pouquoi ça te met des erreurs.

desolé
audran12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 16h04   #12
Membre du Club
 
Inscription : avril 2007
Messages : 121
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 121
Points : 61
Points : 61
si <> veut bien dire different de en php c'est !=
audran12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 16h05   #13
Membre du Club
 
Inscription : avril 2007
Messages : 121
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 121
Points : 61
Points : 61
donc
Code :
1
2
 
if ($_POST['ch_logi']!="tout")
bon courage
audran12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 16h06   #14
Membre éclairé
 
Avatar de Asmodean
 
Inscription : février 2006
Messages : 311
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France

Informations forums :
Inscription : février 2006
Messages : 311
Points : 346
Points : 346
Envoyer un message via MSN à Asmodean
si tu fais un


au début de la page ca affiche quoi (ce qui est intéressant c'est ce qui s'affiche quand tu valide ton formulaire).

Et si ca n'affiche qu'un array vide qu'est ce que donne

Code php :
print_r($HTTP_POST_VARS)
Asmodean est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 16h09   #15
Membre du Club
 
Inscription : novembre 2003
Messages : 155
Détails du profil
Informations forums :
Inscription : novembre 2003
Messages : 155
Points : 66
Points : 66
Envoyer un message via ICQ à jncoffy
Par défaut variable non déclarée

Ok, ça marche, si je met
if (!isset($_POST['ch_logi])<>"tout")

Mais alors une question.

Chez Free, j'utilise simplement le code
if ($ch_logi<>"tout")
ou
if ($ch_logi=="")

et ça marche très bien. Il n'y a pas moyen de faire en sorte que ça marche aussi chez moi, avec easy php 1.8 (php 4) ?
jncoffy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 16h17   #16
Membre éclairé
 
Avatar de deY!
 
Inscription : avril 2006
Messages : 403
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : avril 2006
Messages : 403
Points : 358
Points : 358
Ensuite ton code ne veut rien dire !

Code :
!isset($_POST['ch_logi])<>"tout"
en gros !isset ... te renvoie TRUE ou FALSE et tu le compare avec "tout"... donc ça ne veut rien dire...
__________________
deY!
deY! est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 16h24   #17
Membre du Club
 
Inscription : novembre 2003
Messages : 155
Détails du profil
Informations forums :
Inscription : novembre 2003
Messages : 155
Points : 66
Points : 66
Envoyer un message via ICQ à jncoffy
Par défaut déclaration variable

En fait, je suis pas un pro du PHP et du code en général. Je me dépatouille comme je peux

Mais alors comment remplacer
if ($ch_logi<>"tout")

d'autant que j'ai également une erreur dans la ligne
{
$query = "$query"." "."where logiciel='$ch_logi'";
}

qui est l'action à réaliser si le test est vérifié. Là aussi, il me dit que la variable ch_logi n'existe pas.
jncoffy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 16h27   #18
Membre éclairé
 
Avatar de deY!
 
Inscription : avril 2006
Messages : 403
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : avril 2006
Messages : 403
Points : 358
Points : 358
au lieu de <> essaye !=

ou laisse seulement

Code :
!isset($_POST['ch_logi'])
il va donc rentré dans la condition si la variable posté n'existe pas.
si juste avant le if tu place un il te retourne quelque chose ?
__________________
deY!
deY! est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 16h34   #19
Membre du Club
 
Inscription : novembre 2003
Messages : 155
Détails du profil
Informations forums :
Inscription : novembre 2003
Messages : 155
Points : 66
Points : 66
Envoyer un message via ICQ à jncoffy
Quand je fais echo $_POST['ch_logi'];
avant le if
il me retourne
Notice: Undefined index: ch_logi in e:\easyphp\www\jncoffy\dossiers.php

Si je met
if ($_POST['ch_logi'!="tout")
il me retourn le même message d'erreur

Problème d'index et non de variable. C'est quoi ?
jncoffy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 16h38   #20
Membre éclairé
 
Avatar de Asmodean
 
Inscription : février 2006
Messages : 311
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France

Informations forums :
Inscription : février 2006
Messages : 311
Points : 346
Points : 346
Envoyer un message via MSN à Asmodean
Je me répète puisque tu n'a pas l'air de vouloir faire les tests que je te demande....

Qu'est ce qui s'affiche si tu fais

??
Asmodean est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h41.


 
 
 
 
Partenaires

Hébergement Web