PHP : Variable et condition difficile ?

Résolu/Fermé
Nowne Messages postés 89 Date d'inscription samedi 30 octobre 2010 Statut Membre Dernière intervention 7 mars 2011 - 19 janv. 2011 à 02:21
Nowne Messages postés 89 Date d'inscription samedi 30 octobre 2010 Statut Membre Dernière intervention 7 mars 2011 - 19 janv. 2011 à 14:06
Bonjour,

Bon, je désespère là... Ça fait depuis les 23h que je cherche un moyen de contourner ce problème, mais rien à faire et ca commence à m'agacer...
Donc je vous présente la bête :
Je voulais intégrer une condition 'If' dans une boucle "while" dans le bug d'afficher un lien pour supprimer les messages posté. Néanmoins, la condition devait lire l'id de l'utilisateur et la comparé à l'id enregistré par la personne qui à posté le message. Ce qui afficherais "supprimer" uniquement pour leurs messages. Mais rien à faire... Voici le script :
?>// Création de la variable de suppression message suivant l'utilisateur
    $membre_id = $_SESSION['membre_id'];
    $login_id = $donnees['login_id'];
    $addid = $membre_id - $login_id;   
    

    // Affichage de chaques messages (toutes les données sont protégées par htmlspecialchars)
    echo '<div id="last_message" style="cursor: help;" title="Affiche les 20 derniers messages postés sur le forum.">Derniers messages :</div>'; 
    			while ($donnees = $reponse->fetch())
    			{
        echo 	'<p><em>Posté par ' . htmlspecialchars($donnees['login']) . '</em> <span id="date_post">
        				(le ' . $donnees['date_post'] . ')</span> : ' ./* !!! ICI !!! */ $addid /* !!! ICI !!! */ . '        					
        					<br /><span id="message_post">' . htmlspecialchars($donnees['message']) . '</span></p>';
    			}
    			
    			// La commande echo affiche les 20 derniers messages avec le nom du posteur et la date. Moi je veux ajouter un lien de suppression automatique.


Je voudrais inséré cette condition :
if ($addid != 0)
			{ 
				echo '<span id="delete"><a href="minichat_delete" title="Supprime de manière définitive votre message.">Supprimer</a></span>'; 
			}


Dans la partie : /* !!! ICI !!! */ $addid /* !!! ICI !!! */
Mais rien a faire...

Je pense que ca vient du If car ca bloque toujours là dessus avec un parse error [...] T_IF.

J'attends votre aide parce que là je suis bloqué.

Merci d'avance en tout cas.


A voir également:

5 réponses

xamurai Messages postés 223 Date d'inscription mardi 11 janvier 2011 Statut Membre Dernière intervention 19 février 2013 15
19 janv. 2011 à 03:31
Je pourrais t'aider mais s'il te plait reformate ton message en utilisant les tag <code> de comment ca marce.... parce que c'est illisible.
0
Nowne Messages postés 89 Date d'inscription samedi 30 octobre 2010 Statut Membre Dernière intervention 7 mars 2011 4
19 janv. 2011 à 08:26
?>// Création de la variable de suppression message suivant l'utilisateur
    $membre_id = $_SESSION['membre_id'];
    $login_id = $donnees['login_id'];
    $addid = $membre_id - $login_id;   
    

    // Affichage de chaques messages (toutes les données sont protégées par htmlspecialchars)
    echo '<div id="last_message" 
               style="cursor: help;"
               title="Affiche les 20 derniers messages postés sur le forum.">
               Derniers messages :
             </div>'; 
//Ensuite une boucle while pour afficher les 20 derniers messages posté.

    			while ($donnees = $reponse->fetch())
    			{
        echo
              '<p><em>Posté par ' . htmlspecialchars($donnees['login']) . '</em>
              <span id="date_post">
        	    (le ' . $donnees['date_post'] . ')
              </span> :
               ' ./* !!! ICI !!! */ $addid /* !!! ICI !!! */ . ' <br />
              <span id="message_post">
               ' . htmlspecialchars($donnees['message']) . ' 
              </span></p>';
    			}
    			
    			// La commande echo affiche les 20 derniers messages avec le nom du posteur et la date. Moi je veux ajouter un lien de suppression automatique.


J'espère que c'est plus lisible ? =)
0
xamurai Messages postés 223 Date d'inscription mardi 11 janvier 2011 Statut Membre Dernière intervention 19 février 2013 15
19 janv. 2011 à 11:27
fais un echo avant et apres le while :

echo "<br>$addid<br>-------------------------------<br>";


et dit moi ce que tu observes
0
Nowne Messages postés 89 Date d'inscription samedi 30 octobre 2010 Statut Membre Dernière intervention 7 mars 2011 4
19 janv. 2011 à 11:39
Avec le code du $addid cela me donne la page suivante :

0
-------------------------------

/* Ici les 20 derniers messages s'affichent normalement. */

0
-------------------------------

En gros, je pensais qu'il prenait l'id du membre et le comparait à celui du premier message qui s'affiche.
Mais en me connectant avec un autre membre, j'ai constaté qu'il prenait la valeur = 1 pour login_id sans se soucier de l'id des messages posté. Ou alors il prend vraiment la dernière id qui est égal à 1 actuellement.
0
Nowne Messages postés 89 Date d'inscription samedi 30 octobre 2010 Statut Membre Dernière intervention 7 mars 2011 4
19 janv. 2011 à 11:43
Donc en fait, il prend le login_id du premier message qui s'affiche (dernier message posté) et le soustrait donc au membre_id.
0
xamurai Messages postés 223 Date d'inscription mardi 11 janvier 2011 Statut Membre Dernière intervention 19 février 2013 15
19 janv. 2011 à 12:06
oui en plus je ne sais pas pourquoi au lieu de faire une comparaison simple: tu fais une soustraction. ca se peut que la valeur de $addid = "" ; mais vu qu'elle provient d'une soustraction, elle devien automatiquement 0.

essaye de faire un echo egalement sur les valeurs qui affectent celle de $addid
0
Nowne Messages postés 89 Date d'inscription samedi 30 octobre 2010 Statut Membre Dernière intervention 7 mars 2011 4
19 janv. 2011 à 13:10
J'ai trouvé, je post dès que possible
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Nowne Messages postés 89 Date d'inscription samedi 30 octobre 2010 Statut Membre Dernière intervention 7 mars 2011 4
19 janv. 2011 à 14:06
Voici donc la solution au problème, il fallait fermer l'instruction echo, ouvrir la condition if avec son instruction puis la fermer aussi avant d'ouvrir la dernière instruction echo pour terminer d'afficher le message ! :)

while (variable) {
         ...instruction ici... ;
         if (condition) {instruction}
         ...nouvelle instruction... ;
         }
0