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 :

[POO] Affichage avec JavaScript


Sujet :

Langage PHP

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 099
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 099
    Points : 946
    Points
    946
    Par défaut [POO] Affichage avec JavaScript
    Bonjour à touis .
    Je ne sais pas si je devrais mettre ce post dams le forum javascript ou php. J'essaye donc ici.

    Je viens de réussir une class (qui est encore a perfectionner :o) ), qui va m'aider a avoir un site en plusieurs langue.

    En fonction, de la langue du navigateur, ou de la selection de l'utilisateur, la class va charger le fichier "langue" (exempl: /fr/index.ph, /en/index.php etc) ou sera stocké les texte en fonction de la langue...

    Le problème que j'ai est le suivant.
    A la base, ce script php était contruit pour charger un fichier XML (expl: /fr/index.xml, /en/index.xml etc), j'ai donc modifier cette class pour ne plus avoir de l'XML mais un fichier php.

    Mon texte, en fonction de la langue, s'affiche avec ce code:
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo $langue->text('msg_contact_9');

    ma class va donc inclure dans une de ses fonction le fichier en fonction de la langue.
    et dans mon fichier langue /fr/index.php j'ai ceci (entre autre):
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $this->msg_contact_9 = "Vérification de votre saisie";

    Jusqu'à la ca marche bien.

    Le problème intervient quand javascript est impliqué la dedans.

    En d'autre mot, si une condition "if" est positive, mon code va exécuter un code javascript pour avoir ce texte dans un "lightbox2".

    Voci mon code javascript:
    Code JAVASCRIPT : 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
    <script type="text/javascript">
    <!--
    jQuery(document).ready(function() {
    	$.fancybox(
    LE PROBLEME SURGIT A CE NIVEAU LA =>	'<h1 class="error"><?php echo $langue->text('msg_contact_9'); ?></h1><p><?php echo addslashes($checker->getErrors()) ?></p>',
    	{
    		'autoDimensions'	: false,
    		'width'         	: 350,
    		'height'        	: 'auto',
    		'transitionIn'		: 'none',
    		'transitionOut'		: 'none'
    	}
    	);
    	});
    -->
    </script>

    Quand je charge ma page, tout va bien.
    Quand j'envoi mon formulaire à vide, des erreur vont etre détecter car des champs sont vide.
    C'est la que ma condition renvoi TRUE (car il y a des champs obligatoire vides et ensuite le code javascript est éxécuté.
    Dans la console derreur de Firefox, ce message d'erreur s'affiche et je ne trouve pas la source du problème :
    Error: unterminated string literal
    Source File: http://www.que-faire-ce-week-end.ch/...s/contact.php#
    Line: 180, Column: 9
    Source Code:
    '<h1 class="error">Vérification de votre saisie</h1><p><br />
    Par contre ca marche très bien avec ma class qui charge le fichier XML. Je pense que ca doit être un problème de ", mais j'ai du mal à savoir ou!!!
    Pourriez-vous m'aider?

    Pour info, je colle mes deux class. Il y a un peu de lecture mais c'est pas énorme.
    Et ca peut etre utile pour d'autre qui souhaiterait l'utiliser...

    language.php.class.php (C'est donc celle-là que j'utilise)
    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
     
    <?php
    #error_reporting(E_ALL & ~E_NOTICE);
     
    class Langues {
    	#private $msg_presentation_title = "";
    	#private $msg_presentation_text = "";
     
    	// Langue par le code ISO 639 (défaut : français)
    	private $_langue = 'fr';
     
    	// Dossier contenant les langues
    	private $_dirLangue = '';
     
    	/*
    	Constructeur
    
    	Récupère la langue via le navigateur, sinon charge celle par défaut ou si une langue est spécifiée, on charge celle ci. Permet aussi de spécifier le dossier ou ce trouvent les langues
    
    	@access public
    	@param $langue, $dirLangue, $fichier
    	@return void
    	*/
    	public function __construct($dirLangue, $fichier, $langue = false) {
    		if(is_dir($dirLangue)) {
        		$this->_dirLangue = $dirLangue;
        	}
        	else {
        		$this->_dirLangue = 'langues';
        	}
     
        	if($langue) {
        		$this->_langue = strtolower($langue);
        	}
        	else {
        		if($lang = strtolower(substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2))) {
    #    			$this->_langue = $lang;
    				$this->_langue = $_SESSION['language'];
        		}
        		else {
        			$this->_langue = 'fr';
        		}
        	}
     
        	if(file_exists($this->_dirLangue.'/'.$this->_langue.'/'.$fichier.'.php')) {
        		// Chargement du fichier langue
        		$this->translationFile($fichier);
        	}
        	else {
        		die('Fichier de traduction ('.$this->_dirLangue.'/'.$this->_langue.'/'.$fichier.'.php) est innexistant ! Merci de vérifier que celui ci existe.');
        	}
    	}
     
     	/*
     	Charge le fichier XML
     
     	@access private
     	@param $fichier
     	@return void
     	*/
    	private function translationFile($fichier) {
    		include($this->_dirLangue.'/'.$this->_langue.'/'.$fichier.'.php');
    	}
    	/*
    	Charge le message à afficher
    
    	@access public
    	@param $texte
    	@return $texte
    	*/
    	public function text($texte) {
    		return addslashes($this->$texte);
    	}
    }
    ?>
    language.xml.class.php :
    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
     
    <?php
    error_reporting(E_ALL & ~E_NOTICE);
     
    class Langues {
    	// Langue par le code ISO 639 (défaut : français)
    	private $_langue = 'fr';
     
    	// Dossier contenant les langues
    	private $_dirLangue = '';
     
    	// Objet SimpleXML
    	private $_simpleXML = null;
     
     
    	/*
    	Constructeur
    
    	Récupère la langue via le navigateur, sinon charge celle par défaut ou si une langue est spécifiée, on charge celle ci. Permet aussi de spécifier le dossier où ce trouvent les langues
    
    	@access public
    	@param $langue, $dirLangue, $fichier
    	@return void
    	*/
    	public function __construct($dirLangue, $fichier, $langue = false) {
    		if(is_dir($dirLangue)) {
        		$this->_dirLangue = $dirLangue;
        	}
        	else {
        		$this->_dirLangue = 'langues';
        	}
     
        	if($langue) {
        		$this->_langue = strtolower($langue);
        	}
        	else {
        		if($lang = strtolower(substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2))) {
    #    			$this->_langue = $lang;
    				$this->_langue = $_SESSION['language'];
        		}
        		else {
        			$this->_langue = 'fr';
        		}
        	}
     
        	if(file_exists($this->_dirLangue.'/'.$this->_langue.'/'.$fichier.'.xml')) {
        		// Chargement du fichier langue
        		$this->loadXmlFile($fichier);
        	}
        	else {
        		die('Fichier XML ('.$this->_dirLangue.'/'.$this->_langue.'/'.$fichier.'.xml) innexistant ! Merci de vérifier que celui ci existe.');
        	}
    	}
     
     	/*
     	Charge le fichier XML
     
     	@access private
     	@param $fichier
     	@return void
     	*/
    	private function loadXmlFile($fichier) {
    		$this->_simpleXML = simplexml_load_file($this->_dirLangue.'/'.$this->_langue.'/'.$fichier.'.xml');
    	}
    	/*
    	Charge le message à afficher
    
    	@access public
    	@param $texte
    	@return $texte
    	*/
    	public function text($texte) {
    		$resultat = $this->_simpleXML->xpath($texte);
     
    		foreach($resultat as $noeud) {
    			return $noeud;
    		}
    	}
    }
    ?>

    MERCI POUR TOUT

  2. #2
    Membre averti Avatar de sayari.dev
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2010
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2010
    Messages : 142
    Points : 300
    Points
    300
    Par défaut
    Merci de poster le code javascript de cette partie

    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
    <script type="text/javascript">
    <!--
    jQuery(document).ready(function() {
    	$.fancybox(
    LE PROBLEME SURGIT A CE NIVEAU LA =>	'<h1 class="error"><?php echo $langue->text('msg_contact_9'); ?></h1><p><?php echo addslashes($checker->getErrors()) ?></p>',
    	{
    		'autoDimensions'	: false,
    		'width'         	: 350,
    		'height'        	: 'auto',
    		'transitionIn'		: 'none',
    		'transitionOut'		: 'none'
    	}
    	);
    	});
    -->
    </script>

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 24
    Points : 22
    Points
    22
    Par défaut
    La ligne qui renvoi une erreur me paraît incorrecte:

    msg_contact_9 est sortie de la chaine de caractères, car celle ci est délimitée par des ' ', or msg_contact_9 dans la chaine est entouré des mêmes symboles, il me semble logique que le moteur considère donc que msg_contact_9 ne fait pas partie de la chaine, il ne comprendrait donc pas ce que fait l'intrus dans cette ligne^^.

    Je recommanderais une révision de tes " ', quitte à utiliser des antislashs^^

Discussions similaires

  1. Petit soucis d'affichage avec javascript
    Par polymorphisme dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 18/03/2011, 17h53
  2. [POO] Formulaire avec du php et du javascript HTTPXmlR
    Par drwriggles dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 22/08/2008, 14h19
  3. affichage d'un calque avec javascript ne marche pas
    Par zabdaniel dans le forum Général JavaScript
    Réponses: 19
    Dernier message: 18/08/2008, 22h03
  4. [POO] Fonction Affichage OBjet Javascript!
    Par lekunfry dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 20/07/2007, 06h28
  5. Pb d'affichage avec un javascript et une liste déroulante
    Par marti dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/08/2006, 09h54

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