Page 1 sur 1

Besoin d'aide

Posté : 20 mai 2014, 08:30
par Doudou52
Bonjour à tous.

Je suis actuellement en stage IRIS 1er année, et je dois reprendre un logiciel de bon de commande d'un autre élève sans aucun commentaire, afin de le terminer. Problème, c'est que je suis actuellement bloqué.

Quand je clique sur Commande en cours, j'ai le droit à se message :
Image

Voici le morceau de code concerné :

Code : Tout sélectionner

<?php class communication { public $bdd; public function connexion() { try{ $this->bdd = new PDO("mysql:host=localhost;dbname=commande","root",""); $this->bdd->query("SET NAMES UTF8"); } catch(Exception $e) { die ($e->getMessage()); } } public function query($sql) { try { $reponse = $this->bdd->query($sql); [color=#FF0000]//LIGNE 24[/color] $retour = null; $i = 0; if(!empty($reponse)) { while($row = $reponse->fetch(PDO::FETCH_ASSOC)) { foreach($row AS $k => $v) { $retour[$i][$k] = $v; } $i++; } } return $retour; } catch(Exception $e) { return null; } } public function exec($sql) { $this->bdd->exec($sql); } } ?>
Et je bloque complétement.
Merci au personne qui pourront m'aider.

Re: Besoin d'aide

Posté : 20 mai 2014, 10:45
par xTG
Tu demandes une requête qui est beaucoup trop grosse pour être traitée en 30secondes.
Augmente le temps max d'exécution de PHP (dans le php.ini) ou bien optimise ta requête ou ton traitement. :)

Re: Besoin d'aide

Posté : 20 mai 2014, 10:46
par telnes
hello

le code met plus de 30 sec et est stopé par le server (paramètre par défaut)

ajoute

set_time_limit(0); //http://www.php.net/manual/fr/function.s ... -limit.php

en début de code

ou change la valeur dans le php.ini


mais a mon avis récupérer une commande en plus de 30 sec il y a un problème de perf ....

++

Re: Besoin d'aide

Posté : 20 mai 2014, 10:57
par chapt0011
Cette erreur signifie que le temps d'exécution maximum est dépassé autrement dit le code php demande l’exécution une requête SQL très importante ou alors boucle infinie et sa plombe ton serveur...
Donc soit tu augmente le temps max d’exécution qui par défaut est a 300 (et non a 30?) où alors tu reprend ta requête pour sélectionner moins de ligne/moins d'informations par ligne.
Par contre le code que tu nous a mis ne nous sert a rien, il s'agit d'une classe permettant de se connecter à une base et d'y exécuter des requêtes..
Il faut donc que tu commence par identifier la requête qui fait tout planter ;)

Re: Besoin d'aide

Posté : 01 juin 2014, 21:23
par MmeRose
J'ai eu un problème similaire lors d'une pagination, tout simplement parce que mes requêtes comportaient une ou plusieurs erreurs. Tu devrais poster ton code pour trouver d'où vient l'erreur ou chercher sur le web.
Slts

Re: Besoin d'aide

Posté : 02 juin 2014, 08:36
par sirakawa
Il serait itéressant de voir la valeur de $sql
public function query($sql)
   {
      try
      {
         $reponse = $this->bdd->query($sql);  [color=#FF0000]//LIGNE 24[/color]
         $retour = null;
         
         $i = 0;
         
         if(!empty($reponse))
         {
         
            while($row = $reponse->fetch(PDO::FETCH_ASSOC))
            {
               foreach($row AS $k => $v)
               {
                  $retour[$i][$k] = $v;
               }
               
               $i++;
            }
         }
        
         
         return $retour;
      }
      catch(Exception $e)
      {
      return null;
      }
   }