Garder en memoire la valeur d'un champ

marc660 Messages postés 171 Date d'inscription jeudi 15 avril 2004 Statut Membre Dernière intervention 18 juillet 2007 - 17 juil. 2007 à 23:39
tcheeb Messages postés 66 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 27 octobre 2010 - 18 juil. 2007 à 21:03
Bonjour,

Je vous es mie un petit exemple que vous pouvez testez.

Mon problème es le suivant

Je voudrais savoir si il est possible de garder en mémoire le texte écrit dans le champ après un rafraîchissement de la page.

Essayer le code suivant puis sélectionner un texte dans le select

<script type="text/javascript" language="javascript">
<!--
function twAller_produit(_url,_cadre,_target) {
  if (_cadre) {
    parent._cadre.location.href = _url;
  } else if (_target) {
    _target = window.open(_url,_target);
  } else {
    window.location.href = _url;
  }
}
//-->
</script>
<td></td>

<select name="Menu_produit" onChange="sel = this.options[this.selectedIndex].value; if (sel) { twAller_produit(sel,'','') }">
<option>S?lection par nom de client</option>
<form name=req action="" method=post>
 <option>?client=<?=$ligne[0]?>david</option>
 <option>?client=<?=$ligne[0]?>sandrine</option
 <option>?client=<?=$ligne[0]?>mimi</option
</select>
</form>

Merci

8 réponses

coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
17 juil. 2007 à 23:59
Salut

faut utiliser les sessions

au passage <?= est a remplacer par <?php echo

<hr />une recherche sur exalead vous aurait peut-etre evite de poser cette question

In a dream, I saw me, drop dead...
U were there, U cried...
It was just a dream,
if I die, U won't cry, maybe, U'll be happy
0
marc660 Messages postés 171 Date d'inscription jeudi 15 avril 2004 Statut Membre Dernière intervention 18 juillet 2007
18 juil. 2007 à 01:18
Bonjour,







J’ai fait des recherches mais je dois avouer que je n’arrive
pas.


Vous pouvez me donner un exemple correspondants a mon code
plus haut.

Merci d'avance
0
tcheeb Messages postés 66 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 27 octobre 2010
18 juil. 2007 à 08:46
<?PHP
/* démarre la session et permet d'utiliser les variables globales. Cette fonction est a mettre au départ de chaque page pour lesquelles il est désiré avoir accès aux variables de session ($_SESSION) . Doit être appelé en tout premier sur ta page */

session_start();

/*Ensuite il faut assigner ta variable, ou tes variables*/
//contrôle de routine sur l'existence d'un post par la bonne methode
if(isset($_POST['req'])){
   $_SESSION['req'] = $_POST['req']
}
?>
*************************
Ta variable est maintenant disponibles sur chaque page.
Pour détruire la variable
session_unregister(le nom de la variable);

Plus d'infos et du code :
http://fr.php.net/manual/fr/function.session-start.php

**************************
Bonne journée
0
marc660 Messages postés 171 Date d'inscription jeudi 15 avril 2004 Statut Membre Dernière intervention 18 juillet 2007
18 juil. 2007 à 13:21
Bonjour,







Ca ne fonctionne pas car mon problème n’à rien avoir avec
deux pages mais tous est dans la même page



 




Un exemple tester le script plus haut : une personne écrit
un ‘tata et tonton’ dans le champ abr Apres elle sélectionne une options dans
le select (en sachant que ce select actualise la page).



 




Mon problème c’est est que le champ abr redevient par défaut,
alors que moi je veut que le champ abr garde la valeur écrite avant l’actualisation
de la page









Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tcheeb Messages postés 66 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 27 octobre 2010
18 juil. 2007 à 13:38
Si tu réactualise ta page difficile de garder une variable sans soumettre soit par post ou get car tu remets tout à zéro (refrech -li un peu).

Lors de la réactualisation si tu veut travailler en PHP tu soumets par un javascript ta page et tu récupère tes valeurs "$_GET" ou $_POST.

Deuxième solutions, du Côté client, utilise javascript avec un beau cookies que tu récuperera au rechargement de ta page. Mais c'est un autre forum pour celà.

