IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Variables non définies


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Communication
    Inscrit en
    Mars 2012
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Communication
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 92
    Par défaut Variables non définies
    Bonjour,

    Je ne comprends pas pourquoi ce code n'est pas bon sur 3 points (language, article et volume)... et ca me bloque ma page et donc mon site sur cette rubrique...

    1.
    PHP Notice: Undefined variable: language :
    Mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (!$language) $language = "fr";
    2.
    PHP Notice: Undefined variable: volume
    Mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $q_volume = "SELECT * FROM ".$language."_nep WHERE volume = '".urldecode($volume)."'";
    3.
    PHP Notice: Undefined variable: article
    Mon code:
    Voila... Avant que mon hébergeur fasse une mise a jour de ses serveurs tout ca marchait et a present ce n'est plus le cas et je ne comprends pas pourquoi ! :-(

    Merci de votre aide

    Biz

  2. #2
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2010
    Messages : 62
    Par défaut
    bonjour

    Ca te dit que tes variables n'existent pas.
    Vérifie par un isset(variable); qui renvoie vrai si la variable existe.

  3. #3
    Membre confirmé
    Homme Profil pro
    Communication
    Inscrit en
    Mars 2012
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Communication
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 92
    Par défaut
    Citation Envoyé par ndalaba Voir le message
    bonjour

    Ca te dit que tes variables n'existent pas.
    Vérifie par un isset(variable); qui renvoie vrai si la variable existe.
    euh... c'est-a-dire ?

    j'ai juste a placer isset devant ma ligne ?

    ex: isset if (!$language) $language = "fr"; c'est ca ??

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Par défaut
    bonjour,
    il me semble que register_globals a été désactivé c-a-d register_globals=off.
    En PHP 4.2 et plus la variable $volume envoyée depuis le formulaire n'est plus accessible directement avec $volume. Pour lire le champ volume il faut faire: $_POST['volume'] ou $_GET['volume'] suivant la méthode employée par le formulaire.

    Depuis PHP 4.2 la valeur par défaut du paramètre register_globals est à off, dans le fichier de config php.ini.

    sur ton serveur que renvoie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo "register_globals vaut " . ini_get(’register_globals’);

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Depuis PHP 4.2 la valeur par défaut du paramètre register_globals est à off
    Cela pour des raisons de sécurité !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  6. #6
    Membre confirmé
    Homme Profil pro
    Communication
    Inscrit en
    Mars 2012
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Communication
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 92
    Par défaut
    Citation Envoyé par armel18 Voir le message
    bonjour,
    il me semble que register_globals a été désactivé c-a-d register_globals=off.
    En PHP 4.2 et plus la variable $volume envoyée depuis le formulaire n'est plus accessible directement avec $volume. Pour lire le champ volume il faut faire: $_POST['volume'] ou $_GET['volume'] suivant la méthode employée par le formulaire.

    Depuis PHP 4.2 la valeur par défaut du paramètre register_globals est à off, dans le fichier de config php.ini.

    sur ton serveur que renvoie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "register_globals vaut " . ini_get(’register_globals’);
    Bonjour Armel et merci de ton aide...

    J'ai bien tente de voir si cela pouvait marcher avec ce que tu m'as prescris mais rien n'y fait... :-(

    Je vais coller un peu plus de code peut-etre que la fautese situe ailleurs meme si ca n'en a pas l'air...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    <?php
    // Connection au SGBD (mySQL)
    $link = @mysql_connect($host,$user,$pass) or die(mysql_error());
     
    // Connection à la base de données $base
    $db = @mysql_select_db($base,$link) or die(mysql_error());
     
    // Définition de la langue par défaut si la variable $lang n'est pas définie en URL
    if (!$language) $language = "fr";
     
    // Définition de la requête SQL : sélection du volume recherché dans la langue spécifiée
    // Note importante : aucun test de validité n'est fait sur $volume : à rajouter !!!
    $q_volume = "SELECT * FROM ".$language."_nep WHERE volume = '".urldecode($volume)."'";
     
    // Récupération du résultat de la requête dans $r_volume
    $r_volume = mysql_query($q_volume,$link) or die("Aucun résultat !");
     
    // Récupération du nombre de résultat renvoyés dans la variable $c_volume
    $c_volume = mysql_num_rows ($r_volume);
     
    // Boucle parcourant les différentes lignes du résultat de la requête SQL
    // La variable $article contient l'ensemble des lignes du résultat sous forme d'un tableau
    // à deux dimensions. Chaque ligne $article[$i] contient un enregistrement d'article complet
    // sous la forme d'un tableau associatif (paires de valeurs "nom de la colonne" => "valeur"
    // stripslashes() est une fonction supprimant les caractères d'échappemment \ pour affichage.
    $i = 0;
    while ($i < $c_volume) {
      $article[$i]["id"] = htmlentities(mysql_result($r_volume, $i, "id"));
      $article[$i]["titre"] = htmlentities(mysql_result($r_volume, $i, "titre"));
      $article[$i]["auteur"] = htmlentities(mysql_result($r_volume, $i, "auteur"));
      $article[$i]["pays"] = htmlentities(mysql_result($r_volume, $i, "pays"));
      $article[$i]["abstract"] = htmlentities(mysql_result($r_volume, $i, "abstract"));
      $article[$i]["motscles"] = htmlentities(mysql_result($r_volume, $i, "motscles"));
      $article[$i]["volume"] = htmlentities(mysql_result($r_volume, $i, "volume"));
      $article[$i]["numpage"] = htmlentities(mysql_result($r_volume, $i, "numpage"));
      $article[$i]["etoile"] = htmlentities(mysql_result($r_volume, $i, "etoile"));
      $i++;
    }
     
    ?>
     
    <?php
    	$titre = 'AFFICHAGE RESUMES';	
    	$keywords = 'AFFICHAGE RESUMES';	
    	include($_SERVER["DOCUMENT_ROOT"].'/header.php');
    	include($_SERVER["DOCUMENT_ROOT"].'/suivianalytics.php'); 
    ?>
    <link rel="shortcut icon" type="image/gif" href="http://www.cimm-icmm.org/images/logocimm.gif" />
    <br />
    <div align="center">
      <p><a name="haut"></a>  
      <table width="600" border="0" cellspacing="0" cellpadding="3">
        <tr>
          <td bgcolor="#000099" class="titrefr"><div align="center" class="titrefr">sommaire</div></td>
        </tr>
        <tr>
          <td class="textfr"><div align="justify">
              <?php
    $i = 0;
    while ($i < $c_volume) 
    { ?>
              <a href="#<?php echo "article".$i; ?>"><?php echo utf8_encode($article[$i]["titre"]); ?></a><br>
              <?php
      $i++;
    }
     
    ?>
           </div></td>
        </tr>
        <tr>
          <td bgcolor="#000099">&nbsp;</td>
        </tr>
      </table>
      <hr size="1" noshade color="#000099">
      <p class="auteurfr"><font size="1" face="Arial">
        <?php
     
    // Boucle parcourant l'ensemble des résultats de la requête pour les afficher les uns
    // après les autres dans un tableau HTML
    $i = 0;
    while($article[$i]) {
    Y a t-il des éléments qui permettent de cibler plus precisément le problème pour enfin le résoudre ?

    Merci de votre aide

    Biz

  7. #7
    Membre confirmé
    Homme Profil pro
    Communication
    Inscrit en
    Mars 2012
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Communication
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 92
    Par défaut
    Citation Envoyé par armel18 Voir le message
    Depuis PHP 4.2 la valeur par défaut du paramètre register_globals est à off, dans le fichier de config php.ini.

    sur ton serveur que renvoie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo "register_globals vaut " . ini_get(’register_globals’);
    Petite question (surement idiote) : mais... le fichier "config php.ini" c'est pareil que le fichier "config.inc.php" ??

    Car je ne trouve pas le fichier "config php.ini" dans mon arborescence... :-(

  8. #8
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Par défaut
    en fait le fichier de configuration php.ini sur un serveur unix se trouve dans/etc/php5/apache2/.

    Essaies de nous confirmer si la directive register_globals est à Off:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo phpinfo(); //cf.la ligne register_globals

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Ta ligne 9 devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $language = isset($_GET['language']) ?  $_GET['language'] : "fr";
    Ta ligne 13 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $q_volume = "SELECT * FROM ".$language."_nep WHERE volume = '".mysql_real_escapte_string(urldecode($_GET['volume']))."'";
    Comme le rappelle Bovino, il ne faut pas chercher a remettre l'ancienne configuration, elle est néfaste.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #10
    Membre confirmé
    Homme Profil pro
    Communication
    Inscrit en
    Mars 2012
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Communication
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 92
    Par défaut
    Citation Envoyé par armel18 Voir le message
    en fait le fichier de configuration php.ini sur un serveur unix se trouve dans/etc/php5/apache2/.

    Essaies de nous confirmer si la directive register_globals est à Off:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo phpinfo(); //cf.la ligne register_globals
    Ok merci Armel... je vais rechercher ce fichier et je te dirais ce qu'il en est...

  11. #11
    Membre confirmé
    Homme Profil pro
    Communication
    Inscrit en
    Mars 2012
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Communication
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 92
    Par défaut
    Citation Envoyé par armel18 Voir le message
    en fait le fichier de configuration php.ini sur un serveur unix se trouve dans/etc/php5/apache2/.

    Essaies de nous confirmer si la directive register_globals est à Off:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo phpinfo(); //cf.la ligne register_globals
    Je deviens fou !!

    Je n'arrive pas a mettre la main sur ce fichu fichier ! :-(

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Variable non définie
    Par philippef dans le forum Langage
    Réponses: 1
    Dernier message: 12/09/2007, 14h34
  2. Réponses: 5
    Dernier message: 28/08/2007, 11h42
  3. [SQL] Problème de variable non définies
    Par micka39 dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 01/05/2007, 23h10
  4. Réponses: 12
    Dernier message: 10/05/2006, 14h02
  5. Problème de variable non définie
    Par Mimi Bulles dans le forum Langage
    Réponses: 2
    Dernier message: 07/05/2006, 09h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo