Récupérer la value d'un input hidden

Fermé
eve20100 - 24 sept. 2009 à 19:37
Reivax962
Messages postés
3671
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
- 2 oct. 2009 à 23:40
Bonjour,
J'ai une boutique en ligne construite en php avec des includes.
la fiche produit est constituée d'une trame générale (produit.php) dans laquelle est inclue le détail du produit (par exemple : 1.inc.php - 1 étant le numéro du produit 1).
dans ce 1.inc.php, on a le descriptif produit, et un formulaire avec des balises input hidden, postées dans la page panier.php lorsque l'on ajoute le produit au panier.

Extrait de code :
<td>
<A href="#prod1"></A>
<Input type="hidden" name="idproduit" value="1">
<Input type="hidden" name="page_prod" value="produit-1-HORLOGE_TIME_SQUARE.html">
<Input type="hidden" name="idrayon" value="5"> <Input type="hidden" name="image_prod" value="horloge-time-square-black-blum-art.jpg">
<Input type="text" size="3" name="qte" value="1"></td><td ><a href="javascript:document.form1.submit();">'._AJOUTER_PRODUIT_PANIER_.'</a></td></tr></table>
</TD>

Mon problème :
je souhaite récupérer le chiffre (ici 5) correspondant à la value de "idrayon", dans la page Produits.php, car je n'ai pas la main sur 1.inc.php (page générée via un logiciel).
idéalement il me faudrait ce chiffre dans une variable php.
Après avoir passé la journée sur les forums, je n'ai pas trouvé la solution, et commence à désespérer.

Un grand merci pour votre aide !

9 réponses

Reivax962
Messages postés
3671
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 006
2 oct. 2009 à 23:40
Ah... Oui, normalement on n'a qu'une seule balise html et body dans une page web... Je ne sais pas comment peut réagir le navigateur s'il y en a plusieurs, et notamment je ne garantis pas que le onload soit bien effectué !
Autre solution, à la fin de ton fichier, rajoute ça :
<script language="javascript">fct_afficher()</script>
1
Reivax962
Messages postés
3671
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 006
24 sept. 2009 à 21:19
Bonjour,

Le code que tu fournis est bien le code PHP de la page, et pas le code HTML vu par le navigateur ? Si oui, cela me parait compliqué, en php, de récupérer cette valeur.
Si non, il faudrait que tu nous montres le code PHP de 1.inc.php, il y a peut-être moyen de trouver quelque chose.

Autre piste : pourquoi souhaites-tu récupérer ce code ? Est-ce pour un traitement à faire nécessairement côté serveur ? Si ce que tu veux faire est faisable côté client (affichage, calcul simple sans lien avec une base de données), tu peux facilement récupérer cette valeur en javascript de la façon suivante :
var idrayon = getElementsByName("idrayon")[0].value;
Le [0] implique que la valeur que tu recherches soit la première à porter le nom "idrayon" dans ta page. S'il y en a d'autres, il faudra adapter.

Voilà, j'espère que je t'aide un peu...

Xavier
0
Nico_
Messages postés
1219
Date d'inscription
vendredi 29 décembre 2006
Statut
Membre
Dernière intervention
15 mars 2016
188
24 sept. 2009 à 21:19
bonsoir,

<?php
$idrayon = htmlspecialchars($_POST['idrayon']); // variable avec la valeur de idrayon
?>

bonne soirée
0
Bonsoir,

Merci pour les réponses.
J'avais essayé la variable POST, mais comme le résultat est sur la même page, et non transmis à une autre, ça ne fonctionne pas.

Je viens d'essayer la petite fonction java, mais je fais peut-être une erreur dans le code.

<SCRIPT language="Javascript">
<head>
<!--

function fct_afficher(){
var num_rayon = getElementsByName("idrayon")[0].value;
}

fct_afficher();

//-->
</head>
</SCRIPT>

est-ce qu'il me manque quelque chose ?

