J’ai réalisé une requête qui marche
Code : Tout sélectionner
$requete = $connexion->prepare("SELECT champ1, champ2 FROM table3 ORDER BY champ2");
$requete->execute();
$result[1] = $requete->fetchAll();
foreach ($result[1] as $row) {
echo ' <a href="mapage.php? champ1=' . $row["champ1"] .'"><i>' . $row["champ2"]. '</i></a> | ';}Donc j’ai essayé une première condition avant la ligne echo précédente
if($result[1]["champ2”] !== null and $result[1]["champ2"] !== "") { echo ' <a href="mapage.php? champ1=' . $row["champ1"] .'"><i>' . $row["champ2"]. '</i></a> | ';} else {echo "";}}
Le message d’erreur est:
Notice: Undefined index: champ2 in on line XX
Je ne comprend car j’ai des conditions similaires pour d’autres requêtes et cela marche !
Voilà pour la première condition.
J’ai une deuxième condition.
champ2 est constitué soit de lignes vides ou nulles comme déjà indiqué, soit de noms et précisément de 1, 2 ou 3 noms séparés par 1 espace (2 noms) ou 2 espaces (3 noms).
Je veux comparer dans la suite de résultats de champ2 le premier nom (seulement) entre le résultat n et n+1 et si le premier nom change, alors d’ajouter dans ma liste un double <br> (pour séparer visuellement).
Et pour commencer je me suis servi comme modèle de la requête d’un fil précedent que j’ai adapté et qui compare le résultat n et n+1 pour les 7 premiers caractères de champ2.
Voici ma requête adaptée
Code : Tout sélectionner
$initialmot = '';
foreach($result as $row){
$rang = $row["champ1"];
$monliennomassocie = $row["champ2"];
$initName = strtoupper(substr($monliennomassocie, 0, 7));
if (strtoupper($initName) != $initialmot) {
echo ' <a href="mapage.php? champ1=' . $row["champ1"] .'"><i>' . $row["champ2"]. '</i></a> | <br><br>';
$initialmot = strtoupper($initName);
}
echo ' <a href="mapage.php? champ1=' . $row["champ1"] .'"><i>' . $row["champ2"]. '</i></a> | ';
}
En fait, il regroupe les noms par paire avant de faire le double <br>
Je ne pige pas !
De toute façon il faut que je modifie :
$initName = strtoupper(substr($monliennomassocie, 0, 7));
Pour que la comparaison entre ligne n et n+1 porte sur le premier nom avant le premier espace s’il y en a un.
Voilà, j’ai beaucoup travaillé mais là j’atteint mes limites actuelles.
Et je compte sur votre coup de pouce.
Merci de votre aide
A+
Seb