[RESOLU] Condition IF pour afficher une ligne d'une table

Eléphant du PHP | 133 Messages

02 avr. 2021, 12:54

Bonjour

j'ai une datatable

Code : Tout sélectionner

<table id='tab' class='display compact table-responsive'> <thead> <tr class="table-secondary text-dark"> <th width="1%">id</th> <th width="1%">Logo</th> <th width="1%">Fédérée</th> <th width="30%">Nom long</th> <th width="1%">Abréviation</th> <th width="5%">Email</th> <th width="1%">Téléphone</th> <th width="2%">Actions</th> <th width="2%"></th> </tr> </thead> <tboby> <?php foreach ($result as $produit) { ?> <tr> <td><?php echo $produit['Id_Assos']; ?></td> <td><?php echo "<img src='" . $produit['Logo_Reduit'] . "' />"; ?></td> <td><?php echo $produit['Federe']; ?></td> <td><?php echo $produit['Nom_Assos']; ?></td> <td><?php echo $produit['Nom_Court']; ?></td> <td><?php echo $produit['Email']; ?></td> <td><?php echo $produit['Telephone']; ?></td> <?php $federe=$produit['Federe']; if ($federe=Oui){ <td><a class=" btn btn-warning btn-sm" role="button" href="Nonfedere.php?Id_Assos=<?= $produit['Id_Assos']; ?>"> Fédéré=Non</a></td>; elseif <td><a class=" btn btn-warning btn-sm" role="button" href="Ouifedere.php?Id_Assos=<?= $produit['Id_Assos']; ?>"> Fédéré=Oui</a></td> ?> <?php } ?> <td><a class=" btn btn-warning btn-sm" role="button" href="edit.php?Id_Assos=<?= $produit['Id_Assos']; ?>"><i class="far fa-edit"></i> Modifier</a></td> <td><a class="btn btn-danger btn-sm" role="button" href="delete.php?Id_Assos= <?= $produit['Id_Assos']; ?>"><i class="far fa-trash-alt"></i>Supprimer</a></td> </tr> <?php } ?> </tboby> <tfoot> <tr class="table-secondary text-dark"> <th width="1%">id</th> <th width="1%">Logo</th> <th width="1%">Fédérée</th> <th width="30%">Nom long</th> <th width="1%">Abréviation</th> <th width="5%">Email</th> <th width="1%">Téléphone</th> <th width="2%">Actions</th> <th width="2%"></th> </tr> </tfoot> </table>
Pour chaque enregistrement de ma table j'ai une colonne contenant des boutons permettant la modification ou la suppression.

J'aurai aimé ajouter un troisième bouton mais sous condition d'une valeur passé par une variable.

Code : Tout sélectionner

<?php $federe=$produit['Federe']; if ($federe=Oui){ <td><a class=" btn btn-warning btn-sm" role="button" href="Nonfedere.php?Id_Assos=<?= $produit['Id_Assos']; ?>"> Fédéré=Non</a></td>; elseif <td><a class=" btn btn-warning btn-sm" role="button" href="Ouifedere.php?Id_Assos=<?= $produit['Id_Assos']; ?>"> Fédéré=Oui</a></td> ?> <?php } ?>
Mais cela ne marche pas. Pouvez vous m'éclairer? Merci

j'ai une erreur
Parse error: syntax error, unexpected '<' in E:\FFMO\F_Entite\index.php on line 66
qui correspond à la ligne de mon premier <td> dans la condition IF

Mammouth du PHP | 2703 Messages

02 avr. 2021, 13:17

<?php
$federe=$produit['Federe'];

tout ce qui suit avant la fermeture du php est donc du php.

cette ligne doit être du php :
if ($federe=Oui){
et c'est le cas.

cette ligne doit être du php :
<td><a class=" btn btn-warning btn-sm" role="button" href="Nonfedere.php?Id_Assos=<?= $produit['Id_Assos']; ?>"> Fédéré=Non</a></td>;

ce code ferme du php pour rouvrir du php afin de cloturer le } :
?>
<?php
}
?>

Eléphant du PHP | 133 Messages

02 avr. 2021, 15:53

J'ai essayé ça aussi

Code : Tout sélectionner