Autre solution utiliser AJAX.

Maintenant pour pouvoir tester ton bout de code donne toute les informations !!!!!

Exemple : ton tableau $ligne vient d'où ?
0
marc660 Messages postés 171 Date d'inscription jeudi 15 avril 2004 Statut Membre Dernière intervention 18 juillet 2007
18 juil. 2007 à 14:06
Bonjour,

Je vous donne le code complet avec la base de donner

Code source

Tapez un texte ici puis selectionner un article dans le menu deroulent,
----

<?= ACTION?>, <?=DESC?> </td><? =QTY?>, <?= UNIT?>, <?=TAX?>, <?=TOTAL?>,
<? for($i=0; $i< 5; $i++){ ?>
----

();" style="border-color:blue; border-style:dotted;" />,
" name="d<?=$i?>" value="<? $d0 = addslashes(trim($_GET['d0'])); ?>" style="border-color:rgb(255,102,0); border-style:dotted;">,

" value=""  onchange="checkNumber(this);subSum(<?=$i?>);" style="border-color:rgb(255,102,0); border-style:dotted;">,
" value=""  onchange="checkNumber(this);subSum(<?=$i?>);" style="border-color:rgb(255,102,0); border-style:dotted;">,
" value="<?=$taxrate?>" onchange="checkNumber(this);remind(this.value);subSum(<?=$i?>);" style="border-color:rgb(255,102,0); border-style:dotted;">,
" value=""  onchange="checkNumber(this);subSum(<?=$i?>);redoTotal();" style="border-color:rgb(255,102,255); border-style:dotted;">,

<? } ?>

<script type="text/javascript" language="javascript">
<!--
function twAller_produit(_url,_cadre,_target) {
  if (_cadre) {
    parent._cadre.location.href = _url;
  } else if (_target) {
    _target = window.open(_url,_target);
  } else {
    window.location.href = _url;
  }
}
//-->
</script>

<?php
define('DBHOST', 'db225.********');
define('DBUSER', 'db******6');
define('DBPASS', 'H********7');
define('DBNAME', 'd******6');
$link = mysql_connect(DBHOST, DBUSER, DBPASS);
mysql_select_db(DBNAME, $link) or die("Impossible d'acce`der a` la base de donne'es");
$requete="select name from fiche_products";
$resultat2requete=mysql_query($requete);
$nbr2champs=mysql_num_fields($resultat2requete);
$nbr2lignes=mysql_num_rows($resultat2requete);
?>
<center><select name="Menu_produit" onChange="sel = this.options[this.selectedIndex].value; if (sel) { twAller_produit(sel,'','') }">
<option>S&#1081;lection par nom de client</option>
<form name=req action="" method=post>
<?
while ($ligne=mysql_fetch_row($resultat2requete))
    {
?>
<option value="?client=<?=$ligne[0]?>">

<?
if ($ligne != " "){ echo $ligne[0];} ?>
</option>
<?
}
?>
</select>
<!---->
</form>
<?
mysql_close($link);
?>

<!--          --><!--          --><!--          -->
<!--          --><!--          --><!--          -->

<?php
define('DBHOST', 'db225.********');
define('DBUSER', 'db******6');
define('DBPASS', 'H********7');
define('DBNAME', 'd******6');
$link = mysql_connect(DBHOST, DBUSER, DBPASS);
mysql_select_db(DBNAME, $link) or die("Impossible d'acce`der a` la base de donne'es");
$client=$_GET["client"];
$requete="select `name` , `description` , `quantity` , `price` , `tax` , `notes` from fiche_products where name = '$client'";
$resultat2requete=mysql_query($requete);
$nbr2champs=mysql_num_fields($resultat2requete);
$nbr2lignes=mysql_num_rows($resultat2requete);
?>
<?

