[RESOLU] Problème boucle while

Mammouth du PHP | 558 Messages

28 sept. 2024, 09:11

Bonjour,
je suis sur la création de mon porte folio, mais je rencontre un problème, je voudrais afficher une class différente si le lien est sur la current page ou non.
le problème que je rencontre c'est que la class apparait sur tous les liens si on est sur une des pages, concerné et pas uniquement la current page.
Je n'ai pas de solution et encore moins de pistes cela fait quelques jours que je tourne en rond.
Merci.
vous pouvez avoir un visuel sur cette page :
https://web-developer-nantes.com/
Sous l'onglet voir projet et ouvrez une des pages.
Merci.

Code : Tout sélectionner

if($_SERVER['REQUEST_URI']==='/projects/afac974.html'){ $title='projet AFAC974'; } if($_SERVER['REQUEST_URI']==='/projects/carte-postale.html'){ $title='projet cr&eacute;ation de carte postale'; } if($_SERVER['REQUEST_URI']==='/projects/faketory.html'){ $title='projet Faketory'; } if($_SERVER['REQUEST_URI']==='/projects/la-rose-de-l-orient.html'){ $title='projet la Rose de l&apos;Orient'; } if($_SERVER['REQUEST_URI']==='/projects/robe-et-vetement.html'){ $title='projet Robe et V&ecirc;tement'; } if($_SERVER['REQUEST_URI']==='/projects/the-wild-fork.html'){ $title='projet THE Wild FORK'; } $data_projects=mysqli_query($connectionbd,"SELECT * FROM `project`") while($projects=mysqli_fetch_array($data_projects)){ ?> <li><a href='../projects/<?php echo $projects['name']; ?>.html'<?php if($title==='projet AFAC974'){ ?>class='current'<?php } elseif($title==='projet cr&eacute;ation de carte postale'){ ?>class='current'<?php } elseif($title==='projet Faketory'){ ?>class='current'<?php } elseif($title==='projet la Rose de l&apos;Orient'){ ?>class='current'<?php } elseif($title==='projet Robe et V&ecirc;tement'){ ?>class='current'<?php } elseif($title==='projet THE Wild FORK'){ ?>class='current'<?php } ?>><?php echo $projects['name']; ?></a></li> <?php } ?>

Mammouth du PHP | 2703 Messages

28 sept. 2024, 09:23

$title ne change jamais dans la boucle, à l'inverse de $projects['name']

Mammouth du PHP | 558 Messages

28 sept. 2024, 09:33

Heureusement $title est là pour définir la page où on est sinon les conditions ne serviraient à rien.
Merci pour ton intervention
PS j'avait oublier un détail dans le menu cette algo fonctionne très bien

Code : Tout sélectionner

<li><a href='../web-developer.html' <?php if($title==="d&eacute;veloppeur web"){ ?>class='current'<?php } ?>>d&eacute;veloppeur web</a></li>

Eléphant du PHP | 345 Messages

28 sept. 2024, 09:49

?>><?php echo $projects['name']; ?></a></li>
C'est une faute de frappe? il y a 1 > en trop, non?

Mammouth du PHP | 558 Messages

28 sept. 2024, 11:12

Je viens de passer la page au validateur pas d'erreur à ce niveau
Actuellement je suis sur mon téléphone je vous mettrai le rendu html dès que je rentre.
voila un nouvel édit...
Page d'accueil

Code : Tout sélectionner

<header class='navbar'> <nav> <p><a href='../' class='current'>Accueil</a></p> <ul id='show-menu'> <li><a href='../web-developer.html' >d&eacute;veloppeur web</a></li> <li><a href='../cv-hakim-azizi.html' >CV</a></li> <li><a href='../portfolio.html' >Portfolio</a></li> <li id='show-projects' onclick="openProjects()"><span >Voir les projets</span> <ul id='projects'> <li><a href='../projects/afac974.html'>afac974</a></li> <li><a href='../projects/carte-postale.html'>carte-postale</a></li> <li><a href='../projects/faketory.html'>faketory</a></li> <li><a href='../projects/la-rose-de-l-orient.html'>la-rose-de-l-orient</a></li> <li><a href='../projects/robe-et-vetement.html'>robe-et-vetement</a></li> <li><a href='../projects/the-wild-fork.html'>the-wild-fork</a></li> </ul> </li> <li><a href='../collaboration.html' >Collaboration</a></li> <li><a href='../contact.html' >Contact</a></li> <li><a href='../partner.html' >Partenaire</a></li> </ul> </nav> </header>
Une des page projet

