IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Condition de validation


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 18
    Points : 3
    Points
    3
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    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 ?

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 348
    Points
    348
    Par défaut
    Citation Envoyé par Djydan Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $reponse = $bdd->query('SELECT * FROM emploi ORDER BY ID DESC LIMIT 0,10');
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $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 : Sélectionner tout - Visualiser dans une fenêtre à part
    $req = $bdd->prepare('UPDATE emploi SET valider VALUES(?)');
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $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).

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 18
    Points : 3
    Points
    3
    Par défaut
    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

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 348
    Points
    348
    Par défaut
    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.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 18
    Points : 3
    Points
    3
    Par défaut
    comme ça ?

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    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

    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

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 348
    Points
    348
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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).

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 18
    Points : 3
    Points
    3
    Par défaut
    Quand j'utilise ton code il me dit que la variable $id est indéfini et m'affiche ça

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

    mais la XD encore plus grosse erreur

    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

  9. #9
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 348
    Points
    348
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    $mareq="UPDATE emploi SET valider=1 WHERE id=".$donnees['id'];

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 18
    Points : 3
    Points
    3
    Par défaut
    Alors j'ai essayer de corriger cette erreur et c'est bon j'ai fait

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $mareq='UPDATE emploi SET valider=1 WHERE id=' . $donnees['id'] . '';
    			echo $mareq;
    			$req = $bdd->prepare($mareq);
    Et il m'affiche
    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 >_<

  11. #11
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 348
    Points
    348
    Par défaut
    Vois à passer "$donnees['id']" dans une variable intermédiaire, et change en conséquence ton update.

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 18
    Points : 3
    Points
    3
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    UPDATE emploi SET valider=1 WHERE id=

  13. #13
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 348
    Points
    348
    Par défaut
    $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.

  14. #14
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 18
    Points : 3
    Points
    3
    Par défaut
    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

  15. #15
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 348
    Points
    348
    Par défaut
    Normal ton while doit surement boucler sur tes annonces, peut tu nous donner la structure de ton while, à quoi te sers la boucle ?

  16. #16
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 18
    Points : 3
    Points
    3
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ^^

  17. #17
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 348
    Points
    348
    Par défaut
    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.

  18. #18
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 18
    Points : 3
    Points
    3
    Par défaut
    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 ^^

  19. #19
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 18
    Points : 3
    Points
    3
    Par défaut
    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 ^^

  20. #20
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 348
    Points
    348
    Par défaut
    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".

Discussions similaires

  1. exécuter une fonction si toutes les conditions sont validées
    Par dajij dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 10/10/2011, 17h07
  2. arreter une procédure quand une condition est validé
    Par levasseur62 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 04/04/2011, 19h37
  3. Condition non validée
    Par xxkirastarothxx dans le forum Langage
    Réponses: 2
    Dernier message: 17/07/2008, 18h07
  4. condition invalide validée
    Par Zwiter dans le forum Langage
    Réponses: 2
    Dernier message: 10/07/2008, 17h49
  5. condition de validation
    Par sylvie69 dans le forum Access
    Réponses: 3
    Dernier message: 30/01/2006, 12h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo