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 :

Fonction de vérification de double post [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 121
    Par défaut Fonction de vérification de double post
    Je voudrais avant d'enregistrer dans la table vérifier que le post n'est pas le même que les deux dernier poster.

    Pour cela j'ai ceci:

    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
     
    mysql_connect("localhost", "root", "");
    mysql_select_db("forum");
     
    $Pseudo = mysql_real_escape_string(htmlspecialchars($_POST['Pseudo']));
    $Message = mysql_real_escape_string(htmlspecialchars($_POST['Message']));
     
    $verif = mysql_query("SELECT * FROM forum ORDER BY ID DESC LIMIT 0,2");
     
    if
    ???? Comparaison mais j'y arrive pas
    {
    insert
    }
    else
    {
    Header...
    }
    apres je sais que je dois comparer le Pseudo poster et le message poster avec ceux de la base forum mais j'y arrive pas.

    Quelqu'un peut-il m'aider ?

  2. #2
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    Dans un premier temps tu devrais pas plutôt lire les enregistrements concernant le fameux pseudo plutôt ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("SELECT * FROM forum where pseudo='$pseudo' ORDER BY ID DESC LIMIT 0,2")
    ?

    Ensuite tu parcours tes enregistrements grace a mysql_fetch_array() (exemples fournis dans la doc)

    et tu compare le champs $message avec ton message !
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  3. #3
    Membre chevronné Avatar de FredPsy
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Décembre 2006
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 285
    Par défaut
    Bonsoir, tu dois faire une requête qui remonte le pseudo et le texte.
    Exemple (ce n'est qu'un exemple, basé sur ton code, les modifications sont soulignées) :
    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
    mysql_connect("localhost", "root", "");
    mysql_select_db("forum");
     
    $Pseudo = mysql_real_escape_string(htmlspecialchars($_POST['Pseudo']));
    $Message = mysql_real_escape_string(htmlspecialchars($_POST['Message']));
     
    $verif = mysql_query("SELECT pseudo, message FROM forum ORDER BY ID DESC LIMIT 0,2");
      
    
    /* Création d'un tableau de résultat de la requête
    $tableau[0] sera le résultat pour le pseudo
    $tableau[1] sera le résultat pour le message
    */
    while ($tableau = mysql_fetch_array($verif))
    {
    
    if  ($tableau[0] ==  $Pseudo and  $tableau[1] ==  $Message)
      {    
       echo "Vous avez déjà mis ce message";
      } 
    else 
    {  
        /* Enregistrement dans la bdd */
     } 
    }
    Amuses toi bien

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 121
    Par défaut
    J'ai écris ceci mais ca ne marche pas vraiment.
    En fait maintenant, il interdit de poster quand les deux derniers messages sont les mêmes que celui qu'on veut poster.

    Ex1: Avant dernier: A A
    Dernier: A A
    On ne sait pas poster A A

    Il ne veut pas poster. Mais

    Ex2: Avant dernier: A A
    Dernier: A B

    On sait poster A A et A B
    Alors que moi, je voudrais qu'un ne puisse pas poster A A ni A B... J'espere que je suis clair.

    Voila le code:

    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
     
     mysql_connect("localhost", "root", "") OR die (mysql_error());
            mysql_select_db("bdd") OR die (mysql_error());
     
    	$Pseudo = mysql_real_escape_string(htmlspecialchars($_POST['Pseudo']));
    	$Message = mysql_real_escape_string(htmlspecialchars($_POST['Message']));
     
    	$verif = mysql_query("SELECT Pseudo,Message FROM forum ORDER BY id DESC LIMIT 0,2") OR die (mysql_error());
     
    	$tableau[0];
    	$tableau[1];
     
    	while ($tableau = mysql_fetch_array($verif))
    	{
     
    			if  ($tableau[0] == $Pseudo AND $tableau[1] == $Message)
    			{
    			Header("Location: forumtete.php");
    			}
    			else
    			{
    			mysql_query("INSERT INTO forum VALUES('', current_timestamp, '$Pseudo', '$Message')") OR die (mysql_error());
            		mysql_close() OR die (mysql_error());
    			Header("Location: forumtete.php");
     			}
    	}

  5. #5
    Membre chevronné Avatar de FredPsy
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Décembre 2006
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 285
    Par défaut
    Bonsoir,

    Citation Envoyé par lelapinrusse Voir le message
    Je voudrais avant d'enregistrer dans la table vérifier que le post n'est pas le même que les deux dernier poster.
    C'est pas ce que tu voulait faire ?

    De plus, ce qui est souligné et rouge dans le code si dessous était en commentaires dans le code que je t'ai fourni.
    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
     mysql_connect("localhost", "root", "") OR die (mysql_error());
            mysql_select_db("ta_db") OR die (mysql_error());
    
        $Pseudo = mysql_real_escape_string(htmlspecialchars($_POST['Pseudo']));
        $Message = mysql_real_escape_string(htmlspecialchars($_POST['Message']));
    
        $verif = mysql_query("SELECT Pseudo,Message FROM forum ORDER BY id DESC LIMIT 0,2") OR die (mysql_error());
    
        $tableau[0];
         $tableau[1];
    
        while ($tableau = mysql_fetch_array($verif))
        {
        
                if  ($tableau[0] == $Pseudo AND $tableau[1] == $Message)
                {
                Header("Location: forumtete.php");
                }
                else
                {
                mysql_query("INSERT INTO forum VALUES('', current_timestamp, '$Pseudo', '$Message')") OR die (mysql_error());
                    mysql_close() OR die (mysql_error());
                Header("Location: forumtete.php");
                 }
        }
    Il ne faut donc pas les mettre.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 121
    Par défaut
    J'ai finalement ecris ca mais ca me parait compliquer pour pas grand chose, quelqu'un pour me dire si c'est possible de simplifier ca:

    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
     
    mysql_connect("localhost", "root", "") OR die (mysql_error());
    mysql_select_db("bdd") OR die (mysql_error());
     
    $Pseudo = mysql_real_escape_string(htmlspecialchars($_POST['Pseudo']));
    $Message = mysql_real_escape_string(htmlspecialchars($_POST['Message']));
     
    $verif = mysql_query("SELECT id FROM forum ORDER BY id DESC LIMIT 1") OR die (mysql_error());
     
    $verif1 = mysql_query("SELECT id FROM forum WHERE Pseudo='$Pseudo' AND Message='$Message' ORDER BY id DESC LIMIT 1") OR die (mysql_error());
     
    if (mysql_num_rows($verif) != 0 OR mysql_num_rows($verif1) != 0)
    {
     
    	$tableau = mysql_fetch_array($verif);
    	$tableau1 = mysql_fetch_array($verif1);
     
    	if ($tableau[0] == $tableau1[0])
    	{
    	Header("Location: forumtete.php");
    	}
    	else
    	{
    	mysql_query("INSERT INTO forum VALUES('', current_timestamp, '$Pseudo', '$Message')") OR die (mysql_error());
                 mysql_close() OR die (mysql_error());
    	Header("Location: forumtete.php");
    	}
     
    }
    else
    {
    mysql_query("INSERT INTO forum VALUES('', current_timestamp, '$Pseudo', '$Message')") OR die (mysql_error());
    mysql_close() OR die (mysql_error());
    Header("Location: forumtete.php");
    }
    Voila, y a t-il moyen de simplifier ce code ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. fonction replace sur un double
    Par sissi25 dans le forum Langage
    Réponses: 1
    Dernier message: 05/03/2007, 18h33
  2. Réponses: 4
    Dernier message: 28/07/2004, 10h42

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