Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/02/2011, 08h31   #1
Invité de passage
 
Inscription : janvier 2011
Messages : 18
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 18
Points : 0
Points : 0
Par défaut Condition de validation

Bonjour à vous,

Voilà enfaite je suis en train de travailler sur un système d'annonce d'emploi.

Tout les gens pourrons poster des annonces, mais elles seront avant d'être poster sur le site valider par un validateur, qui recevra l'annonce par mail ^^ .

Le seul problème c'est que je ne sais pas trop comment faire pour que quand on valide l'annonce elle apparait sur la page principal du site, j'ai pensé rajouter un champ valider dans ma table et faire un UPDATE pour mettre le champ à 1 si l'annonce est valider.

Mais je ne sais pas trop comment faire en faite donc si vous pouviez m'aider ^^

Je vous donne le code de la page principal est de la page de validation

emploi.php

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php session_start(); ?>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
	<head>
		<title>Espace Adhérents</title>
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
		<link rel="stylesheet" media="screen" type="text/css" title="Design" href="design.css" />
	</head>
	<body>
		<?php 
		//Connexion à la base de données
		try
		{
			$bdd = new PDO('mysql:host=localhost;dbname=uca67', 'root', '');
		}
		catch(Exception $e)
		{
			die('Erreur : '.$e->getMessage());
		}
 
		//Recupération des 5 derniers messages
		$reponse = $bdd->query('SELECT * FROM emploi ORDER BY ID DESC LIMIT 0,10');
		//Affichage de chaque message (toutes les données sont protégées)
			while ($donnees = $reponse->fetch() AND isset($_SESSION['valider']))
			{
				echo '<p class="offre"><strong><center>' . nl2br(htmlspecialchars($donnees['id'])) . '</center><br/>' . nl2br(htmlspecialchars($donnees['titre'])) . '<br/><br/></strong>' . nl2br(htmlspecialchars($donnees['description'])) . '<br/><br/>' . '<em>Si cette offre vous intéresse, veuillez contacter:</em><br/><br><strong>' . nl2br(htmlspecialchars($donnees['nom'])) . '<br/>' . nl2br(htmlspecialchars($donnees['prenom'])) . '<br/>' . nl2br(htmlspecialchars($donnees['adresse'])) . '<br/>' . nl2br(htmlspecialchars($donnees['tel'])) . '<br/>' . nl2br(htmlspecialchars($donnees['mail'])) . '</strong></p>';
			}
		$reponse->closeCursor();
		?>
	</body>
</html>
et valide_mail.php

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?php session_start(); ?>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
		<link rel="stylesheet" media="screen" type="text/css" title="Design" href="design.css" />
	</head>
	<body>
		<?php include("en_tete.php"); ?>
		<?php include("menu.php"); ?>
 
	<?php 
		//Connexion à la base de données
		try
		{
			$bdd = new PDO('mysql:host=localhost;dbname=uca67', 'root', '');
		}
		catch(Exception $e)
		{
			die('Erreur : '.$e->getMessage());
		}
 
		//Recupération des 5 derniers messages
		$reponse = $bdd->query('SELECT * FROM emploi ORDER BY ID DESC LIMIT 0,1');
 
		//Affichage de chaque message (toutes les données sont protégées)
		while ($donnees = $reponse->fetch())
		{
			echo '<p class="offre"><strong><center>' . nl2br(htmlspecialchars($donnees['id'])) . '</center><br/>' . nl2br(htmlspecialchars($donnees['titre'])) . '<br/><br/></strong>' . nl2br(htmlspecialchars($donnees['description'])) . '<br/><br/>' . '<em>Si cette offre vous intéresse, veuillez contacter:</em><br/><br><strong>' . nl2br(htmlspecialchars($donnees['nom'])) . '<br/>' . nl2br(htmlspecialchars($donnees['prenom'])) . '<br/>' . nl2br(htmlspecialchars($donnees['adresse'])) . '<br/>' . nl2br(htmlspecialchars($donnees['tel'])) . '<br/>' . nl2br(htmlspecialchars($donnees['mail'])) . '</strong></p>';
		}
 
		$reponse->closeCursor();
	?>
 
		<center>
				<form method="post" name="valider" action="index.php">
					<p>
						<br><br><input type="submit" value="Valider">
					</p>
						<?php $_POST['valider'] = '1';?>
				</form>
		</center>
 
		<center>
				<form method="post" name="supprimer" action="supprimer_post.php">
					<p>
						<br><br><input type="submit" name="Supprimer" value="Supprimer">
					</p>
				</form>
		</center>
 
		<?php 
			if(isset($_POST['valider']) == '1')
			{
				$req = $bdd->prepare('UPDATE emploi SET valider VALUES(?)');
				$req->execute(array($_POST['valider']));
			}
			else
			{	
 
			}
		?>
		<?php include("pied_de_page.php"); ?>
	</body>