<?php $federe=$produit['Federe']; if ($federe=Oui){ ?> <td><a class=" btn btn-warning btn-sm" role="button" href="Nonfedere.php?Id_Assos=<?= $produit['Id_Assos']; ?>"> Fédéré=Non</a></td>; <?php if ($federe=Non){ ?> <td><a class=" btn btn-warning btn-sm" role="button" href="Ouifedere.php?Id_Assos=<?= $produit['Id_Assos']; ?>"> Fédéré=Oui</a></td> <?php } ?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

02 avr. 2021, 18:28

Le message d'erreur " Parse error: syntax error, unexpected '<' in E:\FFMO\F_Entite\index.php on line 66 " indique que php trouve un caractère < à la ligne 66 alors qu'il ne s'attends pas du tout à tomber sur ce genre de chose.

Comme tu l'indiques, cela correspond à ton premier <td> qui est du code html et qui n'a donc rien à faire au milieu du code exécuté par php. php gère ce qui est déclaré entre <?php ?> et ton second code est donc mieux. Le message d'erreur que tu obtiens à d'ailleurs changé et doit sans doute te dire que Oui n'est pas une constante, ou une variable ou un truc du genre et qu'il est donc incapable de coller cette "chose" qu'il ne comprend pas dans ta variable $federe ;)

(A noter au passage une fois cette erreur résolue, que l'opérateur "=" affecte une valeur à une variable et que pour comparer on utilise l'opérateur "==" ;))
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 133 Messages

02 avr. 2021, 18:29

J'ai ce code pour des cards bootstrap et ça marche je voudrai faire la même chose dans une table.

Code : Tout sélectionner

<?php if (isset($donnees['Email']) && !empty($donnees['Email'])) { ?> <a href="mailto:<?php echo $donnees['Email']; ?>" target="_blank"><i class="fas fa-at"></i></a> <?php } ?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

02 avr. 2021, 18:35

Comme indiqué ci-dessous (mais je suppose que nos réponses se sont croisées), tu est bien parti pour le faire... le problème c'est que php connait les variables (qui commencent pas $) et les chaines de caractères (qui sont délimitées par des apostrophes ou des guillemets)

Dans ton code, les Oui et Non, en l'état, ne rentrent dans aucune de ces deux catégories, ce qui doit donc générer un message d'erreur pour t'en informer et te permettre de faire le nécessaire pour l'inclure dans l'une ou l'autre des catégories en fonction de ton besoin ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 133 Messages

02 avr. 2021, 18:58

Ça ne marche pas non plus

Code : Tout sélectionner

