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 :

Temps d'exécution d'une requête [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2014
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Temps d'exécution d'une requête
    Bonjour à tous.

    Je suis actuellement en stage BTS IRIS 1er année et je dois reprendre un programme de bon de commande en réseau et le terminer. Le problème est que l'ancien élève a laissé 0commentaire et je suis totalement perdu.

    Lorsque j'appuie sur Commande en cours, j'obtiens ça :
    Nom : 834101Sanstitre.png
Affichages : 520
Taille : 124,1 Ko

    Voici le bout de code concerné :
    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
    <?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); // LIGNE 24
    			$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);
    	}
    }
    ?>
    Merci d'avance au personne qui m'aideront, je bloque depuis 3 jours..

  2. #2
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2010
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 144
    Points : 241
    Points
    241
    Par défaut
    Il faudrait voir à quoi ressemble la requête SQL qui doit être dans le fichier en_cours.php pour pouvoir l'optimiser ou ajouter un système de pagination pour ne pas retourner trop d'éléments en même temps (ce qui doit être le cas)

  3. #3
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Au passage, il y a un oubli, il faut activer la levée d'exception pour PDO sinon ce sera difficile d'en attraper...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $this->bdd = new PDO("mysql:host=localhost;dbname=commande", "root", "");
    $this->bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    Et en effet il faudrait voir la requête SQL qui est exécutée.
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2014
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    <?php 
    	include("include/verification_connexion.php");
     
    	if (file_exists("img/icons/button-load.png")) echo '<link rel="icon" type="image/icon" href="img/icons/button-load.png" />';
    	$titre = "Commandes en cours";
     
    	include ("include/header.php");
    	include ("include/Profil_bar.php");
    	include ("include/menu.php");
    	include ("include/traitement_bdd.php");
     
    	if(!isset($_GET["page"]))
    	{
    		$_GET["page"] = 1;
    	}
     
    	$num_page = $_GET["page"];
    	$prev = $num_page-1;
    	$suiv = $num_page+1;
     
    	$min = ($num_page-1)*11;
    	$type = null;
    	$valeur = null;
     
     
    	$traitement = new traitement_bdd();
     
    	$contenu = $traitement->getCommandeEnCours($min, $_id);
     
    	$nb = $traitement->getNbCommandeEnCours($_id);
     
    	$nb_page = ceil(($nb/11)+0.001);
     
    	if($num_page<1 || $num_page>$nb_page)
    	{
    		header("location:en_cours.php?page=1");
    	}
     
    ?>
    	<div class="bloc">
    		<div class="title">
    			<h1><img src="img/icons/button-load.png" alt="" class="titre"/> Commandes en cours</h1>
    			<div class="right align_right">			
    				<form method="POST" id="search" class="search placeholder" action="">
    					<div id="filtre">
    						<select name="filtre">
    							<option disabled selected type="text" value="">Type</option>
    							<option disabled type="text" value="">---------------------------------</option>
    							<option type="text" value="reference">N° de commande</option>
    							<option type="text" value="fournisseur">Fournisseur</option>
    							<option type="text" value="prix_ttc">Prix TTC</option>
    							<option type="text" value="date_livraison">Date de livraison</option>
    						</select>
    					</div>
    					<div><label style="opacity: 1;"></label><input class="text" type="text" name="valeur" value=""/><input class="submit" type="submit" value="rechercher"/></div>
    				</form>
    			</div>
    		</div>	
    		<div class="content">
    			<table>
    				<thead>
    					<tr>
    						<th class="td1">N° de commande</th>
    						<th class="td2">Fournisseur</th>
    						<th class="td3">Prix TTC</th>
    						<th class="td3">Prix payé</th>
    						<th class="td4">Date de livraion</th>
    						<th class="td5">Statut</th>
    					</tr>
    				</thead>
    				<tbody>
    					<?php
    					if(!empty($contenu))
    					{
    						foreach($contenu AS $v)
    						{
     
    							$Num_bon_de_commande = $v["Num_bon_de_commande"];
    							$Num_commande = str_pad($Num_bon_de_commande, 6, "0", STR_PAD_LEFT);
     
    							echo "<tr>";
    							echo "<td class=\"td1\"><a class=\"zoombox commande\" href=\"bon_de_commande.php?Num_commande=".$Num_commande."&nom=".$v["fournisseur"]."&date_commande=".$v["date_commande"]."\">".$Num_commande."</a></td>";
    							echo "<td class=\"td1\">".$v["fournisseur"]."</td>";
    							echo "<td class=\"td3\">".$v["prix_ttc"]." €</td>";
    							echo "<td class=\"td3\">".$v["prix_paye"]." €</td>";
    							echo "<td class=\"td4\">".$v["date_livraison"]."</td>";
    							echo "<td class=\"etat ".$v["statut"]["couleur"]." td5\">".$v["statut"]["etat"]."</td>";
    							echo"</tr>";
    						}
    					}
    					?>
    				</tbody>
    			</table>
    			<div class="pagination_sc">
    				<?php if ($prev>0):?>
    				<a href="en_cours.php?page=<?php echo $prev; ?>" class="prev"><< Précédent</a>
    				<?php endif;?>
    				<a href="#" class="current" style="<?php if ($nb_page == 1) { echo 'display:none;'; } ?>"><?php echo $num_page." / ".$nb_page; ?></a>
    				<?php if ($suiv<($nb_page+1)):?>
    				<a href="en_cours.php?page=<?php echo $suiv; ?>" class="next">Suivant >></a>
    				<?php endif;?>
    			</div>
    		</div>
    	</div>			
    <?php
    include ("include/footer.php");
    ?>
    Voilà. Je ne cache pas qu'a la base j'ai quelque difficulté en Php car je préfère de loin C++ et cie, mais si en plus je dois reprendre le code de quelqu'un sans commentaire, c'est hard..

  5. #5
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    En fait il faudrait le code de cette fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $contenu = $traitement->getCommandeEnCours($min, $_id);
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Sinon, pour essayer d'avancer un peu, tu peux temporairement augmenter le temps d'exécution et logguer les paramètres de la requête.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    set_time_limit(3600);
    $reponse = $this->bdd->query($sql); // LIGNE 24
    $reponse->debugDumpParams();
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 22/06/2007, 12h10
  2. [MySQL] temps d'ouverture d'une connexion VS temps d'exécution d'une requête
    Par epoz dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 25/04/2007, 18h06
  3. Calculer le temps d'exécution d'une requête
    Par BRAUKRIS dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 16/03/2007, 12h59
  4. [MySQL] Temps d'exécution d'une requête
    Par eon-of-the-scorn dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/07/2006, 11h06
  5. Affichage du temps d'exécution d'une requête
    Par milka dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 22/03/2004, 17h48

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