</html>
Je vous remercie d'avance
Djydan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 09h11   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Citation:
j'ai pensé rajouter un champ valider dans ma table et faire un UPDATE pour mettre le champ à 1 si l'annonce est valider.
Qu'est ce qui t'empeche de réaliser cet update ?
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 09h19   #3
Membre éclairé
 
Homme Jérémy
Étudiant
Inscription : octobre 2009
Messages : 236
Détails du profil
Informations personnelles :
Nom : Homme Jérémy
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : octobre 2009
Messages : 236
Points : 322
Points : 322
Citation:
Envoyé par Djydan Voir le message
Code :
$reponse = $bdd->query('SELECT * FROM emploi ORDER BY ID DESC LIMIT 0,10');
Code :
$reponse = $bdd->query('SELECT * FROM emploi WHERE valider=1 ORDER BY ID DESC LIMIT 0,10');
Restriction sur tes retours avec le "where".

Citation:
Envoyé par Djydan Voir le message
Code :
$req = $bdd->prepare('UPDATE emploi SET valider VALUES(?)');
Code :
$req = $bdd->prepare('UPDATE emploi SET valider=1 WHERE id=$id');
Le "values" est pour les insert, pense à préciser sur quelle annonce tu effectue le update (id=$id).
gwharl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 09h31   #4
Invité de passage
 
Inscription : janvier 2011
Messages : 18
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 18
Points : 0
Points : 0
Merci gwharl pour ta réponse ^^ mais avec cette requête UPDATE il me met pas le valider à 1 quand je clique sur valider ça reste tout le temps à 0

En faite je pense que le problème viens de mon $_POST['valider'] en faite j'aimerai le mettre à 1 quand on clique sur le bouton valider et à 0 quand on clique sur le bouton supprimer
Djydan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 09h40   #5
Membre éclairé
 
Homme Jérémy
Étudiant
Inscription : octobre 2009
Messages : 236
Détails du profil
Informations personnelles :
Nom : Homme Jérémy
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : octobre 2009
Messages : 236
Points : 322
Points : 322
Dans le doute fait un echo de ta requête quand tu l'execute afin de voir si celle-ci contient le bon id de l'annonce.
gwharl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 09h45   #6
Invité de passage
 
Inscription : janvier 2011
Messages : 18
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 18
Points : 0
Points : 0
comme ça ?

Code php :
echo $req = $bdd->prepare('UPDATE emploi SET valider=1 WHERE id=$id');

Parce-que avec ça j'ai le droit a un beau message d'erreur :p

Citation:
Catchable fatal error: Object of class PDOStatement could not be converted to string in C:\wamp\www\site_uca67\emploi\valide_mail.php on line 62
Djydan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 09h56   #7
Membre éclairé
 
Homme Jérémy
Étudiant
Inscription : octobre 2009
Messages : 236
Détails du profil
Informations personnelles :
Nom : Homme Jérémy
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : octobre 2009
Messages : 236
Points : 322
Points : 322
Code :
1
2
3
$mareq="UPDATE emploi SET valider=1 WHERE id=$id";
echo $mareq;
$req = $bdd->prepare($mareq);
Vérifie que id ait la valeur voulue, si c'est le cas le problème est en amont (surement ton formulaire).
gwharl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 09h59   #8
Invité de passage
 
