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 :

Probleme variable javascript


Sujet :

Langage PHP

  1. #1
    Inscrit
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Points : 151
    Points
    151
    Par défaut Probleme variable javascript
    Bonjour,

    J’essayer d’enregistrer une variable javascript dans un fichier
    Quand je fais un echo la variable s’affiche bien.
    la variable et 23 donc OK.

    Mais quand j’essayer d’enregistrer cette variable dans un fichier je reçois le code complet de javascript.

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <infos>
    <marge1_min><script language='Javascript'>document.write(marge1_min);</script></marge1_min>
    </infos>

    Au lieu de
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <infos>
    <marge1_min>23</marge1_min>
    </infos>


    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
    	if (isset($_POST['SaveOption1']))
    	{
    $newXml = "";
    $marge1_min = "<script language='Javascript'>document.write(marge1_min);</script>"; 
    	$newXml.= '<infos>'."\n";
    // mes marges
    	$newXml.= '<marge1_min>'. $marge1_min. stripslashes($line).'</marge1_min>'."\n";
    	$newXml.= '</infos>'."\n";
    	if ($fd = @fopen(dirname(__FILE__).'/marge.tmp', 'w')) 
    	{
    	if (!@fwrite($fd, $newXml))
    	$this->_html.= $this->displayError($this->l('Unable to write to the editor file.'));
    	}
    	else
    	$this->_html .= $this->displayError($this->l('Unable to update the editor file.<br />Please check the editor file\'s writing permissions.'));
    	$this->_html .= '<div class="conf ok">'.$this->l('Settings updated').'</div>';
    	}
    ?>
    Pouvez vous m'aider SVP
    Serveur perso
    PHP 5.3

  2. #2
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Heu... quoi


    Qu'est ce que c'est censé faire ce bout de code ? Tu espère tout de même pas que le code JavaScript sera interprété dans ce contexte si ?

  3. #3
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Sauf erreur, normalement on ne met pas de code Javascript dans un document XML, se qui sous-entend que cette valeur "marge1_min" doit être connue à l'avance.
    C'est cela qui va te permettre de générer le code XML attendu, c'est à dire :
    <infos>
    <marge1_min>23</marge1_min>
    </infos>


    Est-ce que cette valeur 23 se trouve stockée quelque part ? (Dans $_POST ou autre ?)
    Ce ne serait $_POST['SaveOption1'] ?

  4. #4
    Inscrit
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Points : 151
    Points
    151
    Par défaut
    j'utilise un grid de ActiveWidgets et leurs input et bouton

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var marge1_min = input_marge1_min.getControlText();
    var marge1_max = input_marge1_max.getControlText();
    var marge1 = input_marge1.getControlText();

    C’est censé enregistrer une variable javascript, cette variable pour exemple et égale à 23.

    Quand je fais un echo
    $marge1_min = "<script language='Javascript'>document.write(marge1_min);</script>";
    Echo $marge1_min ;

    Ou même
    Echo "<script language='Javascript'>document.write(marge1_min);</script>";
    Le résultat est 23.

    Je voudrais les enregistrer avec l’exemple que j’ai donné plus haut.

    J'ai essayer de la récupérer avec $_POST["marge1_min"] mais je ne reçois rien.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <form action="#" method="post">
    <input type="submit" name="SaveOption1" value="Save" />
    </form>

  5. #5
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Oui et qu'est-ce qu'il se passe quand tu regarde les sources produites par ton echo ? Tu vois bien que c'est interprété par le navigateur.

    Il ne suffit pas de mettre une portion de code JavaScript dans une chaine de caractères pour que celle-ci soit interprétée comme par magie: il faut un interpréteur (en l’occurrence, celui du navigateur).

    Donc ce que tu mets dans ton fichier n'est pas le résultat d'un calcul mais une chaine de caractères.

  6. #6
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    j'utilise un grid de ActiveWidgets et leurs input et bouton
    Je ne connais ça, mais à tous les coups il y a de l'Ajax, et ça le principe est grosso modo le même partout, c'est juste la manière qui diffère.

    Si on tente de résumer le déroulement, au départ il doit avoir une page HTML contenant le formulaire, les inputs entre autre.
    Cette page HTML contient aussi un code Ajax (du JS).
    Lors d'un clic sur un bouton ça va déclencher le code Ajax, qui lui va ensuite interroger ton serveur qui lui va faire une réponse : le code XML en question.

    Le code Ajax (de la page HTML) va donc à ce moment obtenir ce code XML, et tu dois avoir normalement un code qui va (ou qui doit) interpréter cette réponse pour récupérer la valeur de cet attribut "marge1_min", c'est à dire 23.

    Et enfin, une fois cette valeur 23 obtenue il va avoir (ou doit avoir) un code JS qui va se charger de modifier (remplacer) la valeur en cours du input par la nouvelle : 23

    Je ne sais pas si tu vois mieux, en espérant ne dire de bêtise non plus.

    On ne sait pas où se trouve ce code Php que tu as mis, mais lui est quelque part "transparent" dû au fonctionnement de l'Ajax qui doit être asynchrone.
    Faudrait le code Ajax dans ta page actuelle en faite pour voir si le code intègre tout ce qu'il faut.


    Faut juste espérer que le code Ajax ne soit pas trop "usine à gaz", sinon ça risque d'être un peu compliqué.

  7. #7
    Inscrit
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Points : 151
    Points
    151
    Par défaut
    Bon je voulais évité une base mysql, mais pas le choix.

    voila la solution


    Lecture de la base

    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
    var arrayUpdate = new Array(); 
    var myHeaders = ["ID","De (€)","à (€)","je gagne! (%)"];
    var myCells = [
    <?php
    	$host="localhost"; 
    	$name="root"; 
    	$pass=""; 
    	$db="save_grid"; 
     
    	$dbcon=mysql_connect ("$host", "$name", "$pass") or die;
    	if (mysql_errno() == 1203 or mysql_errno() == 1040) {
    	  echo "ERREUR: Le serveur est trop occupé";
    	  exit;
    	}else{
    	mysql_select_db ($db);
    	}
     
    $result = mysql_query("SELECT * from table_marges order by id",$dbcon);
    $rows = "";
    while(list($id, $marge_min, $marge_max, $my_marge)=mysql_fetch_row($result)){
    $rows .= "['$id','$marge_min','$marge_max','$my_marge'],";
    }
    echo substr($rows,0,-1);
     
     
    ?>
    ];
     
        var parametre = new AW.UI.Grid;
        parametre.setId("Grid_parametre");
        parametre.setHeaderText(myHeaders);
        parametre.setCellText(myCells);
        parametre.setColumnCount(myHeaders.length);
        parametre.setRowCount(myCells.length);
    		var str = new AW.Formats.String;
    		var num = new AW.Formats.Number;
    		parametre.setCellFormat([num, str, str, str]);
    		parametre.setSelectorVisible(true);
    		parametre.setSelectorText(function(i){return this.getRowPosition(i)+1});
    		parametre.setSelectorWidth(28);
    		parametre.setHeaderHeight(20);
    		parametre.setCellEditable(true);
    		parametre.onCellValidated = function(text, col, row){ 
              var id = parseFloat(this.getCellText(0, row)); 
              var TheName = this.getCellText(1, row); 
              var Themarge_max = this.getCellText(2, row); 
              var Themy_marge = this.getCellText(3, row); 
              var ar = new Array(id,TheName,Themarge_max,Themy_marge);
              arrayUpdate[id] = ar;
         }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var marge1_min = parametre.getCellText(1, 0);
    var marge1_max = parametre.getCellText(2, 0);
    var marge1 = parametre.getCellText(3, 0);

    Ecriture sur la base

    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
     
    <?php
    	$host="localhost"; 
    	$name="root"; 
    	$pass=""; 
    	$db="save_grid"; 
     
    	$dbcon=mysql_connect ("$host", "$name", "$pass") or die;
    	if (mysql_errno() == 1203 or mysql_errno() == 1040) {
    	  echo "ERREUR: Le serveur est trop occupé";
    	  exit;
    	}else{
    	mysql_select_db ($db);
    	}
     
    if($_POST){
    	foreach($_POST["update"] as $k => $v){
    		 mysql_query("UPDATE table_marges set marge_min='$v[marge_min]', marge_max='$v[marge_max]', my_marge='$v[my_marge]' where id=$v[id]");
    	}
    }
    ?>
     
    <script type="text/javascript">
    function doSubmit(){
    	if (arrayUpdate.length==0){
    		alert("Rien n'a été changé.");
    	}else{
    			var msgUpdate;
    			msgUpdate = confirm("Voulez-vous enregistrer les modifications?");
    			if (msgUpdate == true){
    						document.write("<form id='frmSubmit' name='frmSubmit' action='index.php' method='POST'>");
    						var x;
    						for (x in arrayUpdate)
    						{
    							document.write("<input type='hidden' name='update[" + x + "][id]' value='" + arrayUpdate[x][0] + "'>");
    							document.write("<input type='hidden' name='update[" + x + "][marge_min]' value='" + arrayUpdate[x][1] + "'>");
    							document.write("<input type='hidden' name='update[" + x + "][marge_max]' value='" + arrayUpdate[x][2] + "'>");
    							document.write("<input type='hidden' name='update[" + x + "][my_marge]' value='" + arrayUpdate[x][3] + "'>");
    						}
    						document.write("</form>");
    						document.forms.frmSubmit.submit()
    			}
    	}
    }
    </script>
     
    <p>
    <input type="button" onclick="doSubmit();" value="Sauvegarder mes marges">
    </p>
    Merci a vous

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/06/2006, 15h56
  2. [C#] Variable javascript accessible
    Par stailer dans le forum ASP.NET
    Réponses: 12
    Dernier message: 01/04/2005, 12h18
  3. Variables javascript non correctement définies
    Par LLaurent dans le forum XMLRAD
    Réponses: 5
    Dernier message: 11/05/2004, 12h39
  4. [LG]Problême Variable dynamique de types différents
    Par pierrOPSG dans le forum Langage
    Réponses: 2
    Dernier message: 29/04/2004, 16h01

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