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 :

[PHP-JS] récupérer les lignes cochées dans un tableau


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7
    Points : 5
    Points
    5
    Par défaut [PHP-JS] récupérer les lignes cochées dans un tableau
    Bonjour,

    j'ai un script qui permet d'afficher dans un tableau les résultats d'une requete sql, et de cocher les lignes qui nous intéressent.
    j'ai refait ce script à partir de 2 scripts trouvés sur internet.

    le probleme est que
    1) je n'arrive pas à savoir comment récuperer les id des lignes cochées
    2) je voudrai qu'on ne puisse cocher qu'une ligne

    Si quelqu'un peut décripter un peu le code et voir s'il trouve la réponse à ces 2 questions (surtout la 1) !) je suis preneur !
    ps : c'est un code tres intéressant pour afficher les résultats d'une requete sql dans un tableau.
    Voilà le code en question :


    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    <?
     
    $requete="SELECT num_jeu,Ville,Date FROM Jeux";
    $resultat = mysql_query($requete); 
    if (!$resultat ){ 
    die('Invalid query: ' . mysql_error()); 
    } 
     
    ## nb de lignes resultat 
    $nblignes=mysql_num_rows($resultat); 
     
    echo "
    <!-- affichage de l'en-tete du tableau HTML avec les noms des champs  -->
    
    <body>
    <table class='opentable_theme' border='0' cellpadding='0' cellspacing='0' width='100%'>
      <tbody>
        <tr id='ignore'>
          <td>
          <form name='formcheckboxes' action='index.php?mod=res&ac=rejoindre' method='post'><br>
    
            <table class='resultgrid' onmouseover='javascript:trackTableHighlight(event, '#D0E2FB');' onmouseout='javascript:highlightTableRow(0);' width='100%'>
     
    		  <thead>
                <tr id='ignore'>
                  <th style='width: 50px;'>
                  <div class='outer' ><span>Choix</span></div>
                  </th>
    
                  <th style='width: 90px;'>
                  <div class='outer'><a href='#' onclick='sortTable(this,0); return false;'><span>Ville</span></a></div>
                  </th>
    
    			  <th style='width: 90px;'>
                  <div class='outer'><a href='#' onclick='sortTable(this,0); return false;'><span>Date</span></a></div>
                  </th>
    			  
                </tr></thead><tbody>
    		
    <!--  affichage des enregistrements du résultat -->
    ";
     
    for($i=0; $i < intval($nblignes); $i++) { 
    $ligne = mysql_fetch_row($resultat);
     
    echo "<tr class='LIGNE'>
    <td style='width: 30px;' align='center' valign='middle'><input name='selected_id[]' value=$num_jeu id='id.$num_jeu.' onclick='checkBoutons(document.getElementsByName('selected_id[]'));' type='checkbox'></td>";  
     
    echo "<td style='width: 100px;' align='center' valign='middle'>";
    echo "$ligne[1]</td>"; 
     
    echo "<td style='width: 100px;' align='center' valign='middle'>";
    echo "$ligne[2]</td>"; 
    }
     
    echo "
    </tbody></table<br><br>
    <input type=hidden value=$num_jeu name=selection><center>
    <center><input type='submit' value='Choisir ce jeu'></center></form>
    </form>
    </body>
    </html>
    ";
    ?>

  2. #2
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Points : 730
    Points
    730
    Par défaut
    Salut,

    1) je n'arrive pas à savoir comment récuperer les id des lignes cochées
    2) je voudrai qu'on ne puisse cocher qu'une ligne
    Si tu ne peux cocher qu'une ligne t'as pas besoin de récupérer tous les id de lignes.

    Pour cocher qu'une ligne faut que tu fasses un script en javaScript qui décoche tous les checkbox du document et qui coche celui envoyé en paramètre. Après pour la récup vu que t'en as qu'un seul tu peux envoyer la valeur dans un input hidden, t'auras à récupérer que cette valeur.

    Si ça réponds à ta question je peux te filer un coup de main pour aller plus loin!!

  3. #3
    Membre éprouvé
    Avatar de viviboss
    Profil pro
    Inscrit en
    Août 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2006
    Messages : 943
    Points : 1 248
    Points
    1 248
    Par défaut
    ....Il y a un peu moins compliqué : un formulaire par ligne !!!!

    Tu décris un formulaire par ligne, tu mets en nom unique l'ID de ton élément, et tu mets un "onclick="submit(nomdeformulaire)"" dans le code de ta case à cocher, et tu mets un champs caché contenant l'ID de ta ligne.

    Si tu le fait en dynamique, ce sera très simple : tu écris une fois le code, et c'est bon !!!!

    Ca te permet de pouvoir cocher une seule ligne, et de faire les traitements que tu veux derrière.......Et pour la selection multiple, ba si tu englobe tout tes formulaires dans un seule formulaire, alors tu peux faire des traitements généraux...

    Exemple :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <table>
    <tr>
    <form action="page.php" name="<?php echo $row['requeteid']; ?>" method="post">
    <td>
    <input type="checkbox" name="check" onclick="submit(<?php echo $row['requeteid']; ?>) />
    </td>
    <td>
    autre valeurs de ta requete.....
    </td>
    <input type="hidden" name="id" value="<?php echo $row['requeteid']; ?>"/>
    </form>
    </tr>
    </table>

    Bien evidemment, il faut que mettes entre les deux <table> une boucle PHP (réponses de ta requete : While($requete).....), comme ca tu fais le tout dynamique !!!!

    En dans la page "page.php", tu fais tes traitements sur les valeurs.....

    Voilà !!!

  4. #4
    Membre régulier Avatar de pioule
    Profil pro
    Inscrit en
    Août 2003
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 66
    Points : 97
    Points
    97
    Par défaut
    Si tu ne veux cocher qu'une seule ligne, tu peux utiliser des boutons radio Avec un petit CSS pour avoir un affichage sous forme de case à cocher

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Merci a tous les 3 pour vos réponses toutes intéressantes !
    si je compare la prop de grabriel par rapport à celle de pioule,
    celle de pioule me parait mieux puisque (d'apres ce que j'ai compris!) les radios buttons sont faits pour ne sélectionner qu'une ligne=> pas besoin de javascript.
    mais je n'ai tjs pas compris comment récuperer la valeur num_jeu correspondant a la ligne cochée...

    apres ta proposition viviboss m'a l'air bien mais pas encore assez claire pour moi..
    peux tu détailler un peu plus, par rapport à mon code?
    merci bcp

  6. #6
    Membre régulier Avatar de pioule
    Profil pro
    Inscrit en
    Août 2003
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 66
    Points : 97
    Points
    97
    Par défaut
    Pour récupérer la valeur de la ligne cochée, rien de plus simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <input type="radio" name="ligne" value="1">
    <input type="radio" name="ligne" value="2">
    <input type="radio" name="ligne" value="3">
    <input type="radio" name="ligne" value="4">
    Les boutons doivent avoir le même nom pour être gruopée ensemble.

    Et après, avec un $_POST['ligne'], tu récupères le value de la ligne cochée

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    merci pioule !
    ca marche nickel

    question subsidiaire : comment faire pour limiter la taille de mon tableau de résultats, et mettre un ascenseur (au cas où il y ait trop de lignes de résultats, par exemple plus de 10)?
    Merci

  8. #8
    Membre éprouvé Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Points : 952
    Points
    952
    Par défaut
    Bonjour,

    Pour ne pas afficher trop de ligne à l'écran, il va falloir que tu utilise un conteneur pour ton tableau ( un div par exemple). Ce conteneur, devra avoir la largeur du tableau et la hauteur de X lignes. Il faudra également mettre la propriété overflow sur scroll de façon à obtenir les tant désirées barres de défilement.

    Avec ca tu devrait pourvoir t'en sortir. Au besoin, tu pourras faire un tour sur le fourm CSS

    Si tu as vraiment beaucoup de lignes, il faudra faire en plus un peu de pagination

    Bonne fin de journée

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    merci pour ta réponse,
    je vais chercher dans cette direction
    A+

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

Discussions similaires

  1. Récupérer les lignes cochées dans un treeview
    Par stefsas dans le forum ASP.NET
    Réponses: 0
    Dernier message: 23/07/2010, 16h35
  2. Réponses: 1
    Dernier message: 24/08/2008, 20h03
  3. Réponses: 3
    Dernier message: 15/05/2008, 13h43
  4. Réponses: 4
    Dernier message: 20/08/2007, 01h16
  5. Réponses: 4
    Dernier message: 01/10/2006, 15h37

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