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 :

Condition ternaire dans un tableau


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Archéologue
    Inscrit en
    Mars 2019
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Archéologue
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mars 2019
    Messages : 134
    Points : 59
    Points
    59
    Par défaut Condition ternaire dans un tableau
    Bonjour,

    je suis en train d'insérer un tableau qui insère des données SQL. Ce tableau est déjà conditionné dans une condition IF
    Parmi ces données affichées, j'aimerais que la donnée "Lien" ne s'insère que si elle existe. J'ai donc insérer une condition ternaire, mais un petit problème arrive dans mon code pour que la suite du tableau s'exécute. je vous joins une partie du code qui sera sans doute plus explicite. Mon problème se situe au point à la fin de la ligne 12 qui engendre le non affichage de la dernière colonne si la condition ternaire est TRUE;
    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
    <table Style="margin:auto;width:80%;">
    <tr> <th width=10%> Auteur </th><th width=10%> Année </th> <th width= 60%> Références bibliographiques </th><th width=10%> Type </th><th width=5%> Lien </th><th width= 10%> </th></tr>
     
    <?php
     
    foreach ($connexion->query($sql2) as $row)
     
    echo "<tr><td>".$row['Auteur']."</td>
    <td>".$row['Annee']."</td>
    <td><div class=cesure>".$row['Reference']."</div></td>
    <td>".$row['Type']."</td>
    <td>".$lien = (!empty($row['Lien']))? '<a href='.$row['Lien'].'><img src=http://archeodunum:8080/wp-content/uploads/2019/03/lien.png alt=lien width=40%/></a>' : 'non'."</td>
    <td><a href='modifier_biblio?id=".$row['ID']."&o=u'>Modifier</a><br><a href='supprimer_biblio?id=".$row['ID']."&o=d'>Supprimer</a></td></tr>\n";
    ?>
    </table>
    Merci d'avance si quelqu'un peut jeter un petit coup d'oeil...en espérant avoir été assez clair

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

    1- Il faut mettre des parenthèses autour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
       echo "...
    ...
    <td>".( $lien(!empty($row['Lien']))? '<a href='.$row['Lien'].'><img src=http://archeodunum:8080/wp-content/uploads/2019/03/lien.png alt=lien width=40%/></a>' : 'non' )."</td>
    2- OU mettre la condition AVANT le echo (pour une MEILLEURE LISIBILITÉ du code) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    foreach ($connexion->query($sql2) as $row)
    {
       $lien = (!empty($row['Lien']))? '<a href='.$row['Lien'].'><img src=http://archeodunum:8080/wp-content/uploads/2019/03/lien.png alt=lien width=40%/></a>' : 'non';
       echo "<tr><td>".$row['Auteur']."</td>
    <td>".$row['Annee']."</td>
    <td><div class=cesure>".$row['Reference']."</div></td>
    <td>".$row['Type']."</td>
    <td>".$lien."</td>
    <td><a href='modifier_biblio?id=".$row['ID']."&o=u'>Modifier</a><br><a href='supprimer_biblio?id=".$row['ID']."&o=d'>Supprimer</a></td></tr>\n";
    }
    ?>
    3- Remarque : tu devrais prendre la BONNE habitude de TOUJOURS mettre les accolades (même s'il n'y a qu'une seule instruction).
    Ça t'évitera des cheveux blancs prématurés.

    4- OU utiliser la syntaxe alternative :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach (...):
    ...
    endforeach;
    Dernière modification par Invité ; 25/03/2019 à 12h56.

  3. #3
    Membre du Club
    Homme Profil pro
    Archéologue
    Inscrit en
    Mars 2019
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Archéologue
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mars 2019
    Messages : 134
    Points : 59
    Points
    59
    Par défaut
    Merci beaucoup pour ta réponse.
    ça fonctionne parfaitement et je suis preneur de tout conseil étant très débutant et autodidacte en PHP depuis 2 semaines
    Bonne journée

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    comme tu débutes, je t'invite à prendre directement le meilleur du langage en terme de syntaxe et de possibilité de présentation du code.
    PHP permet d'écrire du code très proprement avec plein de notations : heherdoc, nowdoc, string...

    N'oublie pas non plus de TOUJOURS ÉCHAPPER toutes les valeurs que tu affiches.
    Ton code retravaillé :
    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
    <?php $hsc = function($p) { return htmlspecialchars($p, ENT_QUOTES, 'utf-8'); }; // échappement des caractères dangereux ?>
    <table style="margin:auto;width:80%;">
      <thead>
        <tr>
          <th width=10%> Auteur </th>
          <th width=10%> Année </th>
          <th width=60%> Références bibliographiques </th>
          <th width=10%> Type </th>
          <th width=5%> Lien </th>
          <th width=10%> </th>
        </tr>
      </thead>
      <tbody>
    <?php
    foreach ($connexion->query($sql2) as $row) {
        $lien = empty($row['Lien']) ? 'non' : '<a href="'.$row['Lien'].'"><img src="http://archeodunum:8080/wp-content/uploads/2019/03/lien.png" alt="lien" width="40%"/></a>';
        $row  = array_map($hsc, $row); // échappement de toutes les valeurs
     
        echo <<<html
    <tr>
      <td>{$row['Auteur']}</td>
      <td>{$row['Annee']}</td>
      <td><div class=cesure>{$row['Reference']}</div></td>
      <td>{$row['Type']}</td>
      <td>{$lien}</td>
      <td>
        <a href="modifier_biblio?id={$row['ID']}&o=u">Modifier</a><br>
        <a href="supprimer_biblio?id={$row['ID']}&o=d">Supprimer</a>
      </td>
    </tr>
    html;
    }
    ?>
      </tbody>
    </table>

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

Discussions similaires

  1. alterner les couleurs dans un tableau avec xsl
    Par Eithelgul dans le forum XSL/XSLT/XPATH
    Réponses: 14
    Dernier message: 03/05/2015, 23h29
  2. Décaler des valeurs dans un tableau
    Par sh2003 dans le forum Langage
    Réponses: 6
    Dernier message: 20/03/2004, 16h01
  3. Réponses: 2
    Dernier message: 23/11/2003, 18h44
  4. Réponses: 4
    Dernier message: 10/10/2003, 18h04
  5. verification de doublons dans un tableau
    Par bohemianvirtual dans le forum C
    Réponses: 11
    Dernier message: 25/05/2002, 12h21

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