<?php $federe=$produit['Federe']; if ($federe='Oui'){ ?> <td><a class=" btn btn-warning btn-sm" role="button" href="Nonfedere.php?Id_Assos=<?= $produit['Id_Assos']; ?>"> Fédéré=Non</a></td>; <?php if ($federe='Non'){ ?> <td><a class=" btn btn-warning btn-sm" role="button" href="Ouifedere.php?Id_Assos=<?= $produit['Id_Assos']; ?>"> Fédéré=Oui</a></td> <?php } ?>
Cela me renvoi l'erreur sur la dernière ligne de mon code!!!!

Code : Tout sélectionner

<?php //Scrypt, Fin du BODY, FIn du HtML include("../Include/ScriptJS.html"); ?>
Parse error: syntax error, unexpected end of file in E:\FFMO\F_Entite\index.php on line 107

Mammouth du PHP | 2703 Messages

02 avr. 2021, 19:08

la bonne syntaxe, c'est
if(){
...
}
pas
if(){
...

Eléphant du PHP | 133 Messages

02 avr. 2021, 19:22

????

Code : Tout sélectionner

<?php $federe=$produit['Federe']; if ($federe='Oui'){ <td><a class=" btn btn-warning btn-sm" role="button" href="Nonfedere.php?Id_Assos=<?= $produit['Id_Assos']; ?>"> Fédéré=Non</a></td>; } ?> <?php if ($federe='Non'){ <td><a class=" btn btn-warning btn-sm" role="button" href="Ouifedere.php?Id_Assos=<?= $produit['Id_Assos']; ?>"> Fédéré=Oui</a></td> } ?>
Ca me renvoi l'erreur.
Parse error: syntax error, unexpected '<' in E:\FFMO\F_Entite\index.php on line 67
La ligne 67 étant mon premier td qui se retrouve dans du PHP au lieu d'être dans le HTML!!:
Je ne comprends plus?

Mammouth du PHP | 2703 Messages

02 avr. 2021, 19:25

si vous n'ajoutiez pas un problème quand vous en régliez un autre, cela finira par marcher.

avec
$federe=$produit['Federe'];
if ($federe='Oui'){
?>
<td><a class=" btn btn-warning btn-sm" role="button" href="Nonfedere.php?Id_Assos=<?= $produit['Id_Assos']; ?>"> Fédéré=Non</a></td>;

pas de Parse error: syntax error, unexpected '<' in E:\FFMO\F_Entite\index.php

Eléphant du PHP | 133 Messages

02 avr. 2021, 19:54

J'ai gros problème de compréhension.

Vous écrivez
if ($federe='Oui'){
?>
je dois bien fermé l'accolade quelque part?

J'ai donc réécris comme suit:

Code : Tout sélectionner

<?php foreach ($result as $produit) { ?> <tr> <td><?php echo $produit['Id_Assos']; ?></td> <td><?php echo "<img src='" . $produit['Logo_Reduit'] . "' />"; ?></td> <td><?php echo $produit['Federe']; ?></td> <td><?php echo $produit['Nom_Assos']; ?></td> <td><?php echo $produit['Nom_Court']; ?></td> <td><?php echo $produit['Email']; ?></td> <td><?php echo $produit['Telephone']; ?></td> <?php $federe = $produit['Federe']; if ($federe = "Oui") { ?> <td><a class=" btn btn-warning btn-sm" role="button" href="Nonfedere.php?Id_Assos=<?= $produit['Id_Assos']; ?>"> Fédéré=Non</a></td>; <?php } $federe = $produit['Federe']; if ($federe = "Non") { ?> <td><a class=" btn btn-warning btn-sm" role="button" href="Ouifedere.php?Id_Assos=<?= $produit['Id_Assos']; ?>"> Fédéré=Oui</a></td> <?php } ?> <td><a class=" btn btn-warning btn-sm" role="button" href="edit.php?Id_Assos=<?= $produit['Id_Assos']; ?>"><i class="far fa-edit"></i> Modifier</a></td> <td><a class="btn btn-danger btn-sm" role="button" href="delete.php?Id_Assos= <?= $produit['Id_Assos']; ?>"><i class="far fa-trash-alt"></i>Supprimer</a></td> </tr> <?php } ?>
Je n'ai plus de message d'erreur mais l'affichage des deux boutons à chaque ligne quelque soit la valeur de ma variable !!!

Mammouth du PHP | 2703 Messages

02 avr. 2021, 20:01

Je n'ai plus de message d'erreur mais l'affichage des deux boutons à chaque ligne quelque soit la valeur de ma variable !!!
toujours lire les messages de ryle.

Eléphant du PHP | 133 Messages

02 avr. 2021, 20:16

Merci à tous, désolé cela a bien été laborieux mais je vous remercie de votre aide précieuse.

Voici le code qui marche

Code : Tout sélectionner

<?php $federe = $produit['Federe']; if ($federe == "Oui") { ?> <td><a class=" btn btn-warning btn-sm" role="button" href="Nonfedere.php?Id_Assos=<?= $produit['Id_Assos']; ?>"> Fédéré=Non</a></td>; <?php } $federe = $produit['Federe']; if ($federe == "Non") { ?> <td><a class=" btn btn-warning btn-sm" role="button" href="Ouifedere.php?Id_Assos=<?= $produit['Id_Assos']; ?>"> Fédéré=Oui</a></td> <?php } ?> <td><a class=" btn btn-warning btn-sm" role="button" href="edit.php?Id_Assos=<?= $produit['Id_Assos']; ?>"><i class="far fa-edit"></i> Modifier</a></td> <td><a class="btn btn-danger btn-sm" role="button" href="delete.php?Id_Assos= <?= $produit['Id_Assos']; ?>"><i class="far fa-trash-alt"></i>Supprimer</a></td>