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