Sinon, ce que j'ai affiché est bien le code de la page (n).inc.php
Cela est généré par Boutika premium, un logicel probablement développé sous Windev (car j'ai tout un dossier avec des ndx et des fic). Ces pages comprennt la description de l'article, le prix, la photo, etc...

Je n'ai pas la main (à part manuellement, une par une), pour ajouter du code à ces pages.
Ma seule possibilité est d'agir sur Produits.php, dans laquelle est inclue (n).inc.php

ci-dessous le code complet de la page Produits.php

<?php
session_start();

include("conf.inc.php");

include("liste_rayons.inc.php");
include("./outils/outils.php");
include("constantes.inc.php");
include("rayons.inc.php");
include("panier.inc.php");
include("header.inc.php");
include("navigation2.inc.php");

include("footer.inc.php");
include("contenu_droit.inc.php");

include ("liste_rayons_ariane.inc.php");

if (isset($_GET["prod"])){
include("./produits/".$_GET["prod"].".inc.php");
}
else {
header("location: index.php?".gestion_session());
}

$contenu_central='

<script type="text/javascript">

function sendData(la_selection,le_div) {

var url = \'liste_option.php\';
var parametres = la_selection;

var myAjax = new Ajax.Updater(
le_div,
url,
{
method: \'post\',
parameters: parametres
}
);

}

</script>'.$contenu_produit_en_cours;

include("sommaire.inc.php");
include("structure.ariane.inc.php");
?>

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

peut-être y verrez-vous plus clair.

En tout cas merci et bonne soirée
0

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

Posez votre question
Reivax962
Messages postés
3671
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 006
26 sept. 2009 à 11:09
Bonjour,

En effet, il manque des choses.
Quand tu mets
function fct_afficher(){
var num_rayon = getElementsByName("idrayon")[0].value;
} 

Tout ce que tu fais, c'est assigner la valeur de idrayon à la variable num_rayon.
Ensuite, il faut en faire ce que tu veux... Si tu veux l'afficher quelque part, par exemple, il faut prévoir à l'endroit où tu veux l'afficher une zone spécifique.
Par exemple :
Le javascript :
function fct_afficher(){
var num_rayon = getElementsByName("idrayon")[0].value;
document.getElementById("span_idrayon").innerHTML = num_rayon;
} 

Dans le code html :
[blabla...]
L'id du rayon du produit est <span id="span_idrayon"></span>
[blabla...]


Voilà !

Xavier
0
graffx
Messages postés
6427
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
24 mars 2019
2 013
26 sept. 2009 à 12:14
Je voudrai rectifier un de tes dires a propos de $_POST['idrayon'], meme si il est sur la meme page que la tratitement, il faut pourtant mettre ca.


Que cela sois vers une autre page ou tout dans la meme pour recuperer la valeur d' un champs formulaire POST and ony POST :)
0
Reivax962
Messages postés
3671
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 006
26 sept. 2009 à 12:36
Non, parce qu'elle ne cherche pas à récupérer une variable issue d'un formulaire : elle cherche à récupérer une valeur écrite dans un fichier html inclus à son script php, toujours côté serveur donc : cette page n'a encore jamais vu la couleur du navigateur client !
La solution la plus radicale consisterait à parser la page incluse, mais ce n'est pas forcément simple ni fiable si les page n.inc.php n'ont pas toutes la même tête.
C'est pour ça que je voulais savoir si le besoin de cette valeur était gérable côté client (parce qu'un peu de javascript simple suffit alors), ou si des calculs côté serveur étaient voulus.
0
Reivax, merci pour ta réponse.
J'ai testé la chose suivante dans ma page produits.php :

$contenu_central='

<script type="text/javascript">

function fct_afficher(){
var num_rayon = getElementsByName("idrayon")[0].value;
document.getElementById("span_idrayon").innerHTML = num_rayon;
}


function sendData(la_selection,le_div) {

var url = \'liste_option.php\';
var parametres = la_selection;

var myAjax = new Ajax.Updater(
le_div,
url,
{
method: \'post\',
parameters: parametres
}
);

}

</script>
le numéro va s\'afficher : <span id="span_idrayon"></span>'.$contenu_produit_en_cours;


include("sommaire.inc.php");
include("structure.ariane.inc.php");
?>

mais malheureusement, aucun numéro ne s'affiche :-(
comme ça à première vue, il doit manquer quelque chose entre les balises span. Mais quoi ???
(j'ai essayé num_rayon, mais évidemment, ça me l'a pris comme du texte...)

Je n'ai pas non plus de message d'erreur, le reste de la page fonctionne correctement.

Je sais que je suis blonde, mais si vous pouvez m'aider encore un peu..., ce serait super, car là, je surchauffe.

Merci et bonne soirée

Eve
0
Reivax962
Messages postés
3671
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 006
30 sept. 2009 à 20:24
Bonjour Ève,

Désolé, je n'ai pas été assez complet.
Il manque quelque chose : un appel à la fonction que tu as définie, fct_afficher() !
Tu peux le mettre dans la balise <body>, de cette façon :
<body onload="fct_afficher()">

Bon courage !

Xavier
0
Bonsoir,

Je te remercie beaucoup pour ces précisions, mais après avoir tourné dans tous les sens, ça ne fonctionne pas : la value de mon idrayon n'affiche rien.

Ci-dessous un extrait de la page html que j'obtiens :

<html> 
<body onload="fct_afficher()"> 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://www.monsite.com">Accueil</a> > nom du produit 
L'id du rayon du produit est <span id="span_idrayon"></span>
</body> 
</html> 
 
<script type="text/javascript">
 
 
 
	function sendData(la_selection,le_div) {
 
var url = 'liste_option.php';
		var parametres = la_selection;
 
		var myAjax = new Ajax.Updater(
			le_div,
			url,
			{
			method: 'post',
			parameters: parametres
			}
		);
 
  	}
 
function fct_afficher(){
var num_rayon = getElementsByName("idrayon")[0].value;
document.getElementById("span_idrayon").innerHTML = num_rayon;
} 
 
  
    </script>


Comme il y a plusieurs include, j'ai plusieurs balises <html></html> et <body></body>

Le code Javascript est placé après là où il doit s'afficher. Est-ce que ça (et les balises à répétition) peuvent gêner ?

Manque-t-il encore quelque chose ?

Merci encore !

Eve
0