Page 1 sur 1

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

Posté : 15 mars 2007, 23:50
par jay64
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

Posté : 16 mars 2007, 00:38
par ghalaad
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;
    } 
} 

Posté : 16 mars 2007, 22:49
par jay64
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 !

Posté : 16 mars 2007, 23:22
par jay64
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"))