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 :

[SQL] Repérer une donnée dans une table


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 9
    Par défaut [SQL] Repérer une donnée dans une table
    Bonjour,

    j'ai une table "Code" avec des champs
    "pseudo" (champs unique)
    "nom"
    "utilise" (par defaut valider = 0)

    Lorsque l'on entre un "code" dans un formulaire, ça doit déja vérifier que le pseudo existe dans la table (sinon : retourne "code inexistant"). ça, ça marche.

    Lorsque le pseudo est trouvé, il faudrait vérifier si "utilise"=0

    si oui, on retourne une requete sql.

    Sinon --> "code deja validé".

    et c'est la que je bloque.

    voici mon 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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    $username = $userdata['username'];
     
    //recuperation du code entré dans le formulaire
    if (isset($_POST['code']))
    {
     
        $code = $_POST['code']; 
       // verification que le code existe dans la table
       $res  = mysql_query("SELECT COUNT(*) AS nbr FROM Code WHERE code='$code'");
       $alors  = mysql_fetch_assoc($res);
       if(!($alors['nbr'] == 0)) //si le code existe
     
    	{
     
            // on vérifie si le code à été deja utilisé (c'est la que je suis perdu)
    	$requete  = mysql_query("SELECT utilise FROM Code WHERE code='$code'");
    	$utilise = mysql_fetch_array($requete);
     
     
    	 if ($utilise==0) //s'il est pas utilisé
     
    		{
    		$datedeval = date('d M Y H:i');
    		$requete = mysql_query("UPDATE CodeSET utilise='1' WHERE code= '$code' ");
    		$requete2 = mysql_query("UPDATE Code SET nom = '$username' WHERE code= '$code' ");
    		$texte = 'code ok';
    		}
    		else
    		{$texte = 'code deja utilisé';}
    	}
    	else
    	{
    	$texte = 'code inconnu';
    	}
    }
     
    else
    {
        $code= "";
    }
    mon niveau : débutant
    ça fait un moment que je tatonne. Je me doute que c'est surement pas grand chose...

    Un grand merci à ceux qui pourront m'aider

  2. #2
    Membre chevronné
    Profil pro
    Responsable de service informatique
    Inscrit en
    Septembre 2004
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 352
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($utilise['utilise']==0))
    Tu peux faire tout ça en une seule requête SQL.

  3. #3
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 9
    Par défaut
    Salut Chengi, merci de ta réponse.
    j'avais commencé par ça. (au fait y'a une ")" en trop sur ton code) mais ça marche pas. ça retourne dans tous les cas "code ok"

    Je précise que le $username = $userdata['username']; est sur une autre table (je sais pas si ça a de l'importance)

    Si je reprend le code avec ton conseil ça donnerais ça ?

    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
     
    $username = $userdata['username'];
     
    //recuperation du code entré dans le formulaire
    if (isset($_POST['code']))
    {
     
        $code = $_POST['code']; 
       // verification que le code existe dans la table
       $res  = mysql_query("SELECT COUNT(*) AS nbr FROM Code WHERE code='$code'");
       $alors  = mysql_fetch_assoc($res);
       if(!($alors['nbr'] == 0)) //si le code existe
     
    	{
     
            // on vérifie si le code à été deja utilisé (c'est la que je suis perdu)
     
         if ($utilise['utilise']==0)//s'il est pas utilisé
     
    		{
    		$datedeval = date('d M Y H:i');
    		$requete = mysql_query("UPDATE CodeSET utilise='1' WHERE code= '$code' ");
    		$requete2 = mysql_query("UPDATE Code SET nom = '$username' WHERE code= '$code' ");
    		$texte = 'code ok';
    		}
    		else
    		{$texte = 'code deja utilisé';}
    	}
    	else
    	{
    	$texte = 'code inconnu';
    	}
    }
     
    else
    {
        $code= "";
    }
    Mais ça retourne que des "code ok", meme si le code a deja été entré.
    sachant que la requete marche bien dans la table. Si la donné est deja egale à 1 (code utilisé) ça me change la date de validation du code avec la nouvelle (j'ai une donnée qui insère la date de validation du code)

    Merci

  4. #4
    Membre chevronné
    Profil pro
    Responsable de service informatique
    Inscrit en
    Septembre 2004
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 352
    Par défaut
    Ca consisterait à faire cela :
    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
    <?php
        $code  = $_POST['code']; 
        // verification que le code existe dans la table
        $res   = mysql_query("SELECT COUNT(*) AS nbr FROM Code WHERE code='$code'");
        $alors = mysql_fetch_assoc($res);
     
        if($alors['nbr'] == 0) //si le code existe
        {
            $datedeval = date('d M Y H:i');
            $requete = mysql_query("UPDATE Code SET utilise='1' WHERE code = '$code'");
            $requete2 = mysql_query("UPDATE Code SET nom = '$username' WHERE code = '$code'");
            $texte = 'code ok';
        }
        else
        {
            $texte = 'code deja utilisé';
        }

  5. #5
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 9
    Par défaut
    Merci,

    Mais il y a deux conditions à respecter :

    1- Le code existe dans la table :

    2- Il n'a pas encore été utilisé.

    Pour la première condition, on la vérifie par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
       $res  = mysql_query("SELECT COUNT(*) AS nbr FROM Code WHERE code='$code'");
       $alors  = mysql_fetch_assoc($res);
       if(!($alors['nbr'] == 0))
    Si elle n'est pas vérifiée, alors "Code inexistant"

    Sinon, il faut savoir s'il a déja été utilisé (dans la table, champ "utilise" est égale à "0" (zero) par defaut, donc signifie "non utilisé". Une fois qu'il est utilisé, il faut le updater en "1", d'ou mon code de départ)

    et c'est cette condition qui n'est pas vérifiée. que "utilise" =1 ou =0, j'ai toujours le meme resultat "code ok" alors qu'il est censé retourner "code deja utilisé" si le champ est égal à 1.

    Merci
    Mais une fois que celle s

  6. #6
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
       $res  = mysql_query("SELECT * FROM Code WHERE code='$code'");
       $nbr = mysql_num_rows($res);
     
       if( $nbr == 1 )  { // correction de la condition
          // le code existe, on va donc vérifier s'il a été utilisé
          $alors  = mysql_fetch_assoc($res);
          if( $alors["utilise"] == 0 ) {
                 // il n'a pas été utilisé, je peux donc faire mon traitement ici
          }
       }

  7. #7
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 9
    Par défaut
    Super !

    un gros merci Darkstar


    je savais bien que j'étais pas loin... ça m'a fait gagner un temps fou !

    merci aussi Chengi pour ta contrib

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

Discussions similaires

  1. [Toutes versions] coller les données d'une plage d'une cellule dans une cellule d'une autre feuille[VBA]
    Par arthson dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2012, 17h37
  2. [WD16] Lecture donnée d'une base dans une valeur d'une autre base
    Par gef13 dans le forum WinDev
    Réponses: 2
    Dernier message: 16/11/2011, 09h05
  3. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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