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.


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