Récupérer la value d'un input hidden sur la même page

Nouveau WRInaute
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. :cry:

Un grand merci pour votre aide !
 
WRInaute accro
Ca me paraît assez bizarre comme fonctionnement tout ça... Il n'y a pas une base de données derrière? Ce serait probablement le plus simple, parce que quelque part dans ton php tu dois savoir quel est le produit, et à partir de là tu devrais pouvoir trouver le rayon, non?

Sinon en JS:
Code:
function recup_idrayon()
{
  var inputs = document.getElementsByTagName("input");
  for (var i=0;i<inputs.length;i++)
  {
    var input = inputs[i];
    if (input.type == 'hidden' && input.name == 'idrayon')
      return input.value;
  }
}

Pas testé, mais ça ne doit pas être très loin.

Jacques.
 
WRInaute discret
la variable idrayon est dans la page 1.inc.php et celle_ci estinclude dans la page produit.php.si c'est le cas tu as cette variable dans la page produits.php.
Je suis aussi etonné de voir un site e-commerce sans base de donnée!
 
Nouveau WRInaute
C'est le logiciel Boutika Premium.
Il y a une base xml, mais qui va piocher les infos un peu partout. Pas de SQL, malheureusement.
Dans produits.php, je n'ai pas l'info sur le rayon.
Les pages x.inc.php sont générées avec ce que je donne à manger au logiciel, à savoir la description, le prix, la photo, etc...

ci-dessous le code 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 tous cas, merci pour ces premières réponses. :D
 
WRInaute accro
eve20100 a dit:
if (isset($_GET["prod"])){
include("./produits/".$_GET["prod"].".inc.php");
}

Et un trou de sécurité, un.

Sinon c'est quoi génère les fichiers <n>.inc.php? Tu pourrais rajouter une ligne qui ajoute une variable php avec idrayon en plus de générer le code HTML correspondant. Il ne le fait pas déjà peut-être?

Jacques.
 
Nouveau WRInaute
malheureusement non, ça n'est pas aussi simple que ça.
ça doit être développé avec Windev, et je n'ai pas ce qu'il faut pour modifier le programme (des fichiers .fic et ndx).

Car j'y avais bien pensé, mais à part le faire sur chaque page, je n'ai pas la main sur ce qui génère les pages...

j'ai trouvé plus ou moins des éléments de réponse avec javascript, mais je n'ai pas réussi à l'appliquer :

<SCRIPT language="Javascript">
<head>
<!--
function fct_afficher(){
var num_rayon=document.getElementByName("idrayon").value;
return(num_rayon.value);
}
fct_afficher();
//-->
</head>
</SCRIPT>

est-ce que tu crois que c'est une bonne piste ?
(je me pencherais également sur le code que tu m'as déjà fourni)
 
WRInaute accro
Pas vraiment, ce serait plutôt getElementsbyName, et comme avec ma méthode, ça renvoie une liste sur laquelle il faut itérer (ça se dit ça en français?). Et je ne suis même pas sûr que ce soit 100% standard, flemme d'aller vérifier.

Jacques.
 
Nouveau WRInaute
Bon,

Jacques, j'ai essayé le javascript que tu me donnais en début de post, mais ça ne renvoie rien.
Snif :(

Je crois que je vais devoir me frapper une modif manuelle de chacune de mes pages...

Enfin, je reste optimiste et suis toujours ouverte à toute proposition :wink:

Eve
 
WRInaute accro
Je suis un peu étonné que ça ne renvoie rien. Tu l'as mis où le JS? Tu as une erreur à l'éxecution?

Sinon l'autre option consiste à ajouter la ligne en question avec une "moulinette" comme on dit chez nous. Sauvegarde le fichier suivant dans le dossier où se trouvent les produits:

Code:
#!/bin/sh
for i in *.inc.php
do
        grep idrayon $i | sed -e 's/^.*idrayon" value="/<?php idrayon=/' -e 's/"> <Input.*$/;?>/' >>$i
done

Et exécute le juste (en étant dans le répértoire en question) après que ces fichiers aient été générés (c'est un processus manuel j'espère?). A adapter suivant tes besoins éventuellement.

NB: pense à faire un backup de tout avant de lancer le script, au cas où :)

Jacques.
 
Nouveau WRInaute
Je te mets ci-dessous le code de la page Produits.php modifiée.
J'ai mis ton script dans la variable "contenu central" qui est destinée à faire afficher le contenu de la page centrale, à savoir la fiche article.
Il me semblait donc judicieux de rajouter ton script là, mais comme je suis un peu plus php que java, j'ai peut-être fait une boulette.

Code:
<?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 recup_idrayon()
{
  var inputs = document.getElementsByTagName("input");
  for (var i=0;i<inputs.length;i++)
  {
    var input = inputs[i];
    if (input.type == \'hidden\' && input.name == \'idrayon\')
      return input.value;
  }
}

</SCRIPT>

<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");
?>

Je n'ai aucune erreur, la page fonctionne correctement. C'est même un peu dommage, car une erreur aurait pû nous guider...

A moins que tu ne me conseilles de déplacer le bout de code js, je vais tenter ta moulinette.
mais encore une question : sous quelle extension faut-il que je l'enregistre ? un .bat ?

pour la génération : je la lance manuellement, ça me donne mes n.inc.php, et après je les uploade sur mon ftp.
donc oui je peux faire une moulinette, si cette solution fonctionne.

Merci pour tout ! :)
 
Nouveau WRInaute
Si le script fonctionne, puis-je faire la chose suivante pour récupérer le numéro du rayon dans une variable $num_rayon :
Code:
$num_rayon='

<SCRIPT type="text/javascript">

function recup_idrayon()
{
  var inputs = document.getElementsByTagName("input");
  for (var i=0;i<inputs.length;i++)
  {
    var input = inputs[i];
    if (input.type == \'hidden\' && input.name == \'idrayon\')
      return input.value;
  }
}

</SCRIPT>';

la valeur va-t-elle s'afficher ou faut-il que je rajoute un echo $num_rayon; à la suite ?

Merci encore :D
 
WRInaute accro
Dans ton intégration (la première), il faut encore que tu appelles la fonction et que tu fasses quelque chose de la valeur qu'elle renvoie...

Et non, la deuxième intégration ne peut pas fonctionner, le php s'exécute côté serveur et le Javascript côté client.

Pour la moulinette, c'est du shell. Je suppose que ton serveur est un Linux quelconque et que tu as un accès ssh? Si c'est le cas, tu mets ça dans un fichier avec le nom de ton choix (par exemple "convert") dans le dossier où se trouvent les produits, puis en ssh tu vas dans le dossier ("cd produits") et tu exécutes le script (par exemple "./convert").

Si tout est sous Windows et/ou si tu préfères faire ça sur ton PC avant d'envoyer les fichiers, il va falloir que tu installes cygwin (www.cygwin.com) qui te permet d'avoir un environnement Unix-like sur ton PC. Sinon il faudrait ré-écrire ça avec des outils Windows, c'est un peu plus galère...

Jacques.
 
Discussions similaires
Haut