[RESOLU] Afficher formulaire si....

Eléphant du PHP | 233 Messages

18 janv. 2014, 14:12

Bonjour,
je voudrais afficher un formulaire de contact dans une liste de membre mais exclure celui qui est connecté (formulaire non visible si la personne est connecté).

J'ai essayé avec
<?php if (!isset($_SESSION[$prefix.'logged']) { ?>
mais sans succès.

Je vous donne le code en entier si vous pouvez m'orienter :
<?php

if (isset($_SESSION[$prefix.'logged']) && $_SESSION[$prefix.'logged'] === true)
{
	designhaut($lang['profil_d_un_membre']);
	$id = intval($_GET['id']);
	$nbre_membres = mysql_query('SELECT COUNT(id) AS nbre_membres FROM '.$prefix.'membres WHERE id='.$id)or die(mysql_error());
	$nbre_membres = mysql_result($nbre_membres, 0, 'nbre_membres');
<h1>Lui envoyer un message :</h1>
<?php
if (isset($_POST['go']) && $_POST['go'] == 'Envoyer') {
	if (empty($_POST['destinataire']) || empty($_POST['titre']) || empty($_POST['message'])) {
	$erreur = '<div class="alert alert-error">Au moins un des champs est vide.</div>';
	}
	else {
	
	// si tout a été bien rempli, on insère le message dans notre table SQL
	$sql = 'INSERT INTO messages VALUES("", "'.$_SESSION[$prefix.'id'].'", "'.$_POST['destinataire'].'", "'.date("Y-m-d H:i:s").'", "'.mysql_escape_string($_POST['titre']).'", "'.mysql_escape_string($_POST['message']).'")';
	mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());

	mysql_close();

	header('Location: membres.php');
	exit();
	}
}
?>
<?php
if (isset($erreur)) echo '<br /><br />',$erreur;
$sql = 'SELECT membres.pseudo as nom_destinataire, membres.id as id_destinataire FROM membres WHERE id <> "'.$_SESSION[$prefix.'id'].'"';

$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$nb = mysql_num_rows ($req);

if ($nb == 0) {
	// si aucun membre n'a été trouvé, on affiche tout simplement aucun formulaire
	echo 'Vous êtes le seul membre inscrit.';
}
else {
	// si au moins un membre qui n'est pas nous même a été trouvé, on affiche le formulaire d'envoie de message

	
	?>
	<form action="" method="post">
	<p>
	Pour : <?php echo $donnees['pseudo']; ?><p> <input type="hidden" name="destinataire" value="<?php echo $donnees['id']; ?>">
	
	Titre : <label for"titre"><input name="titre" type="text" value="<?php if (isset($_POST['titre'])) echo stripslashes(htmlentities(trim($_POST['titre']))); ?>" size="50">
	</label>
	<br>
	<br />
	Message : <label for"message"><textarea name="message" cols="50" rows="10"><?php if (isset($_POST['message'])) echo stripslashes(htmlentities(trim($_POST['message']))); ?></textarea>
	</label>
	<input type="submit" name="go" value="Envoyer">
	</p>
	</form>
	<?php
}
mysql_free_result($req);
mysql_close();
?>

Eléphant du PHP | 233 Messages

18 janv. 2014, 20:31

En théorie au vu du code le formulaire ne devrait pas s'afficher si la session est différente de celui connecté mais là il s'affiche malgré tout...
<?php
$sql = 'SELECT membres.pseudo as nom_destinataire, membres.id as id_destinataire FROM membres WHERE id <> "'.$_SESSION[$prefix.'id'].'"';

$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$nb = mysql_num_rows ($req);

if ($nb == 0) {
	// si aucun membre n'a été trouvé, on affiche tout simplement aucun formulaire
	echo 'Vous êtes le seul membre inscrit.';
}
else {
le formulaire s'affiche...
?>

Eléphant du PHP | 116 Messages

18 janv. 2014, 20:49

Salut,

pour ton message numéro 2 regarde bien. Ta condition est vraie dès lorsque tu as un ou plus de résultats.... Peut être voudrais tu essayer en faisant $nb == 1 ?

Bon courage,
@+,
Computarelier

Eléphant du PHP | 233 Messages

18 janv. 2014, 21:04

Merci mais j'ai modifié en ajoutant
<?php if ($donnees['id'] == $_SESSION['id']) { ?>
c"est OK, je ne vous avez pas mis le code en entier...

Mea-culpa !!