Les conditions PHP if, elseif, else [Résolu/Fermé]

Signaler
Messages postés
197
Date d'inscription
dimanche 9 novembre 2008
Statut
Membre
Dernière intervention
5 juin 2017
-
Messages postés
197
Date d'inscription
dimanche 9 novembre 2008
Statut
Membre
Dernière intervention
5 juin 2017
-
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

Messages postés
29640
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
1 octobre 2020
2 805
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
Messages postés
197
Date d'inscription
dimanche 9 novembre 2008
Statut
Membre
Dernière intervention
5 juin 2017
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#)
Messages postés
29640
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
1 octobre 2020
2 805
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 ?
Messages postés
197
Date d'inscription
dimanche 9 novembre 2008
Statut
Membre
Dernière intervention
5 juin 2017
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>";
Messages postés
29640
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
1 octobre 2020
2 805
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>";


Messages postés
197
Date d'inscription
dimanche 9 novembre 2008
Statut
Membre
Dernière intervention
5 juin 2017
1
good jobbbbbbbbbb Merci
Messages postés
197
Date d'inscription
dimanche 9 novembre 2008
Statut
Membre
Dernière intervention
5 juin 2017
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! ;(
Messages postés
197
Date d'inscription
dimanche 9 novembre 2008
Statut
Membre
Dernière intervention
5 juin 2017
1
c'est bon j'ai trouvé
if( isset($row['top_level_url'])){ $urlTmp =($row['top_level_url']);