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 :

Un lien dans un tableau


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de souminet
    Inscrit en
    Novembre 2006
    Messages
    351
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 351
    Points : 111
    Points
    111
    Par défaut Un lien dans un tableau
    Bonjour à tous, voilà , je dispose d'une page PHP permettant l'affichage des enregistrements d'une table Mysql dans un tableau , le code est le suivant:
    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
     <?php
    // information pour la connection à la DB
    $host = 'localhost';
    $user = 'root';
    $pass = 'mysql';
    $db = 'gdi';
     
    // connection à la DB
    $link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
    mysql_select_db($db) or die ('Erreur :'.mysql_error());
     
    // requête SQL qui compte le nombre total d'enregistrement dans la table et qui
    //récupère tous les enregistrements
    $select = 'SELECT num_int,date,heure,structure,service,section,demandeur,tel,code_bureau,type_equip,cat_interv,description FROM di_attente where etat="en attente"';
    $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
    $total = mysql_num_rows($result);
     
     
    // si on a récupéré un résultat on l'affiche.
    if($total) {
        // debut du tableau
        echo '<table bgcolor="#FFFFFF">'."\n";
            // première ligne on affiche les titres prénom et surnom dans 2 colonnes
            echo '<tr>';
            echo '<td bgcolor="#669999"><b><u>num_int</u></b></td>';
            echo '<td bgcolor="#669999"><b><u>date</u></b></td>';
          echo '<td bgcolor="#669999"><b><u>heure</u></b></td>';
            echo '<td bgcolor="#669999"><b><u>structure</u></b></td>';
           echo '<td bgcolor="#669999"><b><u>service</u></b></td>';
    	  echo '<td bgcolor="#669999"><b><u>section</u></b></td>' ;
          echo '<td bgcolor="#669999"><b><u>demandeur</u></b></td>' ;
          echo '<td bgcolor="#669999"><b><u>tel</u></b></td>' ;
          echo '<td bgcolor="#669999"><b><u>code_bur</u></b></td>' ;
          echo '<td bgcolor="#669999"><b><u>type_equip</u></b></td>' ;
          echo '<td bgcolor="#669999"><b><u>cat_interv</u></b></td>' ;
          echo '<td bgcolor="#669999"><b><u>description</u></b></td>' ;
          echo '</tr>'."\n";
        // lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.    
        while($row = mysql_fetch_array($result)) {
            echo '<tr>';
            echo '<td bgcolor="#CCCCCC">'.$row["num_int"].'</td>';
            echo '<td bgcolor="#CCCCCC">'.$row["date"].'</td>';
          echo '<td bgcolor="#CCCCCC">'.$row["heure"].'</td>';
            echo '<td bgcolor="#CCCCCC">'.$row["structure"].'</td>';
          echo '<td bgcolor="#CCCCCC">'.$row["service"].'</td>';
    	  echo '<td bgcolor="#CCCCCC">'.$row["section"].'</td>';
          echo '<td bgcolor="#CCCCCC">'.$row["demandeur"].'</td>';
          echo '<td bgcolor="#CCCCCC">'.$row["tel"].'</td>';
          echo '<td bgcolor="#CCCCCC">'.$row["code_bureau"].'</td>';
         echo '<td bgcolor="#CCCCCC">'.$row["type_equip"].'</td>';
          echo '<td bgcolor="#CCCCCC">'.$row["cat_interv"].'</td>';
         echo '<td bgcolor="#CCCCCC">'.$row["description"].'</td>';
        echo '</tr>'."\n";
    	}
    	echo '</table>'."\n";
        // fin du tableau.
    }
    else echo ' table vide...';
     
    // on libère le résultat
    mysql_free_result($result);
     
    ?>
    Néanmoins, je voudrais que dans chacune des lignes du tableau le résultat du premier champs affiché c'est à dire le : "num_int" soit un lien HTTP vers une autre page , cette page contiendra le détail de l'enregistrement en cours (l'enregistrement dont le "num_int" est celui sur lequel on a cliqué (le paramètre du lien) ...
    J'espère que c'est clair

    Merci de m'aider !!!!!!!!!!!!!

  2. #2
    Membre confirmé Avatar de Inazo
    Profil pro
    Gérant - société de développement web
    Inscrit en
    Avril 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Gérant - société de développement web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 417
    Points : 632
    Points
    632
    Par défaut
    Bonjour,

    Alors pour ta réponse, je suis un poil surpris pas cette question enfin

    Donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<td bgcolor="#CCCCCC"><a href="TON LIEN COMME TU VEUX">'.$row["num_int"].'</a></td>';
    Par contre évite de faire 3000 echo, l'interpréteur PHP va devenir dingue à force... Concatène tes chaînes

    Et puis le \n en fin d'affichage...

    Cordialement,

  3. #3
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    salut,
    je te propose une procédure parmi tant d'autres :

    1. créer une page de détails sui pourrait s'appeler details.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
    15
     
    <?php
    $identifiant = is_set($_GET['id'])?$_GET['id']:false;
    if (is_numeric($identifiant))
    {
       //ta requête select ici
      $query = mysql_query("select * from table_users where id=$identifiant") or die(mysq_error())
     
      //récupérer les différents valeurs via mysql_fetch_array()
      //....
    }
    else
    {
      echo "l'identifiant est incorrect";
    }
    2. sur ta page de liste ajouter une colonne supplémentaire dans le tableau
    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
     
    //...
    echo '<td bgcolor="#669999"><b><u>description</u></b></td>' ;
    //nouvelle colonne
    echo '<td bgcolor="#669999"><b><u>Lien</u></b></td>' ;
    echo '</tr>'."\n";
     
     
    //...
    //un peu plus loin dans ton while
     
    echo '<td bgcolor="#CCCCCC">'.$row["description"].'</td>';
    //nouvelle colonne
    echo '<td bgcolor="#CCCCCC"><a href=details.php?id='.$row["num_int"].'>voir détails</a></td>';
    echo '</tr>'."\n";
    Edit : correction de code.

  4. #4
    Membre régulier Avatar de souminet
    Inscrit en
    Novembre 2006
    Messages
    351
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 351
    Points : 111
    Points
    111
    Par défaut
    Citation Envoyé par Inazo Voir le message
    Bonjour,

    Alors pour ta réponse, je suis un poil surpris pas cette question enfin

    Donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<td bgcolor="#CCCCCC"><a href="TON LIEN COMME TU VEUX">'.$row["num_int"].'</a></td>';
    Par contre évite de faire 3000 echo, l'interpréteur PHP va devenir dingue à force... Concatène tes chaînes

    Et puis le \n en fin d'affichage...

    Cordialement,
    Merci, mais n'empêche que je devrais faire passer le '.$row["num_int"].' vers la page détail , ainsi les champs de l'enregistrement en cours (celui passé) devront s'afficher (Un enregistrement par page) pour plus de clarté, donc en résumé passer d'une page contenant touts les enregistrements dans un tableau vers une page détail.

  5. #5
    Membre régulier Avatar de souminet
    Inscrit en
    Novembre 2006
    Messages
    351
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 351
    Points : 111
    Points
    111
    Par défaut
    Voilà, j'ai réussi à faire passer la valeur de la variable via un lien hypertexte comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<td bgcolor="#CCCCCC"><a href="gdi_detail.php?num_int='.$row["num_int"].'">'.$row["num_int"].'</a></td>';
    Puis à la récupérer dans la page détail.php via ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $num_intervention= $_GET['num_int'];
    maintenant il ne me reste plus qu'à l'utiliser dans une requête SQL dans la clause where, c'est à dire afficher l'enregistrement dont le numéro d'intervention est égal à celui récupéré via la variable : $num_intervention

    merci de m'aider

  6. #6
    Membre régulier Avatar de souminet
    Inscrit en
    Novembre 2006
    Messages
    351
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 351
    Points : 111
    Points
    111
    Par défaut
    Je ne comprend vraiment pas pourquoi je n'arrive pas à afficher les champs de l'enregistrement dans ma page détail, alors que j'arrive a faire la variable , voilà le code que j'utilise au niveau de la page détail:
    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
    <?php 
    $num_intervention= $_GET['num_int']; 
    // information pour la connection à la DB
    $host = 'localhost';
    $user = 'root';
    $pass = 'mysql';
    $db = 'gdi';
     
    // connection à la DB
    $link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
    mysql_select_db($db) or die ('Erreur :'.mysql_error());
     
    // requête SQL qui
    //récupère l'enregistrement indéxé par le numéro d'intervention passé en paramètre via URL
    $select = 'SELECT date,heure,structure,service,section,demandeur,tel,code_bureau,type_equip,cat_interv,description FROM di_attente where num_int= ".$num_intervention."';
    $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
    $row = mysql_fetch_array($result);
    ?>
    Puis j'affiche le numéro d'intervention comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
          <h1 align="center" class="Style1 Style2">Détail de la demande d'intervention N° :<?php echo $num_intervention;?> </h1>
    Néanmoins je n'arrive pas à afficher le reste des champs correspondants à ce même numéro d'intervention????

    De grâce, aidez moi !!!

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 144
    Points : 161
    Points
    161
    Par défaut
    Citation Envoyé par souminet Voir le message
    Néanmoins je n'arrive pas à afficher le reste des champs correspondants à ce même numéro d'intervention????
    Ben fais voir comment tu fais ça... et dis ce qui se produit.

    Au passage, ton code combine failles d'injections SQL et de cross-site scripting, je te laisse googler ça pour y remédier (indices : mysql_real_escape_string et htmlspecialchars/intval).

  8. #8
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    Citation Envoyé par asdf007 Voir le message
    Au passage, ton code combine failles d'injections SQL et de cross-site scripting, je te laisse googler ça pour y remédier (indices : mysql_real_escape_string et htmlspecialchars/intval).
    en fait, la ligne de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (is_int($identifiant))
    de mon code précédent fait cela beaucoup plus simplement.

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 144
    Points : 161
    Points
    161
    Par défaut
    Citation Envoyé par Thes32 Voir le message
    en fait, la ligne de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (is_int($identifiant))
    de mon code précédent fait cela beaucoup plus simplement.
    is_int ne marchera pas ici (les valeurs $_GET sont des chaînes de caractère), il faut utiliser ctype_digit pour faire ce test (is_int renverra toujours false).

    (Et is_set => isset, aussi.)

  10. #10
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    Citation Envoyé par asdf007 Voir le message
    is_int ne marchera pas ici (les valeurs $_GET sont des chaînes de caractère),
    oui j'ai complètement perdu de vue !
    Citation Envoyé par asdf007 Voir le message
    il faut utiliser ctype_digit pour faire ce test (is_int renverra toujours false).
    inutile de se compliquer la vie dans ce cas is_numeric convient très bien.

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 144
    Points : 161
    Points
    161
    Par défaut
    Citation Envoyé par Thes32 Voir le message
    inutile de se compliquer la vie dans ce cas is_numeric convient très bien.
    Ça dépend si on veut accepter les valeurs style "30e8", "20.45" ou encore "-5" (j'en passe). En général, pour un ID, c'est pas top...

  12. #12
    Membre régulier Avatar de souminet
    Inscrit en
    Novembre 2006
    Messages
    351
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 351
    Points : 111
    Points
    111
    Par défaut
    J'ai réussi à le faire :
    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
    <?php 
    $num_intervention= $_GET['num_int']; 
    // information pour la connection à la DB
    $host = 'localhost';
    $user = 'root';
    $pass = 'mysql';
    $db = 'gdi';
     
    // connection à la DB
    $link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
    mysql_select_db($db) or die ('Erreur :'.mysql_error());
     
    // requête SQL qui
    //récupère l'enregistrement indéxé par le numéro d'intervention passé en paramètre via URL
    $select = "SELECT date,heure,structure,service,section,demandeur,tel,code_bureau,type_equip,cat_interv,description FROM di_attente where num_int= '$num_intervention'";
    $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
    $row = mysql_fetch_array($result);
    ?>
    ensuite afficher comme cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    	echo '<p><b>Date de l\'émission de la DI  :</b> '.$row["date"].'</p>';
    	echo '<p><b>Heure de l\'émission de la DI  :</b> '.$row["heure"].'</p>';
        echo '<p><b>Structure / Département  : </b>'.$row["structure"].'</p>';
        echo '<p><b>Service ou autres  : </b>'.$row["service"].'</p>';
        echo '<p><b>Section  : </b>'.$row["section"].'</p>';
        echo '<p><b>Nom et prénom du demandeur  :</b> '.$row["demandeur"].'</p>';
        echo '<p><b>Numéro de téléphone  :</b> '.$row["tel"].'</p>';
        echo '<p><b>Code du Bureau (Local) :</b> '.$row["code_bureau"].'</p>';
        echo '<p><b>Type de l\'Equipement  :</b> '.$row["type_equip"].'</p>';
        echo '<p><b>Catégorie de l\'Intervention  : </b>'.$row["cat_interv"].'</p>';
        echo '<p><b>Description du Problème ou de l\'anomalie  :</b> '.$row["description"].'</p>';
       ?>

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

Discussions similaires

  1. Liens dans un tableau qui change le contenu d'un autre case da ce tableu
    Par maxtofurious dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 13/06/2007, 17h09
  2. Lien dans un tableau
    Par Lavip dans le forum VBA Access
    Réponses: 3
    Dernier message: 10/04/2007, 10h32
  3. Réponses: 1
    Dernier message: 15/05/2006, 18h43
  4. lien dans un tableau
    Par D-D dans le forum ASP
    Réponses: 7
    Dernier message: 06/06/2004, 01h20
  5. lien dans un tableau
    Par billoum dans le forum ASP
    Réponses: 5
    Dernier message: 04/05/2004, 13h51

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