while ($ligne=mysql_fetch_row($resultat2requete))
    {
    if ($ligne != " ")
      {
?>

<?
echo '
';
echo '
';
echo '
';
echo '
';
echo '
';
echo '
';

}
}
?>
</center>
<!--          --><!--          --><!--          -->
<!--          --><!--          --><!--          -->
<?php
$ligne = array(
 'ligne 1',
 'ligne 2',
 'ligne 3',
 'ligne 4',
);
?>
<script type="text/javascript">
//<![CDATA[
    function $() {
     var elements = new Array();
     for (var i=0,len=arguments.length;i<len;i++) {
      var element = arguments[i];
      if (typeof element == 'string') {
       var matched = document.getElementById(element);
       if (matched) {
        elements.push(matched);
       } else {
        var allels = (document.all) ? document.all : document.getElementsByTagName('*');
        var regexp = new RegExp('(^| )'+element+'( |$)');
        for (var i=0,len=allels.length;i<len;i++)
         if (regexp.test(allels[i].className))
          elements.push(allels[i]);
       }
       if (!elements.length)
        elements = document.getElementsByTagName(element);
       if (!elements.length) {
        elements = new Array();
        var allels = (document.all) ? document.all : document.getElementsByTagName('*');
        for (var i=0,len=allels.length;i<len;i++)
         if (allels[i].getAttribute(element))
          elements.push(allels[i]);
       }
       if (!elements.length) {
        var allels = (document.all) ? document.all : document.getElementsByTagName('*');
        for (var i=0,len=allels.length;i<len;i++)
         if (allels[i].attributes)
          for (var j=0,lenn=allels[i].attributes.length;j<lenn;j++)
           if (allels[i].attributes[j].specified)
            if (allels[i].attributes[j].nodeValue == element)
             elements.push(allels[i]);
       }
      } else
       elements.push(element);
     }
     if (elements.length == 1)
      return elements[0];
     else
      return elements;
    }
    //]]>
 </script>

<script> function envoi_0() {
$('d0').value = $('toto0').value;
$('n0').value = $('toto2').value;
$('p0').value = $('toto3').value;  
$('ta0').value = $('toto4').value;  
} </script>

<script> function envoi_1() {
$('d1').value = $('toto0').value;
$('n1').value = $('toto2').value;
$('p1').value = $('toto3').value;  
$('ta1').value = $('toto4').value;  
} </script>

<script> function envoi_2() {
$('d2').value = $('toto0').value;
$('n2').value = $('toto2').value;
$('p2').value = $('toto3').value;  
$('ta2').value = $('toto4').value;  
} </script>

<script> function envoi_3() {
$('d3').value = $('toto0').value;
$('n3').value = $('toto2').value;
$('p3').value = $('toto3').value;  
$('ta3').value = $('toto4').value;  
} </script>

<script> function envoi_4() {
$('d4').value = $('toto0').value;
$('n4').value = $('toto2').value;
$('p4').value = $('toto3').value;  
$('ta4').value = $('toto4').value;  
} </script>
</select></form>
<? $var = $_SESSION['tata0']; ?>

Base de donner
-- phpMyAdmin SQL Dump
-- version 2.6.4-pl3
-- http://www.phpmyadmin.net
--
-- Serveur: ***********
-- G&#1081;n&#1081;r&#1081; le : Mercredi 18 Juillet 2007 &#1072; 13:57
-- Version du serveur: 4.0.27
-- Version de PHP: 4.3.10-200.schlund.1
--
-- Base de donn&#1081;es: `d***********6`
--

-- --------------------------------------------------------

--
-- Structure de la table `fiche_products`
--

CREATE TABLE `fiche_products` (
  `product_id` int(11) NOT NULL auto_increment,
  `name` varchar(128) NOT NULL default '',
  `description` text NOT NULL,
  `quantity` int(11) NOT NULL default '0',
  `price` decimal(10,2) NOT NULL default '0.00',
  `tax` decimal(12,1) NOT NULL default '0.0',
  `notes` text NOT NULL,
  PRIMARY KEY  (`product_id`)
) TYPE =MyISAM AUTO_INCREMENT=22 ;

--
-- Contenu de la table `fiche_products`
--

