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 :

variable comme parametre $_GET


Sujet :

Langage PHP

  1. #1
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut variable comme parametre $_GET
    Bonjour a tous.

    J'aurais une petite question car je ne comprends pas mon erreur (meme si elle doit etre enorme me connaisant )

    Voila dans un formulaire dont la taille depends du nombre de resultats trouvés en BdD je passe des valeurs que l'user aura coché vers la page cible du form.

    Simple pour l'instant ^^

    C'est la que je dois faire mon erreur:

    Je cree un for verifiant (ou etant censé) l'existance des valeurs transmis mais il ne voit rien du tout et ne rentre jamais dans le if

    code du for avec le if incriminé dedans:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $comptAbus=$sql->TabResSQL("select count (*) from abus");
    for ($i = 1; $i <= $comptAbus[0][0]; $i++)
    {
    	echo ("on est dans la boucle</br>");
    	$nom= "check".$i;
    	echo ("la variable nom est a ".$nom."</br>");
    	if (isset($_GET['$nom']))	
    	{
    		echo ("on est dedans et l'id est de : ".($_GET[$nom]));
    	}	
    }
    Je me suis dit que je ne pouvais peut etre pas ultiliser une variable comme parametre du $_GET mais je ne vois pas pourquoi sa serait le cas.


    Dans l'adresse les variables voulus sont bien passé en parametes:
    /management/admin/base.php?check9=9&check8=8&action=&submit=valider

    comme ici dans l'exemple.

    Si quelqun pouvait me dire ou je me plante sa m'arangerais bien

    Merci d'avance

  2. #2
    Expert éminent sénior

    Avatar de FirePrawn
    Homme Profil pro
    Consultant technique
    Inscrit en
    Mars 2011
    Messages
    3 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique

    Informations forums :
    Inscription : Mars 2011
    Messages : 3 179
    Points : 19 373
    Points
    19 373
    Par défaut
    Bonjour,

    Et si tu enlèves les quotes autour de la variable dans le if ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isset($_GET[$nom]))

  3. #3
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 234
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 234
    Points : 8 497
    Points
    8 497
    Billets dans le blog
    17
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isset($_GET['$nom']))
    Là tu cherches un paramètre GET dont le nom serait littéralement $nom. Il faudrait faire $_GET[$nom].

    Ceci dit l'instruction suivante :

    Me laisse penser que tes élément de formulaire s'appellent check123, check124, etc.
    La méthode est mauvaise, utilise plutôt check[], les VALUE des éléments cochés seront placés dans le tableau $_GET['check'].

  4. #4
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut
    les cotes dans if (isset($_GET['$nom'])) n'etaient qu'une tentative desesperté

    normalement j'avais mis if (isset($_GET[$nom])) mais sa ne functionne pas.

    Pour ce qui est du check[] la tu m'interesse ^^

    Je cree ce que je dois passer comme sa dans le formulaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo("<td><input type='checkbox' name='check".$traitements['id_abus']."' value=".$traitements['id_abus']."></input></td>");
    $traitements correspond au 1 , 2 et mis apres check.

    Pourrais tu m'expliquer somairement comment passer de sa au check[] please?

    Merci d'avance.

  5. #5
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 234
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 234
    Points : 8 497
    Points
    8 497
    Billets dans le blog
    17
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type='checkbox' name='check[]' value="<?php echo $traitements['id_abus'] ?>">
    Le tableau $_GET['check'] contiendra les VALUE des cases cochées, tableau sur lequel tu pourras boucler facilement avec foreach.
    Pour mieux comprendre regarde l'URL après soumission du FORM et fais un print_r($_GET) dans la page de traitement.

  6. #6
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut
    Pour creer et envoyer pas de soucis.

    Merci beaucoup c'est genial.

    Par contre j'ai un petit soucis avec la syntaxe a la recuperation.

    Si je mats sa:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (isset($_GET['check']))
    Il me dira oui pour toutes a condition qu'une au moins a été créé.

    si je mets cesi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (isset($_GET['check['.$i.']']))
    Il ne voit plus rien

    et si je mets comme sa:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (isset($_GET[$check[.$i.]]))
    j'ai droit a sa:
    Parse error: syntax error, unexpected '.', expecting ']' in C:\wamp\www\rexflex2\management\admin\base.php on line 63

  7. #7
    Expert éminent sénior

    Avatar de FirePrawn
    Homme Profil pro
    Consultant technique
    Inscrit en
    Mars 2011
    Messages
    3 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique

    Informations forums :
    Inscription : Mars 2011
    Messages : 3 179
    Points : 19 373
    Points
    19 373
    Par défaut
    Pourquoi tu concatènes tes indices ?

    Cette syntaxe est correcte.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    // recuperation
    $check_array = $_GET['check']; // array
    // traitement
    foreach($check_array as $idx => $val){
     
       if ($val=='ON'){ // (en mettant dans l'input : value="ON")
         // ... OK ! Traitement
        echo 'case '.$idx.' : '.$val.'<br />'; // $val est équivalent à $check_array[$i]
       }
    }
    ?>
    PS : pourquoi passer en GET, alors que tu pourrais passer en POST ?

  9. #9
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut


    j'ai tenté comme tu m'a dit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isset($_GET[$check[$i]]))
    Malheureusement sa me retourne sa:
    Notice: Undefined variable: check in C:\wamp\www\rexflex2\management\admin\base.php on line 64

    Quelqun aurait il une corde?

  10. #10
    Invité
    Invité(e)
    Par défaut
    Voir mon message précédent,
    Soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $check = $_GET['check'];
    // [...] et :
    if (isset($check[$i]))
    OU encore :
    Et donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isset($_GET['check'][$i]))

  11. #11
    Expert éminent sénior

    Avatar de FirePrawn
    Homme Profil pro
    Consultant technique
    Inscrit en
    Mars 2011
    Messages
    3 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique

    Informations forums :
    Inscription : Mars 2011
    Messages : 3 179
    Points : 19 373
    Points
    19 373
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Voir mon message précédent,
    OU encore :
    Et donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isset($_GET['check'][$i]))
    +1
    Je sais pas pourquoi j'ai écrit $_GET[$check[$i]]

  12. #12
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut
    jreaux62

    Ton code a l'air genial mais comment savoir a quel index je suis sans la valeur?

    Si je mets on dans la valeur que je mettais dans valeur et qui correspond en fait a un id de ma BdD?

  13. #13
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut
    Hola je viens de me relire et la dislexie me guette lol.

    Je me reexplique en FRANCAIS.

    Pour l'instant je recuper l'id a effacer dans ma BdD dans la valeur.
    tout du moins c'est ce que j'essaye.

    Si je remplace mon id par la string on, comment savoir exactement quel post l'user veut efacer?

  14. #14
    Invité
    Invité(e)
    Par défaut
    Maintenant que le problème de syntaxe est réglé (!) :
    et si tu nous expliquais un peu ce que tu veux faire ?
    + le bout du formulaire
    + le bout du traitement souhaité

    Ça pourrait aider...

  15. #15
    Invité
    Invité(e)
    Par défaut
    A moins que je ne me trompe, $_GET['check'] ne contient QUE les CASES COCHEES.
    C'est facile à vérifier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <pre>
    <?php print_r($_GET['check']); ?>
    </pre>
    Donc :
    Formulaire : on met l'identifiant en value
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="checkbox" name="check[]" value="<?php $row['identifiant']; ?>" />
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    // recuperation : $_GET['check'] ne contient QUE les CASES COCHEES
    $check_array = $_GET['check']; // array
    // traitement
    foreach($check_array as $idx => $val){
        echo 'case '.$idx.' cochée : identifiant '.$val.'<br />';
       // on traite ...
    }
    ?>

  16. #16
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut
    jreaux62 TU EST MON SAUVEUR \0/

    Merci beaucoup je recupere exactement ce que je voulais grace a ton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isset($_GET['check'][$i]))
    Merci mile fois.

    Pour la petite histoire je cree un formulaire dans un espace admin ou sont listés touts les posts d'un forum.

    En cochant les cases des posts a efacer je voulais donner a l'admin la possibilité de les effacer rapidement et facilement.

    Maintenant que j'arrive a recuperer ce qu'il me faut sa va aller. .. j'espere

    Merci beaucoup en tout cas.

  17. #17
    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

    Le principe des checkbox est simple : ne sera retourné QUE les chechbox cochés (dans $_GET ou $_POST).
    Donc quelque part vérifier si chaque élément contenu dans $_GET['check'] existe ne sert à rien.

    Ceci est théoriquement suffisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // traitement
    $check_array = array();
     
    if (isset($_GET['check'])) {
        foreach($_GET['check'] as $idx => $val) {
            echo 'case '.$idx.' : '.$val.'<br />';
            // On stock les checkbox cochés
            $check_array[] = $val;
       }
    }
    Là où je veux en venir en quelque sorte, c'est que la clé ($idx ici) n'a aucune espèce d'importance, c'est juste une incrémentation, c'est la valeur ($val) qui est importante.

    Vérifier ces valeurs ($val) peut être utile par contre car à l'origine elles viennent de $row['identifiant'] du formulaire.

  18. #18
    Invité
    Invité(e)
    Par défaut
    Et ceci est pratiquement correct :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    // recuperation : $_GET['check'] ne contient QUE les CASES COCHEES
    $check_array = $_GET['check']; // array des checkbox cochées (valeurs : les identifiant à supprimer)
    // traitement
    foreach($check_array as $idx => $val){
        echo 'case '.$idx.' cochée : la ligne dont l\'identifiant est '.$val.' va être supprimée<br />';
       // on traite : SUPPRESSION
       $del_query = "DELETE FROM latable WHERE identifiant = '".intval($val)."';";
      // [...]
    }
    ?>

  19. #19
    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
    Il faut au minimum vérifier que l'élément $_GET['check'] existe, car si aucune case n'est cochée cet élément n'existera pas, ce qui provoquera une erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // traitement
    $check_array = array();
     
    // Au moins ceci :
    if (isset($_GET['check'])) {
        // ... etc ...
    }
    Mise à part ça, le principe de créer des tableaux à l'origine en HTML est une bonne technique.

  20. #20
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut
    Une fois de plus je me suis pris la tete pour rien donc

    Mais sa m'arrivera plus pour sa en toput cas.

    Merci beaucoup !!!

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [AC-2013] Requete avec comme parametre des variables.
    Par NenciariniL dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 24/05/2015, 11h28
  2. donner la valeur d'une variable comme nom de table
    Par cladsam dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 14/10/2005, 15h16
  3. [Custom Tags 1.2] Passer une variable comme valeur d'attribut d'un tag jsp
    Par Pi2 dans le forum Taglibs
    Réponses: 7
    Dernier message: 16/09/2005, 14h44
  4. passage d'une variable en parametre
    Par duga dans le forum Langage
    Réponses: 4
    Dernier message: 11/09/2005, 12h19
  5. [curseurs] utiliser une variable comme nom de champ
    Par Christian31 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 09/09/2005, 14h12

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