Code : Tout sélectionner

<header class='navbar'> <nav> <p><a href='../' >Accueil</a></p> <ul id='show-menu'> <li><a href='../web-developer.html' >d&eacute;veloppeur web</a></li> <li><a href='../cv-hakim-azizi.html' >CV</a></li> <li><a href='../portfolio.html' >Portfolio</a></li> <li id='show-projects' onclick="openProjects()"><span class='current'>Voir les projets</span> <ul id='projects'> <li><a href='../projects/afac974.html'class='current'>afac974</a></li> <li><a href='../projects/carte-postale.html'class='current'>carte-postale</a></li> <li><a href='../projects/faketory.html'class='current'>faketory</a></li> <li><a href='../projects/la-rose-de-l-orient.html'class='current'>la-rose-de-l-orient</a></li> <li><a href='../projects/robe-et-vetement.html'class='current'>robe-et-vetement</a></li> <li><a href='../projects/the-wild-fork.html'class='current'>the-wild-fork</a></li> </ul> </li> <li><a href='../collaboration.html' >Collaboration</a></li> <li><a href='../contact.html' >Contact</a></li> <li><a href='../partner.html' >Partenaire</a></li> </ul> </nav> </header>

Mammouth du PHP | 558 Messages

29 sept. 2024, 13:20

Bonjour,
Vraiment personne n'as une petite idées ni une piste à suivre pour résoudre mon problème.
Merci.

Mammouth du PHP | 2703 Messages

29 sept. 2024, 15:50

il y a une seule page project qui peut être la page courante, or tous les li a ont class='current' donc l'algo n'est pas bon.

dans le while, pour chaque entrée, il faut comparer l'url en base de donnée avec l'url de la page courante. pour cela (et afin d'éviter d'avoir à ajouter un projet un bdd et d'avoir à modifier le script php), il faut ajouter un champ pour le nom du fichier dans la table des projets.

Mammouth du PHP | 558 Messages

29 sept. 2024, 20:18

Oui je l'ai vérifier j'ai bien title qui ne change pas a chaque itération de la boucle. mais pourtant rien y fait, c'est justement pour cela que je ne comprends pas...
pourquoi je rentre dans tous les elseif alors que dans le principe dès qu'un if est true on est sensé sortir de la condition. et la sois toutes les conditions sont false soit true.
Je n'y comprends plus rien...

Mammouth du PHP | 2703 Messages

29 sept. 2024, 21:21

quel est le nouveau code php ?

Mammouth du PHP | 558 Messages

29 sept. 2024, 21:48

C'est celui qui est affiché je ne l'ai pas changé

Mammouth du PHP | 2703 Messages

29 sept. 2024, 21:50

$title ne change jamais dans la boucle, à l'inverse de $projects['name']

Mammouth du PHP | 558 Messages

30 sept. 2024, 06:28

Oui ça c'est normal il change en fonction de l'URL pour déclencher le if qui correspond.
Je ne vois pas où tu veux en venir...
Je l'ai mis dans le code du premier message, je charge la variable title au tout début.

Mammouth du PHP | 2703 Messages

30 sept. 2024, 08:16

$i = 1;
$j = 0;
while ($j < 10){
 if($i == 1){
  echo '$i vaut 1';
 }
 else if($i == 2){
  echo '$i vaut 2';
 }
$j++;
}
que va afficher ce code ?

Mammouth du PHP | 558 Messages

30 sept. 2024, 08:31

Le principe je le connais
0
1
2
Etc.
Mais en quoi cela va m'aider à trouver la solution de mon problème ?
Euh non Parse error en php else et if sont attaché c'est en js qu'il sont séparés...
Modifié en dernier par hakazizi le 30 sept. 2024, 12:06, modifié 2 fois.

Mammouth du PHP | 2703 Messages

30 sept. 2024, 08:36

non, exécutez ce code en vrai pour vérifier (avec onlinephp.io par exemple).