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 :

Erreur dans le script


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    381
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Maroc

    Informations forums :
    Inscription : Novembre 2007
    Messages : 381
    Points : 180
    Points
    180
    Par défaut Erreur dans le script
    Bonjour,
    j'ai créé un script pour tester la langue de la page mais il me donne des erreurs.
    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
     
    <?php
    $lg=$_GET["lg"];
    if($lg=="en") { setcookie("lang","en");}
    if($lg=="fr") { setcookie("lang","fr");}
    function left($str,$nbr) {
       return substr($str,0,$nbr);
       }
    if($_COOKIE["lang"]=="") { setcookie("lang",left($_SERVER['HTTP_ACCEPT_LANGUAGE'],2))}
    if($_COOKIE["lang"]!="fr") { setcookie("lang","en")}
    if($_COOKIE["lang"]=="fr") {
    $titre = "Boutique de CD";
    $panier_vide = "Votre panier est vide";
    $panier_un = "Voter panier contient 1'article";
    $panier_plusieur1 = "Voter panier contient";
    $panier_plusieur2 = " articles";
    $def_bonjour = "Bonjour";
    $def_consulter = "Consultez notre catalogue";
    $cat_titre = "Notre Catalogue";
    $cat_select = "Selectionnez votre article";
    $retour = "Retour à l'accueil";
    $voir = "Voir et commander votre panier";
    $ajout_panier1 = "Vous avez ajouté";
    $ajout_panier2 = "à votre panier.";
    $panier_eff = "effacer";
    $panier_nom = "Votre nom ";
    $panier_pays = "Votre pays ";
    $panier_com = "Commander";
    $comm_merci = "Votre commande a bien été enregistrée, Merci.";
    $comm_nom = "Vous avez oublié de saisir votre nom !";
    $comm_pays = "Vous avez oublié de saisir votre pays !";
    }
    else
    {
    $titre = "CDs Shop";
    $panier_vide = "Your basket is empty";
    $panier_un = "Your basket contain 1 item";
    $panier_plusieur1 = "Your basket contain";
    $panier_plusieur2 = "items";
    $def_bonjour = "Hello";
    $def_consulter = "Browser our catalogue";
    $cat_titre = "Our catalogue";
    $cat_select = "Select your item";
    $retour = "Back to homepage";
    $voir = "See and order your basket";
    $ajout_panier1 = "You have added ";
    $ajout_panier2 = "to your basket";
    $panier_eff = "delete";
    $panier_nom = "Your name";
    $panier_pays = "Your country";
    $panier_com = "Oreder";
    $comm_merci = "Your order has been registred, Thank you.";
    $comm_nom = "You forget to fill the name field !";
    $comm_pays = "You forget to fill the country field !";
    }
    ?>
    Je me débute avec le php, alors n'hésitez pas à m'aider.
    Cordialement.

  2. #2
    jnore
    Invité(e)
    Par défaut
    Citation Envoyé par debutantasp Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php
     
    if($_COOKIE["lang"]=="") 
    	{ setcookie("lang",left($_SERVER['HTTP_ACCEPT_LANGUAGE'],2));}
    if($_COOKIE["lang"]!="fr") 
    	{ setcookie("lang","en");}
     
     
    ?>
    Je me débute avec le php, alors n'hésitez pas à m'aider.
    Cordialement.
    Je dirais, dans un 1er temps qu'il manque des ; à la fin des instructions.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    ca parait bien compliqué pour ne définir que 2 langues !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    // on definit "fr" par defaut
    setcookie("lang","fr");
    // sinon "en"
    if(@$_GET["lg"]!="fr" && @$_GET["lg"]!="") { setcookie("lang","en"); }
    if($_COOKIE["lang"]!="fr") { setcookie("lang","en"); }
    ?>
    Note : @$_GET["lg"] pour ne pas afficher d'erreur si "lg" n'a pas été passé dans l'URL

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    381
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Maroc

    Informations forums :
    Inscription : Novembre 2007
    Messages : 381
    Points : 180
    Points
    180
    Par défaut
    Merci pour vous, mais jreaux est ce que je mets juste le code que tu m'as fait? et je teste pas la langue du navigateur?

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    381
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Maroc

    Informations forums :
    Inscription : Novembre 2007
    Messages : 381
    Points : 180
    Points
    180
    Par défaut
    Même ce petit code ne marche pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <?php
    setcookie("lang","fr");
    if(@$_GET["lg"]!="fr" && @$_GET["lg"]!="") { setcookie("lang","en"); }
    if($_COOKIE["lang"]!="fr") { setcookie("lang","en"); }
    if($_COOKIE["lang"]=="fr") {
    echo 'bienvenue';
    }
    else
    {
    echo 'welcome';
    }
    ?>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\boutique\test.php:9) in c:\program files\easyphp1-8\www\boutique\test.php on line 10
     
    Notice: Undefined index: lang in c:\program files\easyphp1-8\www\boutique\test.php on line 12
     
    Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\boutique\test.php:9) in c:\program files\easyphp1-8\www\boutique\test.php on line 12
     
    Notice: Undefined index: lang in c:\program files\easyphp1-8\www\boutique\test.php on line 13
    welcome
    Aidez moi svp et Merci d'avance.

  6. #6
    Invité
    Invité(e)
    Par défaut
    ATTENTION !
    Les cookie doivent etre déclarés AVANT TOUT code HTML !
    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
    <?php // AVANT tout code html
    setcookie("lang","fr");
    if(@$_GET["lg"]!="fr" && @$_GET["lg"]!="") { setcookie("lang","en"); }
    if($_COOKIE["lang"]!="fr") { setcookie("lang","en"); }
    if($_COOKIE["lang"]=="fr") {
       $messagebienvenu =  'bienvenue';
    }
    else
    {
       $messagebienvenu =  'welcome';
    }
    ?>
    <html>
    <head>
    </head>
    <body>
    <?php
       echo $messagebienvenu;
    ?>
    </body>
    </html>

  7. #7
    FoxLeRenard
    Invité(e)
    Par défaut
    Normal, car si tu a vraiment fait un copier collé de ce script ,
    je vois deux retour chariot avant le <?PHP donc c'est un echo qui ouvre le header du HTML coté client OUI OUI ça suffit

    Bien sur je supposes que ce PHP n'est pas un include !!!!!
    si non il faudrait voir si la régle est respectée avant l' include !

  8. #8
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Whaou escuses moi mais le temps de rédiger et tu avais posté
    désolé

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    381
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Maroc

    Informations forums :
    Inscription : Novembre 2007
    Messages : 381
    Points : 180
    Points
    180
    Par défaut
    Ce script prends "fr" juste en premier temps, apres lorsque je clique sur anglais pendant 2 fois il change en anglais mais quand je ré clique français il change pas. Je veux récupérer la langue du navigateur et la tester si "fr" il affiche le texte en français sinon il l'affiche en anglais. Voilà le code
    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
     
    <?php // AVANT tout code html
    setcookie("lang","fr");
    if(@$_GET["lg"]!="fr" && @$_GET["lg"]!="") { setcookie("lang","en"); }
    if($_COOKIE["lang"]!="fr") { setcookie("lang","en"); }
    if($_COOKIE["lang"]=="fr") {
       $messagebienvenu =  'bienvenue';
    }
    else
    {
       $messagebienvenu =  'welcome';
    }
    ?>
    <html>
    <head>
    </head>
    <body>
    <table width="100%" border="0">
      <tr>
        <td><span class="Style1"><a href="test.php?lg=fr">Fran&ccedil;ais/French</a></span></td>
        <td><div align="right"><span class="Style2"><a href="test.php?lg=en">Anglais/English</a></span></div></td>
      </tr>
    </table>
    <?php
       echo $messagebienvenu;
    ?>
    </body>
    </html>
    Il donne déjà des erreurs au démarrage de la page, mais quand j'actualise elles disparaissent.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Notice: Undefined index: lang in c:\program files\easyphp1-8\www\boutique\test.php on line 4
     
    Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\boutique\test.php:4) in c:\program files\easyphp1-8\www\boutique\test.php on line 4
     
    Notice: Undefined index: lang in c:\program files\easyphp1-8\www\boutique\test.php on line 5
    Merci d'avance.

  10. #10
    FoxLeRenard
    Invité(e)
    Par défaut
    Oui tout ça n'est pas logique et beaucoup de bugs!

    Je te donnes un exemple de traitement complet qui récupéres
    ou ton cookies ou ton GET j'ais même rajouté une session

    Ce qui compte c'est l'ORDRE DANS LEQUEL ON CONTROLE
    si tu change cet ordre c'est cuit

    A partir de ça, tu brodera et supprimera si tu veux la session !
    qui fait un peut doublon ...



    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
     
    <?PHP
    session_start();
    // === 1 dejas mis en SESSION  oui non ==================
    if (!isset($_SESSION['Slang'])) {$_SESSION['Slang']="";$Slang="";}
         else {$Slang=$_SESSION['Slang'];}
    if ($Slang!="fr" && $Slang!="en") $Slang="";
    // === 2 rien encore en session  ======================
    if ($Slang=="")
     {
      // === 3 NON alors avons nous un cookies =============
      if (!isset($_COOKIE["lang"])) $lang=""; 
            else $lang=$_COOKIE["lang"];
      }
      // === 4 ========= ni session ni cookies on choisi fr
    if ($Slang=="" && $lang=="") {$Slang="fr";$Slang="fr"}
      // === 5 Y at il un nouveau choix de langue ============
      $lg="";
      if (isset($_GET["lg"])) $lg=trim($_GET["lg"]);
      if ($lg!="fr" && $lg!="en") $lg="";
     
      /* === Session Cookies ou GET LE CHOIX  
         c est le GET qui prime, si non la session
         et le cookies devraient etre les memes    
            alors on peut faire     =========    */
     
    if ($lg=="fr" || $lg=="en")
       {
       // == on remet a jour session et cookies
       $_SESSION['Slang']=$lg;
       $Slang=$lg;
       setCookie('lang',$lg,(time()+60*60*24*365));
       $lang=$lg;
       }
       else
        {
        // il n y a pas eu de choix donc on garde le cookies
       $_SESSION['Slang']=$lang;
       $Slang=$lang;
       setCookie('lang',$lang,(time()+60*60*24*365));
       $lg=$lang;
        }
    ?>
    franchement ça marche mais c'est redondant,
    je modifierais quand j'aurais du temps !!
    Mais au moins tu as une logique compléte

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    381
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Maroc

    Informations forums :
    Inscription : Novembre 2007
    Messages : 381
    Points : 180
    Points
    180
    Par défaut
    Bonjour,
    Merci FoX, mais ça me parait trop compliquer.
    J'ai créé un petit code pour détecter la langue du navigateur et par la suite afficher la page selon la langue détectée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?
    setcookie("lang","fr");
    function left($str,$nbr) {
    return substr($str,0,$nbr);
    }
    setcookie("lang",left($_SERVER['HTTP_ACCEPT_LANGUAGE'],2));
    if($_COOKIE["lang"]=="fr") {
    echo 'Bienvenue';
    }
    else
    {
    echo 'Welcome';
    }
    ?>
    Au rechargement de ma page il me donne une erreur, mais quand j'actualise l'erreur disparait.
    voilà l'erreur
    Notice: Undefined index: lang in c:\program files\easyphp1-8\www\boutique\test.php on line 7
    J'aimerai aussi tester le query si il contient le "fr" ou bien "en"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if($_GET["lg"]=="fr") { setcookie("lang")=="fr";}
    if($_GET["lg"]=="en") { setcookie("lang")=="en";}
    Je suis débutant en php si vous pouvez m'aider n'hésitez surtout pas.
    Merci d'avance

  12. #12
    FoxLeRenard
    Invité(e)
    Par défaut
    S'il te plait, peux tu rééditer ton message et mettre tout les PHP entre code et /code (utilises le bouton #)

    pour ton erreur, tu dois utiliser isset,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    if (!isset($_COOKIE["lang"]))
    par ailleur mon PHP avait l'avantage de pouvoir étre traité,
    car ton choix va te donner EN US TK etc.... selon le pays, alors tu fera quoi ??

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    381
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Maroc

    Informations forums :
    Inscription : Novembre 2007
    Messages : 381
    Points : 180
    Points
    180
    Par défaut
    Si la langue et différente de "fr" et de "en" je choisis l'une des deux.

  14. #14
    FoxLeRenard
    Invité(e)
    Par défaut
    Bon ça y est, j'ais compris 100%
    donc tu t'en tiens a une version qui force la langue par rapport
    a celle du micro !!

    alors pourquoi un cookies ??
    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
     
    <?PHP
    function left($str,$nbr) {
    return substr($str,0,$nbr);
    }
    $lang=left($_SERVER['HTTP_ACCEPT_LANGUAGE'],2);
    if($lang=="fr") 
    {
    echo 'Bienvenue';
    }
    else
    {
      $lang="en"
      echo 'Welcome';
    }
    ?>

  15. #15
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    381
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Maroc

    Informations forums :
    Inscription : Novembre 2007
    Messages : 381
    Points : 180
    Points
    180
    Par défaut
    Merci Fox, pour le code il marche très bien mais, j'ai comme même deux autre liens de choix pour choisir soit le français, soit l'anglais. C'est pour ça j'ai mis les cookies et le $_get.

  16. #16
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    381
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Maroc

    Informations forums :
    Inscription : Novembre 2007
    Messages : 381
    Points : 180
    Points
    180
    Par défaut
    ouuuuf, voilà un peu de réflexion et je le fais moi même, merci pour l'idée Fox
    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
     
    <?PHP
    function left($str,$nbr) {
    return substr($str,0,$nbr);
    }
    $lang=left($_SERVER['HTTP_ACCEPT_LANGUAGE'],2);
    if($lang=="fr" || @$_GET["lg"]=="fr") 
    {
    echo 'Bienvenue';
    }
    else
    {
      $lang="en";
      echo 'Welcome';
    }
    ?>

  17. #17
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    381
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Maroc

    Informations forums :
    Inscription : Novembre 2007
    Messages : 381
    Points : 180
    Points
    180
    Par défaut
    Même cela ne marchait pas, car il manque un peu des testes, quand la langue du navigateur en français et le "lg=en" il prend toujours le français.
    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
     
    <?PHP
    function left($str,$nbr) {
    return substr($str,0,$nbr);
    }
    $lang=left($_SERVER['HTTP_ACCEPT_LANGUAGE'],2);
    if(@$_GET["lg"]=="" && $lang=="fr"){
    echo 'Bienvenue';
    }
    if(@$_GET["lg"]=="" && $lang!="fr"){
    echo 'Welcome';
    }
    if(@$_GET["lg"]=="fr"){
    echo 'Bienvenue';
    }
    if(@$_GET["lg"]=="en"){
    echo 'Welcome';
    }
    ?>
    Cela marche très bien, mais je ne sais pas si quelqu'un peu l'abréger ou bien c'est comme ça qu'il faut l'écrire, sinon c'est

  18. #18
    FoxLeRenard
    Invité(e)
    Par défaut
    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
     
    <?PHP
    function left($str,$nbr) {
    return substr($str,0,$nbr);
    }
    $lg="";
    $lang=left($_SERVER['HTTP_ACCEPT_LANGUAGE'],2);
     if (isset($_GET["lg"])) $lg=trim($_GET["lg"]);
      if ($lg!="fr" && $lg!="en") $lg="";
    //===== le choix GET prime sur le langage du micro du visiteur
    if ($lg!="") $lang=$lg;
     
    if($lang=="fr"){echo 'Bienvenue';}
     else {echo 'Welcome';}
    ?>

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

Discussions similaires

  1. [Sql] erreur dans un script
    Par fyren` dans le forum Oracle
    Réponses: 9
    Dernier message: 02/02/2006, 23h44
  2. erreur dans un script
    Par rib dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/12/2005, 16h42
  3. erreur dans mon script
    Par Swata dans le forum Langage
    Réponses: 4
    Dernier message: 21/09/2005, 00h02
  4. [langage]erreur dans mon script
    Par Fabouney dans le forum Langage
    Réponses: 11
    Dernier message: 30/06/2005, 14h58
  5. [Apache] Erreur dans mes scripts CGI
    Par GLDavid dans le forum Apache
    Réponses: 2
    Dernier message: 28/08/2004, 06h14

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