Inscription : janvier 2011
Messages : 18
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 18
Points : 0
Points : 0
Quand j'utilise ton code il me dit que la variable $id est indéfini et m'affiche ça

Citation:
UPDATE emploi SET valider=1 WHERE id=
Donc j'ai essayé de remplacer $id par $donnees['id']

mais la XD encore plus grosse erreur

Citation:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\wamp\www\site_uca67\emploi\valide_mail.php on line 62
lool
Djydan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 10h10   #9
Membre éclairé
 
Homme Jérémy
Étudiant
Inscription : octobre 2009
Messages : 236
Détails du profil
Informations personnelles :
Nom : Homme Jérémy
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : octobre 2009
Messages : 236
Points : 322
Points : 322
Citation:
Envoyé par Djydan Voir le message
UPDATE emploi SET valider=1 WHERE id=

Donc j'ai essayé de remplacer $id par $donnees['id']

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\wamp\www\site_uca67\emploi\valide_mail.php on line 62
$id était un exemple bien sûr, tu doit effectivement effectuer la vérification sur ta clé primaire.

Ta seconde erreur est sur "$donnees['id']" définissant mal les limites de la variable :
Code :
$mareq="UPDATE emploi SET valider=1 WHERE id=".$donnees['id'];
gwharl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 10h14   #10
Invité de passage
 
Inscription : janvier 2011
Messages : 18
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 18
Points : 0
Points : 0
Alors j'ai essayer de corriger cette erreur et c'est bon j'ai fait

Code php :
1
2
3
$mareq='UPDATE emploi SET valider=1 WHERE id=' . $donnees['id'] . '';
			echo $mareq;
			$req = $bdd->prepare($mareq);
Et il m'affiche
Citation:
UPDATE emploi SET valider=1 WHERE id=
Comme si il n'y avait rien dans $donnees['id'] alors que dans le echo que je fais en haut de la page pour afficher l'annonce le $donnees['id'] contient quelque chose vu qu'il m'affiche le chiffre 26 >_<
Djydan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 10h24   #11
Membre éclairé
 
Homme Jérémy
Étudiant
Inscription : octobre 2009
Messages : 236
Détails du profil
Informations personnelles :
Nom : Homme Jérémy
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : octobre 2009
Messages : 236
Points : 322
Points : 322
Vois à passer "$donnees['id']" dans une variable intermédiaire, et change en conséquence ton update.
gwharl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 10h27   #12
Invité de passage
 
Inscription : janvier 2011
Messages : 18
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 18
Points : 0
Points : 0
Toujours pareil c'est comme si au début de la page le $donnees['id'] contenait quelque chose qu'il perd en chemin >_<

j'ai fait ça

Code php :
1
2
3
4
	$id=$donnees['id'];
			$mareq='UPDATE emploi SET valider=1 WHERE id=' . $id;
			echo $mareq;
			$req = $bdd->prepare($mareq);

et j'ai toujours pareil
Citation:
UPDATE emploi SET valider=1 WHERE id=
Djydan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 10h45   #13
Membre éclairé
 
Homme Jérémy
Étudiant
Inscription : octobre 2009
Messages : 236
Détails du profil
Informations personnelles :
Nom : Homme Jérémy
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : octobre 2009
Messages : 236
Points : 322
Points : 322
$id contient bien une valeur numérique ? sinon oublie pas les quotes.

Si ce n'est pas ça, place des echo de ta variable dans ton code histoire de voir ou celle-ci perd sa valeur.
gwharl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 10h52   #14
Invité de passage
 
Inscription : janvier 2011
Messages : 18
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 18
Points : 0
Points : 0
Oui $id contient bien une valeur numérique ^^

Alors quand je place le code dans le while il m'affiche UPDATE emploi SET valider=1 WHERE id=28

Et des que je replace juste après le while UPDATE emploi SET valider=1 WHERE id=

Donc on dirait qu'il la perd juste après le while mais je vois pas du tout pourquoi
Djydan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 11h06   #15
Membre éclairé
 
