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
    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#)
      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 ?
    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>";
      
      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>";
        
        

        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! ;(
          1. c'est bon j'ai trouvé
            if( isset($row['top_level_url'])){ $urlTmp =($row['top_level_url']);