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

JavaScript Discussion :

envois de var $_GET un peu spécial


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Avatar de frechy
    Inscrit en
    Novembre 2004
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2004
    Messages : 343
    Points : 511
    Points
    511
    Par défaut envois de var $_GET un peu spécial
    bon voilà ca fait maintenant 2h que j'essaye d'envoyer la valeur d'un champ de texte...je m'explique:

    Pour l'école on doit faire un site PHP, je m'occupe d'afficher la liste des articles. En résumé je fais ma requette et tous les articles s'affiche(ligne par ligne grace à une boucle)

    A droite de chaque article je suis obligé de placer un champ de texte avec un petit + juste à droite, le systeme est le suivant, lorsque l'utilisateur veut acheter un article, il entre la quantité désirée dans le champ de texte puis il doit cliquer sur le + pour ajouter la quantité de l'article sélectionné à son cadille...bon jusque là c'est du PHP... mais le problème c est que je ne connais pas de fonction en php qui puisse récupérer la valeur d'une zone de texte.

    Chaque zone de texte à pour nom la reférence de l'article(pour pouvoir identifier chaque zone de texte)
    et donc finalement le lien du + donne ceci:

    <a href="caddy.php?refart=<? echo $donnees['refart'] ?>&qt=
    et c 'est donc la quantité que je n'arrive pas à obtenir comment appeler une fonction en plein mileu (sans faire de onClick etc car la variable DOIT etre envoyée cad $_GET

    j'ai essayé de mettre this.value, evidement il envois la chaine de caractere "this.value" ou alors de tapper juste apres qt=<script language = "javascript> return this.value... enfin plein de conneries du genre mais rien ne va

    Vu que ca doit pas eter trop clair tout ce dont je viens de parler, voici le code source:

    <? session_start(); ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>Document sans titre</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

    </head>

    <body>

    <?

    mysql_connect("localhost","root","");
    mysql_select_db("eshop");
    $requette="SELECT a.refart, a.libart, a.prixunit, a.qtestock FROM article a, catart c WHERE c.refart = a.refart AND c.idcat = ".$_GET['cat'] ;

    if(isset ($_GET['tri']))
    {
    $requette.=" ORDER BY a.prixunit ".$_GET['tri'];
    }

    if(isset ($HTTP_SESSION_VARS['login']))
    {
    echo "<br>SESSION<br>";
    echo $HTTP_SESSION_VARS['login'];
    echo"<br>";
    }
    else
    {
    echo "<br>PAS DE SESSION<br>";
    }

    $reponse = mysql_query($requette);

    echo $requette ;?>

    <table width="100%" border="1">
    <tr>
    <td width="40">Ref</td>
    <td width="300">Libell&eacute;</td>
    <td width="50"><a href="catalogue.php?cat=<? echo $_GET['cat'] ?>&tri=ASC"><img src="haut.gif" width="12" height="12" border="0"></a>Prix<a href="catalogue.php?cat=<? echo $_GET['cat'] ?>&tri=DESC"><img src="bas.gif" width="12" height="12" border="0"></a></td>
    <td width="50">Stock</td>
    <td width="50">Commander</td>
    </tr>
    </table>
    <form name="form" method="post" action="">
    <?

    while ($donnees = mysql_fetch_array($reponse) )
    {
    ?>
    <table width="100%" border="1">
    <tr>
    <td width="40"><? echo $donnees['refart']; ?></td>
    <td width="300"><? echo $donnees['libart']; ?></td>
    <td width="50"><? echo $donnees['prixunit']; ?></td>
    <td width="50"><? echo $donnees['qtestock']; ?></td>
    <td width="50"><?
    if(isset ($HTTP_SESSION_VARS['login']))
    {
    ?>
    <input name= <? echo $donnees['refart'] ?> type="text" value="0" size="3" maxlength="3" >
    <a href="caddy.php?refart=<? echo $donnees['refart'] ?>&qt= this.value "><img src="plus.gif" width="14" height="14" border="0"></a>
    <?
    }
    else
    {
    echo "<br>PAS DE SESSION<br>";
    } ?></td>
    </tr>
    </table>
    </form>
    <? }

    mysql_close();
    ?>
    </body>
    </html>



    Merci d'avance aux courageux qui y regarderont

  2. #2
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    oui, en fait, tu veux récupérer la valeur du champ sachant que cette valeur a toutes les chances d'avoir été modifiée par le client?

    en tout cas, ton lien est tout pourri: double égalité, this.value qui ne correspond à rien...

    je te conseille par exemple de travailler avec un id

    si tu donnes à chaque lien "plus" un id du genre "lien0, lien1, lien2" et à chaque champ en regard un id "champ0, champ1, champ2", tu peux récupérer automatiquement la valeur du champ

    mais attention, tu as besoin de javascript, puisque tu ne veux pas passer par le serveur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input name= <? echo $donnees['refart'] ?> type="text" value="0" size="3" maxlength="3" id="champ2" />
    <a id="lien2" href="#" onclick="location.href='caddy.php?refart='+document.getElementById('champ'+this.id.substring(4)).value;return false"><img src="plus.gif" width="14" height="14" border="0"></a>

  3. #3
    Membre confirmé
    Avatar de frechy
    Inscrit en
    Novembre 2004
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2004
    Messages : 343
    Points : 511
    Points
    511
    Par défaut
    merci beaucoup, je vai tester ca tout de suite

    oui le this.value c est débil

  4. #4
    Membre confirmé
    Avatar de frechy
    Inscrit en
    Novembre 2004
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2004
    Messages : 343
    Points : 511
    Points
    511
    Par défaut
    ca ne fonctionne pas super bien, ca me revoit toujours la valeur du 1er champ. En fait si j'ai bien compris tu demandes la valeur du champ dont l'id=champ...or tous mes champs on un id différents (id du champ= referance de l'article, j'ai donc essayé de faire ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <input name= "label" type="text" value="0" size="3" maxlength="3" id='<? echo $donnees['refart'] ?>' /> 
    <a id="lien2" href="#" onclick="location.href='caddy.php?refart='+document.getElementById('<? echo $donnees['refart'] ?>'+this.id.substring(4)).value;return false"><img src="plus.gif" width="14" height="14" border="0"></a>
    Mais ca ne fonctionne pas quand je clicque plus rien ne se passe...
    une fois "compilé" en html ca donne ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <input name= "label" type="text" value="0" size="3" maxlength="3" id='3' /> 
    <a id="lien2" href="#" onclick="location.href='caddy.php?refart='+document.getElementById('3'+this.id.substring(4)).value;return false"><img src="plus.gif" width="14" height="14" border="0"></a>
    je ne compprend vraiment pas pourquoi ton bout de code "fonctionne" et le mien pas

    J'ai aussi essayé getElementByName mais c est pareil...ha oui et c est pas refart mait quantité que j'envoie mais ca c'est jsute pour etre logique

    que c est compliqué le javascript par raport au php...

  5. #5
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Tu peux faire en utilisant un formulaire par référence.

    Pour automatiser il suffit de remplacer "reference_article" par "<? echo $donnees['refart'] ?>"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <form id="reference_article" action="caddy.php" method="post">
     <input name="qt" type="text" value="0" size="3" maxlength="3" > 
     <input name="refart" type="hidden" value="reference_article"> 
     <img src="plus.gif" width="14" height="14" border="0" onclick="document.getElementById('reference_article').submit()">
    </form>
    Fichier : caddy.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
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     
    <html>
    <head>
    <title>Untitled</title>
    </head>
    <body>
    <? 
    print $_POST['refart'];
    print $_POST['qt'];
     ?>
    </body>
    </html>
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  6. #6
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    on est bien d'accord que tes champs ont un id différent!
    le tout est de les nommer logiquement (avec le même radical commun "champ" par exemple, et de nommer les liens en parallèle (avec le même indice final)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    champ1 ==> lien1
    champ2 ==> lien2
    etc.
    je n'ai pas bien compris ce qui ne marchait pas dans ton adaptation

  7. #7
    Membre confirmé
    Avatar de frechy
    Inscrit en
    Novembre 2004
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2004
    Messages : 343
    Points : 511
    Points
    511
    Par défaut
    Ca fonctionne! Merci badaze (merci aussi à javatwister)

    javatwister, le problème qu'il y a c est lorsque je clique sur le + internet explorer ne m'ouvre pas la page cadille.php et me notifie qu'il y a eu une erreur, l'erreur se passe à ce niveau:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <a id="lien2" href="#" onclick="location.href='caddy.php?refart='+document.getElementById('3'+this.id.substring(4)).value;return false"><img src="plus.gif" width="14" height="14" border="0"></a>
    Donc voilà je pense que je vai garder cette version qui crée un formulaire par article (moins jolie mais bon...)

    Si toutefois tu voulais t'amuser à envoyer les variables comme tu as essayé, je me ferai un plaisir de tester si celà fonctionne

    Et j'ai bien nommé chaque champ avec un nom différent (id et/ou name), idem pour le lien, j'ai adapter ta version comme j'ai pu

  8. #8
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    erreur de nommage dans l'exemple que tu m'as donné; tu donnes au champ l'id "3", ce qui à la base est très déconseillé; de plus, le lien a pour id "lien2"; du coûp, ce code n'a plus de sens
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('3'+this.id.substring(4))
    puisqu'il fait référence à un objet dont l'id serait "32" ... et qui n'existe pas

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

Discussions similaires

  1. [SERVLET]CMT récupérer le name de ce input un peu spécial???
    Par Devil666 dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 24/05/2005, 17h50
  2. Requête SELECT un peu spéciale
    Par Kokito dans le forum Langage SQL
    Réponses: 4
    Dernier message: 21/04/2005, 11h42
  3. contrainte d'unicité un peu spéciale....
    Par bdkiller dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 23/11/2004, 17h54
  4. Réponses: 4
    Dernier message: 05/07/2004, 13h17
  5. ORDER BY un peu spécial
    Par gromez dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 29/04/2004, 11h17

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