INSERT INTO `fiche_products` VALUES (1, 'AGRAFEUSE CLOUEUSE PNEUMATIQUE', 'Agrafeuse cloueuse pneumatique. Livr&#1081;e en mallette. Capacit&#1081; de 15 &#1072; 40 mm.', 1, 199.00, 19.6, '');
INSERT INTO `fiche_products` VALUES (2, 'SOUFFLETTE BEC COURT', 'Soufflette air comprim&#1081; &#1072; bec court. Livr&#1081;e avec raccord standard &#1072; ba&#1086;onnette. Fabrication Italie garantie 2 ans.', 1, 4.00, 19.6, '');
INSERT INTO `fiche_products` VALUES (3, 'SOUFFLETTE BEC LONG', 'Soufflette air comprim&#1081; &#1072; bec long. Livr&#1081;e avec raccord standard &#1072; ba&#1086;onnette. Fabrication Italie garantie 2 ans.', 1, 5.30, 19.6, '');
INSERT INTO `fiche_products` VALUES (4, 'POMPE A GRAISSE PNEUMATIQUE', 'Pompe &#1072; graisse pneumatique capacit&#1081; 400ml. Gamme Expert', 1, 32.00, 19.6, '');
INSERT INTO `fiche_products` VALUES (5, 'PISTOLET DE PULVERISATION', 'Pistolet pneumatique de pulv&#1081;risation. Fabrication Italie. Pour projection de tout liquide non corrosif ( d&#1081;sherbant, gas-oil, huile… ).', 1, 14.00, 19.6, '');
INSERT INTO `fiche_products` VALUES (6, 'PISTOLET PEINTURE A GRAVITE', 'Pistolet &#1072; peinture &#1072; gravit&#1081; professionnel. Mod&#1080;le en aluminium &#1072; r&#1080;glages multiples/', 1, 24.00, 19.6, 'fgdsgs fdgsdg fdg sdfg');
INSERT INTO `fiche_products` VALUES (7, 'PISTOLET PEINTURE PROFESSIONNEL', 'Pistolet pneumatique pour peinture. Godet aluminium autoclave, buse laiton. Couvercle de r&#1081;servoir en m&#1081;tal. Fabrication Italie.', 1, 24.00, 19.6, '');
INSERT INTO `fiche_products` VALUES (8, 'PISTOLET POUR ENDUIT', 'Pistolet pneumatique pour enduit avec godet &#1072; gravit&#1081;', 1, 40.00, 19.6, '');
INSERT INTO `fiche_products` VALUES (9, 'MARTEAU BURINEUR PNEUMATIQUE H', 'Marteau burineur pneumatique livr&#1081; avec 4 burins queue hexagonale : 1 pointerolle, 1burin plat droit, un burin &#1081;chancr&#1081; &#1072; d&#1081;couper, un burin plat biseau.', 1, 24.00, 19.6, '');
INSERT INTO `fiche_products` VALUES (10, 'MARTEAU BURINEUR PNEUMATIQUE R', 'Marteau burineur pneumatique livr&#1081; avec 4 burins queue ronde : 1 pointerolle, 1burin plat droit, un burin &#1081;chancr&#1081; &#1072; d&#1081;couper, un burin plat biseau.', 1, 17.00, 19.6, '2222222222222222222222222');

Merci
0
marc660 Messages postés 171 Date d'inscription jeudi 15 avril 2004 Statut Membre Dernière intervention 18 juillet 2007
18 juil. 2007 à 14:37
0
tcheeb Messages postés 66 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 27 octobre 2010
18 juil. 2007 à 21:03
Hello,

Je reprend ma 1ère réponse en sélectionnant dans le menu select tu rappel ta page par la fonction twAller_produit ce qui a pour effet de rafraîchir ta page (idem qu'un F5), car tu utilise la fonction "location.href".

Pour exemle rempli un formulaire et appuye sur F5. C'est le même effet.

Cette fonction devrait soumettre le formulaire "" onchange = submit(ton formulaire);"", le target étant la même page. il faut ensuite récupérer la variable globale $_POST et nourrir tes champs.

Autre solution : utiliser les iframes et transférer les valeurs entre les pages.

Plus de rigeur dans le code serait également une bonne chose. pas bien <? ?> bien <?PHP ?>
XHTML oui mais la ? 

Pour moi regarde en AJAX, pour ce que tu cherche c'est la meilleure solution.
 
Bonne soirée
0
Rejoignez-nous