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 :

Exécution d'une requête trop longue [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 33
    Points : 25
    Points
    25
    Par défaut Exécution d'une requête trop longue
    Bonjour,

    Je souhaite que les utilisateurs de mon site web s'identifient à leur arrivée. Pour cela j'ai ce 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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    include("_session.inc.php");
     
    //récupération des variables passées en paramètres
    $identifiant = $_REQUEST["txtIdentifiant"];
    $motDePasse = $_REQUEST["txtMotPasse"];
     
    $cnx= mysql_connect("localhost","root","passe");
    if ($cnx){ // connexion réussie
    	if ( mysql_select_db("bdInfoConso", $cnx) ) {
        //Création du client dans la db :
        $query = "SELECT `CLT_IDENT`, `CLT_MDP` FROM `Client`";
     
        $rs= "SET CHARACTER SET UTF8"; //caractères de la requête en "utf8" et pas "latin 1"
        mysql_query ($rs);
        $rs = mysql_query($query); //exécution requête
        if ( ! $rs ) { // exécution mal passée
          echo "Pb exec requête " . $query;
          echo "Erreur MySQL : " . mysql_error($cnx);
    		}
    		else {
     
    		  $trouve = false;
    		  $ligne = mysql_fetch_assoc($rs);
      		while ($ligne || $trouve == false) { // tant qu'on a réussi à lire une ligne
     
            if ( $identifiant == $ligne['CLT_IDENT'] && $motDePasse == $ligne['CLT_MDP'] ) { // si le mot de passe est valide
                $_SESSION['id'] = $identifiant; //variable de session utilsateur
                $trouve = true;
                echo "<script type='text/javascript'>
    		              <!--
    		                document.location.replace('accueil.php');
    		                window.alert('Bienvenue !');
                      -->
                      </script>"; //message de bienvenue et redirection à l'accueil
              }
         }
     
          mysql_free_result($rs); //libération de la mémoire
     
          if ($trouve == false) {
            echo "<script type='text/javascript'>
                  <!--
                    document.location.replace('connexion.php');
                    window.alert('Mot de passe erroné ou identifiant inexistant !');
                  -->
                  </script>"; //message de bienvenue et redirection à l'accueil
          }
     
        }
      }
      else {
    		echo "BD non accessible<br />\n";
        mysql_close($cnx);
      }
    }
    else  {
      echo "Probleme de connexion<br />\n";
    }

    Rien ne se passe et j'ai ce message :

    Fatal error: Maximum execution time of 30 seconds exceeded in C:\Program Files\EasyPHP 2.0b1\www\valide\connexionClient.php on line 26


    Merci de m'aider.

  2. #2
    Inactif
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 179
    Points : 202
    Points
    202
    Par défaut
    C'est laquelle la ligne 26 ?

  3. #3
    Membre actif Avatar de BlackSmith
    Inscrit en
    Mars 2008
    Messages
    181
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mars 2008
    Messages : 181
    Points : 207
    Points
    207
    Par défaut
    Pourquoi ne fait tu pas une requête comme celle-ci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $query = "SELECT `CLT_IDENT`, `CLT_MDP` FROM `Client` WHERE `CLT_IDENT` = '".identifiant ."'";
    Apres cette requete : si tu a des resultat ça veut dire que l'utilisateur existe, il suffit juste que tu verifie le mot de passe est après ça fonctionne sans utiliser de boucle.

  4. #4
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut
    Et aussi attention au "mysql_close($cnx);" qui se trouve dans le else pour trouver la base, mais il devrait être après les elses, sinon quand tu te connecte correctement à la base, tu ne la ferme jamais.

  5. #5
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 33
    Points : 25
    Points
    25
    Par défaut
    Bonjour,

    BlackSmith, je vais prendre ton idée mais je ne me rappelle pas comment tester la taille d'un mysql_fetch_assoc(mysql_query($requeteSQL))

    C'est .length , je crois ?

  6. #6
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut
    Pour la longueur d'une requete mysql_num_rows, pourrais suffire, vu que ça compte le nombre de ligne retourner alors si elle est superieur a 0 le client existe sinon il n'existe pas.


    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $resultat=mysql_query($Requete,$cnx);
     
    if (mysql_num_rows($resultat) > 0)
    {
        echo 'client existe';
    }
    else
    {
       echo "il n'existe pas!";
    }

  7. #7
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 33
    Points : 25
    Points
    25
    Par défaut
    Bonjour,

    BlackSmith, je vais prendre ton idée mais je ne me rappelle pas comment tester la taille d'un mysql_fetch_assoc(mysql_query($requeteSQL))

    >EDIT c'est bon count(mysql_fetch_assoc(mysql_query($requeteSQL)))

    Merci beaucoup maintenant ça marche très bien !



    Bonne journée à tous

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

Discussions similaires

  1. [Oracle] Requête trop longue à exécuter, trop de résultats
    Par diabli73 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 03/12/2010, 11h27
  2. [AC-2003] Tuer une macro trop longue à s'exécuter
    Par reeenooo dans le forum VBA Access
    Réponses: 5
    Dernier message: 30/10/2009, 18h43
  3. [AC-2003] Requête trop longue pour alimenter une zone de liste
    Par moilou2 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 21/07/2009, 14h38
  4. Une requête très longue à l'exécution
    Par mouaa dans le forum Langage SQL
    Réponses: 8
    Dernier message: 30/05/2008, 07h57
  5. Réponses: 3
    Dernier message: 10/03/2007, 17h59

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