boucle while et isset

Petit nouveau ! | 2 Messages

25 mai 2011, 01:12

bonjour, cela fait quelque temps que je bloque sur un problème. Je m'explique, je récupère tout les champs (titre, fonction, description) qui compose un message écrie par l'utilisateur logué. puis dans une boucle while j'affiche tout ses messages.
Jusque là tout fonctionne, seulement j'aimerais donner la possibilité sur chaque message, d'afficher un bouton supprimer et éditer.
J'utilise pour ca un isset. Le problème est là, chaque message dispose bien d'un bouton supprimer et éditer, seulement ils suprrime ou édite tout le dernier message, au lieu du message concerné.

Je ne sais pas comment faire :/, voilà mon code:
$select ="SELECT titre, fonction, description, membre_idMembre, idDemande FROM eventArt_demande WHERE  membre_idMembre=".$id." ORDER BY `idDemande` DESC"; // selection des demandes de la dernière à la première

$result = mysql_query($select) or die ('Erreur : erreur de selection '.mysql_error() );
$total = mysql_num_rows($result);

    // lecture et affichage des résultats    
    while($row = mysql_fetch_array($result)) {		
	
		if(isset($_GET['message'])) //Si $_GET['nom'] existe, on supprime le fichier...
{
$resultat= mysql_query("DELETE FROM  eventArt_demande WHERE  idDemande=".$row['idDemande']."");	
header('Location:afficheMessageMembre.php');
return FALSE;
}


if(isset($_GET['modif'])) //Si $_GET['modif'] existe, on donne la possibilité de le modifier le fichier...
{
	$_SESSION['idDemande'] = $row['idDemande'];
	
echo"<form method='post' action='modificationDemande.php' enctype='multipart/form-data'>	
	<table width='400' border='0' align='center'>
	
	<tr>
	<td colspan='2' class='menu'><p align='center'><h2>Demande</h2></p></td>
	</tr>
	<tr>
	<td><label for='titre'>id : </label></td>
	<td class='champ'><input name='titre' type='text' value=".$row['idDemande']."></td>
	</tr>
	<tr>
	<td><label for='titre'>Titre : </label></td>
	<td class='champ'><input name='titre' type='text' value=".$row['titre']."></td>
	</tr>
	<tr>
	<td><label for='poste'> Poste recherché: </label></td>
	<td class='champ'><input name='poste' type='text' value=".$row['fonction']." ></td>
	</tr>
	<tr>
	<td><label for='description'>Description: </label></td>
	<td class='champ'><textarea name='description' type='text' >".$row['description']."</textarea></td>
	</tr>
    <tr>
	<td><div align='center'><input type='submit' value='envoyer' /></div></td>
	</tr>
	</table>'
    
    
	</form>";
	return FALSE;
	
}

		$rechercheAuteur=mysql_query("SELECT identifiant FROM eventArt_membre WHERE idMembre=".$row['membre_idMembre'].""); // recherche l'identifiant de  l'auteur dans la table des membres
$auteur=mysql_result($rechercheAuteur,0);

$sql=mysql_query("SELECT eventArt_competence_idCompetence FROM eventArt_competenceMembre WHERE eventArt_membre_idMembre='".$row['membre_idMembre']."'") or die ('Erreur : '.mysql_error());
while ($resultat = mysql_fetch_array($sql) )
	{
		
		$requete=mysql_query("SELECT competence FROM eventArt_competence WHERE idCompetence='".$resultat[0]."'") or die ('Erreur : '.mysql_error());
		$competence= mysql_result($requete,0);
		
	$tag.=($competence.', ');
	}

        echo '<div><p>'.$row['titre'].'</p><p>'.$row['fonction'].'</p><p>'.$row['description'].'</p><p>'.$auteur.'</p><p>'.$tag.'</div>
		<div><a href="afficheMessageMembre.php?message='.$row['idDemande'].'">Supprimer</a><br />
		<a href="afficheMessageMembre.php?modif='.$row['idDemande'].'">modifier</a>';//affichage 
		$tag='';// on libere $result pour ne pas tout concaténer
    }
   
echo'<center><a href="index.php"><h3>Retour</h3></a></center>';

?>

ViPHP
xTG
ViPHP | 7331 Messages

25 mai 2011, 07:59

idDemande est-il bien la clé primaire de ta table ?

Enfin pour tes multiples requêtes je te conseillerai de te renseigner sur les jointures, ainsi au lieu de faire tout ce code tu pourrais ne faire qu'une seule et même requête.

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

25 mai 2011, 08:19

salut,

le plus simple c'est d'afficher normalement le message et de mettre deux liens qui mene vers une (ou plusieurs comme tu veux) page(q).
le lien doit comporter la clef primaire de l'article en question, pour la modification il faut faire un select avec cette clef primaire en paramètre (where clefprimaire=valeurPasseeParLurl), pour la suppression même chose mais avec delete from table where clefPrimaire = ValeurPasseeParLurl


@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 2 Messages

25 mai 2011, 10:54

J'ai honte ^^", je me suis braqué sur l'idée de isset....bref.

Merci de la rapidité de vos réponses :)