Vérifier l'inexistance dans 2 champs d'une table

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Vérifier l'inexistance dans 2 champs d'une table

par jay64 » 16 mars 2007, 23:22

C'est bon, j'ai trouvé tout seul !

En fait, il fallait "simplement" avoir après le where ceci :

SELECT... FROM ... WHERE (... AND ($ChampConcerne <> 'ValeurAExclure"))

par jay64 » 16 mars 2007, 22:49

Bon, je progresse !
Ce qui me manquait c'était simplement la combinaison des OR et des AND correctement. Ton exemple m'a beaucoup aidé.

Cependant, j'ai un autre hic : Je veux faire ces mêmes tests à la mise à jour des fiches clients, ce qui veut que le test soit fait sur tous les enregistrements répondant aux critères SAUF, EXCEPTE l'enregistrement du client considéré.

Ma question est donc la suivante, comment préciser dans une requête SELECT FROM WHERE de ne pas prendre tel enregistrement ?

Merci !

par ghalaad » 16 mars 2007, 00:38

Ca va se faire à postériori, (ie. après l'envoi du formulaire) ou en asynchrone si tu veux [s]te prendre le chou[/s] le faire de l'ajax.

En gros ça va ressembler à :

soit ton form :
<form method="post" action="<?php echo $_SERVER['PHPSELF'] ?>" name="inscriptionform">...ton form ...
<input type="submit" name="valider" value="S'inscrire">
Utilise la fonction
function existingPortableNumber()
{
    $link = mysql_connect(. . .);
    mysql_select_db(. . . , $link);
    if (isset($_POST['valider']) && !empty($_POST['valider']))
    {
        if (isset($_POST['portable1']) && !empty($_POST['portable1']))
        {
            if (isset($_POST['portable1']) && !empty($_POST['portable1']))
            {
                $portable2 = mysql_real_escape_string($_POST['portable2'], $link);
            } 
            $portable1 = mysql_real_escape_string($_POST['portable1'], $link);
            $req = "SELECT ... FROM `client` WHERE 
				(		num_portable1=" . $portable1 . " 
					OR 	num_portable2=" . $portable2 . "
					OR 	num_portable1=" . $portable2 . "
					OR 	num_portable2=" . $portable1 . "
				) AND 	CompteActif=1";
            $res = mysql_query($req, $link);
            if (mysql_num_rows($res) > 0)
            {
            	mysql_close($link);
                return true;
            } 
        } 
       	mysql_close($link);
        return false;
    } 
} 

Vérifier l'inexistance dans 2 champs d'une table

par jay64 » 15 mars 2007, 23:50

Bonjour,

J'ai un formulaire où un client peut s'isncrire.
Parmi les infos que je lui demande de saisir, il y a entre autres deux numéros de tel portables à renseigner (1er obligatoire, 2ème facultatif).

Je voudrais effectuer une vérif, avant d'alimenter ma table à l'aide d'une requete, qui est de m'assurer qu'aucun autre client n'a déjà rentré dans son profil un des portables à enregistrer.

Petite difficulté supplémentaire, je voudrais uniquement réaliser le test parmi les clients déjà existant dans ma base dont le champ "CompteActif" est égal à 1.

Je ne sais absolument pas comment présenter et tourner la chose. Pourriez-vous m'aider ? Merci !

Jay