Besoin d'aide

Doudou52
Invité n'ayant pas de compte PHPfrance

20 mai 2014, 08:30

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.

ViPHP
xTG
ViPHP | 7331 Messages

20 mai 2014, 10:45

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. :)

Eléphant du PHP | 422 Messages

20 mai 2014, 10:46

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 ....

++
toujours faire une recherche sur http://www.php.net et/ou sur http://www.google.fr :)
utiliser http://ideone.com/ pour vos codes :)

Eléphant du PHP | 95 Messages

20 mai 2014, 10:57

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 ;)
La b!te et le couteau sont bien souvent les meilleurs outils...mais aussi et surtout les seuls qui sont toujours à disposition!!

Eléphanteau du PHP | 32 Messages

01 juin 2014, 21:23

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

Mammouth du PHP | 2278 Messages

02 juin 2014, 08:36

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;
      }
   }
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD