Les conditions PHP if, elseif, else

Résolu
Bonjour,
voila je voudrai afficher le lien comme suite
(http://site/index_Fr.php?pg=pages&id=2) si le lien est défini
sinon on affiche
(http://site/index.php) si le lien n'est pas défini

Voici le code :
--------------------
include('db.php');
doDB();
 
// Lancer : Construire haut niveau
$top_sql = "SELECT * FROM menu_top_level /* WHERE top_level_visible = 'Yes' */ ORDER BY 
  top_level_order ASC";                                              // Créer une requête de base de données
$top_res = mysqli_query($mysqli, $top_sql) or die(mysqli_error($mysqli)); // Vérifier la connexion et d'exécuter la requête
if ($top_res = mysqli_query($mysqli, $top_sql)) {                     // Si la requête contient les résultats ...
    while ($row = mysqli_fetch_array($top_res)) {
                       // Boucle à travers chaque ligne donnée
        
 
        $menu_block .= "<li><a href='$row[top_level_url]'>".$row[top_level_name]."</a>";



EDIT : Ajout des balises de code.

Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

7 réponses

  1. Modérateur
    Bonjour,

    1 - Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
    Explications disponibles ici :
    https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

    2 - Ton souci se trouve donc au niveau de la ligne :
     $menu_block .= "<li><a href='$row[top_level_url]'>".$row[top_level_name]."</a>";
    ??

    Si oui...

    écrit avec des IF (de façon plus classique...)
    if( isset($row['top_level_url'])){
     $URL =$row['top_level_url'] ;
    }else{
     $URL ='http://site/index.php' ;
    }
     $menu_block .= "<li><a href='".$URL."'>".$row['top_level_name']."</a>";
    


    Ce qui revient à faire (en écriture Ternaire) :
    $URL = isset($row['top_level_url']) ? $row['top_level_url'] : 'http://site/index.php' ;
     $menu_block .= "<li><a href='".$URL."'>".$row['top_level_name']."</a>";
    


    Avant de poser une question, merci de lire la charte du site.
    Cordialement, Jordane
    0
    1. Oui exactement mon probable se trouve au niveau de cette ligne
      mais se que je veux c'est pas exactement ça,
      je 'explique:
      quand je survole un lien qui mène a une page par rapport a (url = id ) de la page ça me donne ça (site/index.php?pg=pages&id=2)
      quand le lien n'a aucun chemin le id url n'es pas acheminer je veux que ça me donne ça
      (site/index.php#)
      0
      1. Modérateur
        Je ne comprend pas....

        1-Que contient la variable $row['top_level_url'] ??
        (donnes quelques exemples)

        2-As tu testé mon code ?
        Qu'est ce qui ne va pas avec ?
        0
    2. avec ton code ça donne ça:
      si le lien existe ça donne ça
      http://site/2
      se que je veux moi c'est
      http://site/index.php?pg=pages&id=2

      s'il est vide ça donne ça
      http://site/index.php

      if( isset($row['top_level_url'])){
       $URL =$row['top_level_url'] ;
      }else{
       $URL ='http://site/index.php' ;
      }
       $menu_block .= "<li><a href='".$URL."'>".$row['top_level_name']."</a>";
      
      0
      1. Modérateur
        Donc.. tu veux.. si $row['top_level_url'] existe
        récupérer la valeur qui se trouve après le dernier SLASH .. pour l'ajouter à l'URL :
        http://site/index.php?pg=pages&id=


        Donc :

        if( isset($row['top_level_url'])){
          $urlTmp = "http://site/2";
          $arrTmp = explode('/',$urlTmp);
          $id = $arrTmp[count($arrTmp)-1];
          if($id){ 
            $URL = "http://site/index.php?pg=pages&id=".$id;
          }else{
             $URL ='http://site/index.php' ;
          }
        }else{
         $URL ='http://site/index.php' ;
        }
         $menu_block .= "<li><a href='".$URL."'>".$row['top_level_name']."</a>";
        
        

        0
        1. good jobbbbbbbbbb Merci
          0
          1. opps un léger problème
            le id de URL ne change pas!!
            c'est du a
            if( isset($row['top_level_url'])){
            $urlTmp = "http://site/1";

            ----------------------------------
            $urlTmp = "http://site/1"; 1=$id
            $urlTmp = "[http://site/$row['top_level_url
            en gros le id change mais sur mon site le id de page ne change pas il reste sur 1! ;(
            0
            1. c'est bon j'ai trouvé
              if( isset($row['top_level_url'])){ $urlTmp =($row['top_level_url']);
              0