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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de souminet
    Inscrit en
    Novembre 2006
    Messages
    351
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 351
    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 chevronné 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
    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
    Membre éclairé Avatar de souminet
    Inscrit en
    Novembre 2006
    Messages
    351
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 351
    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.

  4. #4
    Membre Expert
    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
    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.

  5. #5
    Membre éclairé Avatar de souminet
    Inscrit en
    Novembre 2006
    Messages
    351
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 351
    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 éclairé Avatar de souminet
    Inscrit en
    Novembre 2006
    Messages
    351
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 351
    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 expérimenté
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 144
    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
    Membre Expert
    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
    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 expérimenté
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 144
    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.)

+ 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