vairable formulaire

Répondre
silver
le 12/01/2005 à 20:42
silver
Bonjours a tous et felicitation pour ce site.
Voilà je voudrais savoir comment fait-on pour extraire des varaibles d'un formulaire.
regarder le code ca sera plus parlent :

<?php
if (isset($_POST['go']) && $_POST['go'] == 'Envoyer') {
if (empty($_POST['destinataire']) || empty($_POST['$sujet']) || empty($_POST['message'])) {
$erreur = 'Au moins un des champs est vide.';
}
else {
$base = mysql_connect ('localhost', 'root', '');
mysql_select_db ('espace_membre', $base);

// si tout a été bien rempli, on insère le message dans notre table SQL
mysql_query('INSERT INTO messages VALUES("", "'.$_SESSION['id'].'", "'.$_POST['destinataire'].'", "'.date("Y-m-d H:i:s").'", "'.$_POST['$sujet'].'", "'.addslashes($_POST['message']).'","")');
mysql_query('INSERT INTO messages_env VALUES("", "'.$_SESSION['id'].'", "'.$_POST['destinataire'].'", "'.date("Y-m-d H:i:s").'", "'.addslashes($_POST['titre']).'", "'.addslashes($_POST['message']).'","")');

//mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());
?>


et le formulaire :
</select></td>
</tr>
<tr>
<td> Titre : </td>
<td> <input type="text" name="titre" value="<?php echo"$sujet"; ?>" disabled>
</td>
</tr>
<tr>

donc je voudrais récuperer la valeur $sujet et l'envoyer dans la tabvle ou trouvez-vous que ca cloche
LA GLOBULE
le 12/01/2005 à 21:20
LA GLOBULE
Ben le disabled...

Et aussi parce que tu nommes ton champs "titre" => tu dois donc utiliser la variable $_POST['titre'] et non $_POST['$sujet'].
silver
le 12/01/2005 à 22:13
silver
Merci pour la réponse ca marche c'est sympa !
Mais j'ai une autre question voilà je voudrais dans le formulaire mettre à la place du menu déroulant afficher le non de l'exediteur directement grace à la variable $expediteur comme ca pas besoin de le reselectionné il se mais comme pour la varialbe$sujet. Mais le probleme c'est que lorsque je fais ca j'enleve le selec et remplace par un input ca va pas il fait comme ci il l'envoyé mais rien s'envoi :

<select name="destinataire">
<?php
// on alimente le menu déroulant avec les login des différents membres du site
while ($data = mysql_fetch_array($req)) {
echo '<option value="' , $data['id_destinataire'] , '">' , stripslashes(htmlentities(trim($data['nom_destinataire']))) , '</option>';
}
?>
</select>

à la place de select je veux mettre un input et la variable $expediteur qui affichera l'expediteur et sera envoer a lui
Ca pourrait provenir de quoi ?
LA GLOBULE
le 12/01/2005 à 22:43
LA GLOBULE
smiley

Et en français, ca donne quoi ? smiley

Non, sans rire, je n'ai pas trop compris ce que tu voulais faire :
- tu veux remplacer le menu déroulant par un champs de type text ?
- tu veux que le nom de l'expéditeur soit mis par défaut dans le menu déroulant ?

(Il y a une fonction de prévisualisation sur le forum, utilisez là, et relisez vous smiley)
silver
le 12/01/2005 à 22:46
silver
oui je veux remplacer le menu déroulant par un champ text et que le nom de l'expediteur soit mis dans ce champ texte pour pouvoir etre envoyer.
Comme ca dans la reponse pas besoin de saisir le menre et le titre juste a ecrire le texte et l'envoyer pour répondre au message.
Comme la le script à pour but de repondre à un message recu, donc je veux pas que la personne entre un titre et l'expediteur sa doit se faire directement ca.
LA GLOBULE
le 12/01/2005 à 22:54
LA GLOBULE
Comme çà :

<?php
echo '<input type="text" name="expediteur" value="'.$expediteur.'" />';
?>


?
Mais là, le champs pourra etre modifié.

C'est normal ?
tu es sur de vouloir faire çà ?

Si tu "reponds" à un message, cela veut dire que c'est toi qui envoies le message.
Donc, ca ne serait pas possible de ne pas afficher ce champs et d'identifier l'expediteur autrement ? (avec une variable de session par exemple)
silver
le 12/01/2005 à 22:58
silver
je suis vraiment dsl mais c'était le destinataire que je voulais pas à avoire le saisir smiley
Enfaite j'ai réusit à faire la zone input ect je vois bien le pseudo du detinataire mais quand je l'envoi il s'envoi pas alors que si c le menu déroulant il s'envoi correctement pkoi ?
LA GLOBULE
le 12/01/2005 à 23:01
LA GLOBULE
Parce que dans ton menu-déroulant, c'est l'id du membre que tu envoies et non son pseudo.

Avec le champs texte, c'est le pseudo que tu envoies.

Tu utilises la messagerie du comment faire ?
Si oui, il faut utiliser les id des membres et non leurs pseudos.

Mais quand tu fais une réponse, tu n'as pas à mettre le moindre champs spécifiant le nom du destinataire.
Quand tu réponds à quelqu'un, tu sais à qui tu réponds :) Tu réponds à la personne qui t'as envoyé le message.

Ce que je veux dire par là, c'est que tu peux surement récupérer l'id du destinataire avec une requete SQL (et comme çà, tu n'as pas à mettre de champs destinataire).
silver
le 13/01/2005 à 14:01
silver
ok oui ca je m'en douté mais je n'y arrive pas j'ai vraiment tout essayé mais la je bloque, pourtant j'ai déjà fait pas aml de tru cen php.. mais la je sèche ca arrive o nva dire mais bon.
Voici le code complet de la page repondre_message.php pourrais-tu regarder et voir comment je pourrais faire merci :

<?php
session_start();

// on teste si le formulaire a bien été soumis
if (isset($_POST['go']) && $_POST['go'] == 'Envoyer') {
if (empty($_POST['destinataire']) || empty($_POST['titre']) || empty($_POST['message'])) {
$erreur = 'Vous devez entrer un texte pour pouvoir envoyer le message';
}
else {
$base = mysql_connect ('localhost', 'root', '');
mysql_select_db ('espace_membre', $base);

// si tout a été bien rempli, on insère le message dans notre table SQL
mysql_query('INSERT INTO messages VALUES("", "'.$_SESSION['id'].'", "'.$_POST['destinataire'].'", "'.date("Y-m-d H:i:s").'", "'.$_POST['titre'].'", "'.addslashes($_POST['message']).'","")');
mysql_query('INSERT INTO messages_env VALUES("", "'.$_SESSION['id'].'", "'.$_POST['destinataire'].'", "'.date("Y-m-d H:i:s").'", "'.addslashes($_POST['titre']).'", "'.addslashes($_POST['message']).'","")');

//mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());
mysql_close();

header('Location: espace_membre.php?page=8');
//exit();
}
}
?>

<html>
<head>
<title>Espace membre</title>
</head>

<body>
<a href="espace_membre.php?page=8">Retour à l'accueil</a>
Envoyer un message :


<?php
include('includes/functions.inc.php');

// on teste si notre id correspond bien à l'id du message que l'on va lire pour empecher que une autre personne vienne lire ce message
// en effet il faut que ce soit notre id qui est égale à id_message d'éclaré dans la page méssagerie.

//Fonction présente dans la page functions.inc.php pour ce connecter à la base de donné et la table
connecter();

// on prépare une requete SQL selectionnant la date, le titre et l'expediteur du message que l'on souhaite lire, tout en prenant soin de vérifier que le message appartient bien au membre connecté
$sql = 'SELECT id, titre, date, message, membres.pseudo as expediteur FROM messages, membres WHERE id_destinataire="'.$_SESSION['id'].'" AND id_expediteur=membres.id_membre AND messages.id="'.$_GET['id_message'].'"';

// on lance cette requete SQL à MySQL
$id_message=$_GET['id_message']; // permet de stocker la varialbe id_message lorsque l'on clique sur le lien pour le traitement plus bas de la varialbe lu, afin de bien spécifier que le message à était consulté
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());
$nb = mysql_num_rows($req); //Variable comportent la requête mysql_num_rows qui permet de contabiliser le nombre de données dans la table (tuples)

//instruction "si" pour déterminer si il y a un message dans la table
if ($nb == 0) {
echo 'Aucun message reconnu.'; //si elle est à 0 on affiche alors qu'il n'y a pas de message dans la table
}
else { // sinon on les affiches

//permet de passer la valeur lu=0 à 1 dans la table lorsque la personne à lu le message grace à la valeur stocker précédement
$messagerie=mysql_query("SELECT * FROM messages WHERE id='$id_message'") or die (mysql_error()); // on fait une requête sur la table qui va sélectionner que les message correspondant l'id du lecteur du message
mysql_query("UPDATE messages SET lu='1' WHERE id='$id_message'") or die (mysql_error()); // et on modifie la varible lu à 1

//traitement pour l'affichage du message recu

//ici on travail la chaîne de caractère afin de mettre la date dans le bonne ordre jours/mois/années
$data = mysql_fetch_array($req);
$annee = substr($data['date'],0,4);
$mois = substr($data['date'],5,2);
$jours = substr($data['date'],8,2);
$date_mess1 = "$jours/$mois/$annee";
$date_mess2 = substr($data['date'],11);
$date = stripslashes(htmlentities(trim("$date_mess1 à $date_mess2")));

//Ensuite on gère le sujet du message, l'expéditeur et le message en lui même
$sujet = stripslashes(htmlentities(trim($data['titre'])));
$expediteur = stripslashes(htmlentities(trim($data['expediteur'])));
$message = nl2br(stripslashes(htmlentities(trim($data['message']))));

// puis on vient travailler l'affichage par des tableau ect....
echo"<table width='60%' border align='center' cellpadding='0' cellspacing='0' bordercolor='#000000'><tr>
<td width='20%'>
Message de : $expediteur<br><br>$date</td>
<td width='30%'>Sujet du message : $sujet <br><br>$message</td>
</tr></table>";

}

mysql_free_result($req); // on efface de la mémoire la requête
mysql_close(); // on ferme la connexion à la base de donner le script de cette page est terminer

?>

<?php

$base = mysql_connect ('localhost', 'root', '');
mysql_select_db ('espace_membre', $base);


// on prépare une requete SQL selectionnant tous les login des membres du site en prenant soin de ne pas selectionner notre propre login, le tout, servant à alimenter le menu déroulant spécifiant le destinataire du message
$sql = 'SELECT membres.pseudo as nom_destinataire, membres.id_membre as id_destinataire FROM membres WHERE id_membre <> "'.$_SESSION['id'].'" ORDER BY pseudo ASC';
// on lance notre requete SQL
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.''.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="repondre_mess.php?id_message=<?php echo"$id_message";?>" method="post">
<div align="center">
<table>
<tr>
<td>Pour :</td>
<td> <select name="destinataire">
<?php
// on alimente le menu déroulant avec les login des différents membres du site
while ($data = mysql_fetch_array($req)) {
echo '<option value="' , $data['id_destinataire'] , '">' , stripslashes(htmlentities(trim($data['nom_destinataire']))) , '</option>';
}
?>
</select></td>
</tr>
<tr>
<td> Titre : </td>
<td> <input type="text" name="titre" value="Re :<?php echo stripslashes(htmlentities(trim($sujet))); ?>">
</td>
</tr>
<tr>
<td> Message : </td>
<td> <textarea name="message" rows="10" cols="40"><?php if (isset($_POST['message'])) echo stripslashes(htmlentities(trim($_POST['message']))); ?></textarea>
</td>
</tr>
<tr>
<td colspan="2"> <div align="center">
<input type="submit" name="go" value="Envoyer"></div>
</td>
</tr>
</table>
</div>
</form>
<?php
}
mysql_free_result($req);
mysql_close();
?>
</select>

<?php
// si une erreur est survenue lors de la soumission du formulaire, on l'affiche
if (isset($erreur)) echo '',$erreur;
?>
</body>
</html>
LA GLOBULE
le 13/01/2005 à 14:04
LA GLOBULE
Il te suffit de faire une requete SQL pour connaitre l'id du membre qui a envoyé $_GET['id_message'], et tu connais le destinataire pour la réponse.

PS : tu n'as pas une erreur SQL en lançant cette requete :

$sql = 'SELECT id, titre, date, message, membres.pseudo as expediteur FROM messages, membres WHERE id_destinataire="'.$_SESSION['id'].'" AND id_expediteur=membres.id_membre AND messages.id="'.$_GET['id_message'].'"';

???
Normalement, il devrais couiner sur le SELECT id.
Répondre
LoadingChargement en cours