Homme Jérémy
Étudiant
Inscription : octobre 2009
Messages : 236
Détails du profil
Informations personnelles :
Nom : Homme Jérémy
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : octobre 2009
Messages : 236
Points : 322
Points : 322
Normal ton while doit surement boucler sur tes annonces, peut tu nous donner la structure de ton while, à quoi te sers la boucle ?
gwharl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 11h20   #16
Invité de passage
 
Inscription : janvier 2011
Messages : 18
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 18
Points : 0
Points : 0
Code :
1
2
3
4
5
6
7
		$reponse = $bdd->query('SELECT * FROM emploi ORDER BY ID DESC LIMIT 0,1');
 
		//Affichage de chaque message (toutes les données sont protégées)
		while ($donnees = $reponse->fetch())
		{
			echo '<p class="offre"><strong><center>' . nl2br(htmlspecialchars($donnees['id'])) . '</center><br/>' . nl2br(htmlspecialchars($donnees['titre'])) . '<br/><br/></strong>' . nl2br(htmlspecialchars($donnees['description'])) . '<br/><br/>' . '<em>Si cette offre vous intéresse, veuillez contacter:</em><br/><br><strong>' . nl2br(htmlspecialchars($donnees['nom'])) . '<br/>' . nl2br(htmlspecialchars($donnees['prenom'])) . '<br/>' . nl2br(htmlspecialchars($donnees['adresse'])) . '<br/>' . nl2br(htmlspecialchars($donnees['tel'])) . '<br/>' . nl2br(htmlspecialchars($donnees['mail'])) . '</strong></p>';
		}
Voilà le while ^^
Djydan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 11h35   #17
Membre éclairé
 
Homme Jérémy
Étudiant
Inscription : octobre 2009
Messages : 236
Détails du profil
Informations personnelles :
Nom : Homme Jérémy
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : octobre 2009
Messages : 236
Points : 322
Points : 322
Effectivement dans ce cas de figure, ton update doit être placé dans le while car tu défini $donnees en paramètre d'entré.

Sachant que tu fait un LIMIT 0,1, un while n'est pas utile, je ne voit pas trop l'utilité de cette requête, ton commentaire dit "affichage de chaque message" mais la tu ne charge et affiche que le premier, enlève le LIMIT et joue plutôt sur l'id de ton annonce.
gwharl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 14h13   #18
Invité de passage
 
Inscription : janvier 2011
Messages : 18
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 18
Points : 0
Points : 0
Enfaite ce que je veux faire c'est que sur cette page on voye l'annonce qui à été poster par la personne, je veux dire que si 2 personnes poste une annonce, ça va donc faire 2 mails et dans chacun des mails je veux l'annonce qui correspond et pas les 2 ^^
Djydan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 15h14   #19
Invité de passage
 
Inscription : janvier 2011
Messages : 18
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 18
Points : 0
Points : 0
Et je vois trop comment faire si je mes le UPDATE dans le while parce-que moi je veux que le valider se mette à 1 si on clique sur le bouton valider et le bouton valider ce trouve après le while ^^
Djydan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 09h20   #20
Membre éclairé
 
Homme Jérémy
Étudiant
Inscription : octobre 2009
Messages : 236
Détails du profil
Informations personnelles :
Nom : Homme Jérémy
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : octobre 2009
Messages : 236
Points : 322
Points : 322
Je dois t'avouer que je m'y perd un peu, je trouve ça un peu brouillon,

De base ce n'est pas la bonne méthode, tu doit pas voir a retourner le dernier élément mais retourner ceux qui ne sont pas validé et qui n'ont jamais était envoyés, je te conseille d'envoyer le mail juste après l'ajout de l'offre, l'offre s'enregistre avec un id en clé primaire et tu envoi le mail qui a le même id, dans ce mail tu fait un lien qui contient une url de validation et en paramètre l'id de l'annonce (monsite.fr?action=validation&id=23). Dans cette partie, oublis le "LIMIT" travaille plus sur le "WHERE".
gwharl est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h24.


 
 
 
 
Partenaires

Hébergement Web