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

PHP & Base de données Discussion :

methode pour passer variable avec POST [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 210
    Par défaut methode pour passer variable avec POST
    Bonjour à tous
    La question à l'air stupide, mais je vous explique :
    voici le code pour modifier des entrées :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $sql = 'SELECT * FROM fiche    ORDER BY adherent ASC';
     $result = $bdd->query($sql);
    $resultat=$result->fetchAll(PDO::FETCH_ASSOC); 
    foreach ($resultat as $key  =>  $row) {
        $id=  $row['id'];
    echo '<div class="lgn">
    <span class="cell1"><input type="text" name="adherent['.$id.']" value="'.$row['adherent'].'" >	</span>
    <span class="cell1"><input type="text" name="prenom['.$id.']"   value="'.$row['prenom'] .'" ></span>
     
     <input type="submit" title="Enregitrer la modification" name="btnact[?]" >
    </div> ';
    }
    Cela s'affiche par lignes , au bout de chaque ligne un bouton [ modif ],
    mais quand je réceptionne j'ai fatalement les dernières variables affichées,
    parce que dans mon "bouton" je ne sais pas comment envoyer une info [?],
    comme dans un $_GET...je l'ai fait avec [$id] mais je ne vois pas comment le récupérer !
    le code généré :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <div >
    <span class="cell1"><input type="text" name="adherent[3]" value="robert" >	</span>
    <span class="cell1"><input type="text" name="prenom[3]" value="jean" ></span>
     
     <input type="submit" title="Enregitrer la modification" name="btnact[]" value="">
     </div>
    JE pense être sur la mauvaise voie...j'attends vos lumières...merci d'avance !
    .
    .

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    la question est : "où est(sont) la(les) balise(s) <form> ?"
    • une seule autour de l'ensemble du tableau ?
    • une pour chaque ligne ?


    Question subsidiaire : "tu veux pouvoir traiter plusieurs lignes en même temps, ou une seule ligne à la fois ?"

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 210
    Par défaut
    hello
    un seul FORM !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
      <form action="edition.php" method="post">
                              <?php	 $sql = 'SELECT * FROM fiche    ORDER BY adherent ASC';
                                        $result = $bdd->query($sql);
                                        $resultat=$result->fetchAll(PDO::FETCH_ASSOC); 
                                        foreach ($resultat as $key  =>  $row) {
                    $id=  $row['id'];
     
                                       echo '  
                                      <div class="lgn">
                                      
    				   <span class="cell1"><input type="text" name="adherent['.$id.']" 		value="'.$row['adherent'].'" >	</span>
                                      <span class="cell1"><input type="text" name="prenom['.$id.']"  		value="'.$row['prenom'] .'" ></span>
                                      <span class="cell2"><input type="text" name="naissance['.$id.']"   	value="'.$date.'" ></span>
                                      <span class="cell1"><input type="text" name="parent['.$id.']"  		value="'.$row['parent'].'" ></span>
                                      <span class="cell3"><input type="text" name="heure['.$id.']"  		value="'.$row['heure'].'" ></span>
                                      <span class="cell3"><input type="text" name="cotis['.$id.']"  		value="'.$row['cotis'].'" ></span>
                                      <span class="cell2"><input type="text" name="paiement['.$id.']"  	value="'.$row['paiement'].'" ></span>
                                      <span class="cell3"><input type="text" name="sept['.$id.']"  		value="'.$row['sept'].'" ></span>
                                      <span class="cell3"><input type="text" name="oct['.$id.']"   		value="'.$row['oct'].'" ></span>
                                      <span class="cell3"><input type="text" name="nov['.$id.']"  			value="'.$row['nov'].'" ></span>
                                      <span class="cell3"><input type="text" name="dece['.$id.']"  		value="'.$row['dece'].'" ></span>
                                      <span class="cell3"><input type="text" name="janv['.$id.']"   		value="'.$row['janv'].'" ></span>
                                      <span class="cell3"><input type="text" name="fev['.$id.']"   		value="'.$row['fev'].'" ></span>
                                      <span class="cell3"><input type="text" name="mars['.$id.']"   		value="'.$row['mars'].'" ></span>
                                      <span class="cell3"><input type="text" name="avril['.$id.']" 		value="'.$row['avril'].'" ></span>
                                      <span class="cell3"><input type="text" name="mai['.$id.']"  		value="'.$row['mai'].'" ></span>
                                      <span class="cell3"><input type="text" name="juin['.$id.']" 			value="'.$row['juin'].'" ></span>
                                      <input type="hidden" name="id['.$id.']" value="'.$id.'"  >
    					  </div><!--lgn-->
                                      <input type="submit" title="Enregitrer la modification" class="cell5 iconsave" name="btnact[]" value="">
    ?>
    </form>

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bon.

    Alors un seul bouton submit à la fin suffirait, mais admettons (plusieurs ne posent pas problème).
    Au clic sur un des bouton, TOUT est envoyé.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                     <input type="hidden" name="id['.$id.']" value="'.$id.'"  >
    Cette ligne n'est pas forcément utile (voir la suite des explications) :

    Tu récupères des array de valeurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <?php
    $adherent_array = (isset($_POST['adherent']))? $_POST['adherent'] : array();
    $prenom_array = (isset($_POST['prenom']))? $_POST['prenom'] : array();
    $naissance_array = (isset($_POST['naissance']))? $_POST['naissance'] : array();
    // (....................)
     
     
    // traitement
    foreach ($adherent_array as $key => $val)
    {
       // $key vaut ici... $id de la ligne !! (tel que tu l'as écrit dans le formulaire : name="adherent['.$id.']" )
    // donc :
       $id = $key;
       $adherent = $adherent_array[$key];
       $prenom = $prenom_array[$key];
       $naissance = $naissance_array[$key];
    // (....................)
       // on peut donc traiter ligne par ligne (gestion d'erreur, enregistrment,...)
    // (....................)
    }

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 210
    Par défaut
    Pas tout compris là !

    Comment puis je distinguer les champs modifié seulement ?
    Puisque ça me renvois tout sans distinction, j'ai receptionner avec un echo :
    diez
    jean marc
    00/00/00
    dimitri
    jean marc
    02/05/90
    durand
    celine
    02/11/15
    eee

    00/00/00
    Voici un visuel du tableau :
    Nom : ex tablo.JPG
Affichages : 277
Taille : 57,1 Ko

  6. #6
    Invité
    Invité(e)
    Par défaut
    Donc... ?
    Où est le problème ?

    Il s'agit de faire des UPDATE.
    Comme les champs non-modifiés contiennent les anciennes valeurs, l'UPDATE les conservera.
    Seuls les champs effectivement modifiées le seront.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 210
    Par défaut
    Et quand il y aura 1000 ou 1500 voir 2000 lignes ça risque de faire une requête un peu lourde non ?

  8. #8
    Invité
    Invité(e)
    Par défaut
    Parce que tu comptes afficher à l'écran des tableaux de 1000 à 2000 lignes ?

    Tu n'as jamais entendu parlé de la pagination ?

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 210
    Par défaut
    heuuu non !

  10. #10
    Invité
    Invité(e)
    Par défaut
    1/ Pagination.



    2/ Cela dit,... pour surveiller les lignes modifiées, tu peux faire appel à JavaScript (puisque ça se passe coté client).
    -> les id des lignes modifées sont ajoutés à un(des) input hidden (par exemple... à étudier), ou une case à cocher sur la ligne (en lieu et place de l’icône "modifier")
    -> on les récupère et ne traite que pour ces id là.

    3/ Mais tel que tu as prévu ton tableau, avec un bouton "modifier" sur chaque ligne :
    le plus simple est de :
    • faire un formulaire par ligne (balises <form> à chaque ligne)
    • en cliquant : on ne traite QUE cette ligne là.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 210
    Par défaut
    j'ai saisi, j'avais bien repéré cette façon d'afficher (façon facebook)..
    Je pense effectivement qu'en paginent ça devrais faire l'affaire

    C'est hors sujet mais, pouvez vous m'expliquer cette ligne :

    $adherent_array = (isset($_POST['adherent']))? $_POST['adherent'] : array();
    je connais pas cette syntaxe avec le point d'interrogation et les 2 points a la fin !

    Merci

  12. #12
    Invité
    Invité(e)
    Par défaut


    Voir "Opérateur ternaire" :
    L'expression (expr1) ? (expr2) : (expr3) est évaluée à expr2 si expr1 est évaluée à TRUE, et expr3 si expr1 est évaluée à FALSE.

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 210
    Par défaut
    d'accord, intéressant !

    Merci de votre aide, je m'en vais paginer !!

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

Discussions similaires

  1. C++/CX : meilleur methode pour passer un vecteur
    Par yan dans le forum Visual C++
    Réponses: 7
    Dernier message: 07/11/2013, 17h30
  2. Réponses: 10
    Dernier message: 27/08/2008, 21h00
  3. Variable avec POST et GET
    Par aliwassem dans le forum Langage
    Réponses: 10
    Dernier message: 09/04/2008, 12h44
  4. [Conception] Passage De Variable Avec Post Via Un Script Php + Redirection
    Par british_toons dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 26/09/2006, 16h57
  5. Envoi de variables avec POST
    Par oops! dans le forum Flash
    Réponses: 5
    Dernier message: 06/08/2006, 21h14

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