par
Vincent GLUTEN » 20 oct. 2019, 20:53
Bonjour !

Je passe par ici car j'aurai besoin de conseils pour optimiser mes scripts. D'habitude je poste sur un autre forum mais là ça ne veut pas poster mon sujet (ils me sortent un truc du genre "vous avez été bloqué car sinon vous allez détruire le forum", du coup je viens annihiler ce forum-là car les gens savent pas encore à quel point je suis dangereux

)
Heureusement que j'ai pris l'habitude d'enregistrer les messages juste avant de les poster quand j'ai mis genre une demie-heure à les taper. Donc je vous copie colle tout ci-dessous.
Et sinon petite présentation rapide : je suis débutant en php, je code juste pour le fun et j'ai fait un site web mais très moche et pas vraiment fonctionnel ^^
Bonjour !

Ce coup-ci je poste pas parce-que je suis devant un problème qui me tourmente depuis des heures mais plutôt parce-que je suis en manque de problèmes on va dire ^^ Je suis encore débutant en php mais j'ai fini par réussir à taper tout le code que je voulais faire jusqu'à présent pour mon site. Je pense maintenant à optimiser le tout car je me retrouve avec de belles tartines de code et n'ayant pas encore connaissance de toutes les bonnes pratiques, je dois sûrement pouvoir optimiser tout ça.
J'aimerai donc pouvoir supprimer un maximum de lignes de mon code histoire de m'y retrouver un peu, et aussi augmenter la rapidité d'exécution de mes scripts (pour l'instant ça ne pose pas problème, mais autant s'y intéresser maintenant afin de prendre de bonnes habitudes ^^).
Je suis preneur de toutes les bonnes astuces. En fouillant mon code j'ai trouvé quelques pistes d'amélioration mais je ne suis pas certain d'y gagner en rapidité, je ne m'y connais pas assez pouvoir savoir quelle méthode s'exécute plus rapidement que l'autre, d'où ce sujet ^^
Idée 1 :
Pour m'y retrouver dans mes calculs php, j'ai pris pour habitude de stocker dans des variables ce que je vais chercher dans la base de données.
Code : Tout sélectionner
$reqnb2 = mysqli_query($base, 'SELECT * FROM defense WHERE login="'.$_SESSION['login'].'"') or die('Erreur Nb2D : '.mysqli_error($base));
$DEF = mysqli_fetch_array($reqnb2);
$DEFRO = $DEF['Robot'];
$DEFAW = $DEF['AWINT'];
$DEFBW = $DEF['BWINT'];
$DEFXW = $DEF['XWINT'];
$DEFVO = $DEF['VORTEX'];
Est-ce-que le script gagnerait en rapidité si je réutilisais directement $DEF['Robot'] dans tous mes calculs au lieu de créer $DEFRO ?
Idée 2 :
Histoire de gagner du temps quand je tape mon code, j'utilise parfois la notation abrégée quand je veux utiliser echo dans du html.
Code : Tout sélectionner
<td>
<input type="text" name="DefRobot" value="<?=$DEFRO;?>" class="placement" size="4" pattern="\d+" onfocus="if(this.value == this.defaultValue) this.value = '';" onblur="if(this.value == '') this.value = this.defaultValue;" />
</td>
Au niveau rapidité d'exécution, c'est plus rapide ou plus lent qu'écrire :
Code : Tout sélectionner
<td>
<input type="text" name="DefRobot" value="<?php echo $DEFRO; ?>" class="placement" size="4" pattern="\d+" onfocus="if(this.value == this.defaultValue) this.value = '';" onblur="if(this.value == '') this.value = this.defaultValue;" />
</td>
Idée 3 :
Il est conseillé de séparer le CSS du fichier html et de l'appeler à l'aide de la balise link. C'est ce que je fais. De même j'utilise require et include pour appeler des fichiers php. Cependant, on peut très bien dans les 2 cas taper tous ces fichiers directement dans le fichier html. Certes ça sera un peu fouillis, mais dans le cas des "petits" include, le code ne sera pas rallongé de beaucoup. Est-ce-que dans ce cas là le script gagnera en rapidité ou j'y perdrai sur les deux tableaux ?
Voici le code de la page d'où j'ai extrait tout ça, si jamais vous voyez d'autres améliorations n'hésitez pas ^^
Code : Tout sélectionner
<?php
// Toujours un max de php au début avec session_start obligé
session_start();
$base = mysqli_connect('localhost', 'id1904253_cyril', 'cyril', 'id1904253_base') or die (mysqli_error ($base));
require_once 'Fonctions.php';
require_once 'ActuRessou.php';
// Récupération du nombre de robots et vaisseaux. Nouvelles variables pour le traitement de la disposition.
$REQTOTNPRO = mysqli_query($base, 'SELECT * FROM protection WHERE login="'.$_SESSION['login'].'"') or die('erreur Nb1D : '.mysqli_error($base));
$TOTNPRO = mysqli_fetch_array($REQTOTNPRO);
$PRORO = $TOTNPRO['Robot'];
$PROAW = $TOTNPRO['AWINT'];
$PROBW = $TOTNPRO['BWINT'];
$PROXW = $TOTNPRO['XWINT'];
$PROVO = $TOTNPRO['VORTEX'];
$reqnb2 = mysqli_query($base, 'SELECT * FROM defense WHERE login="'.$_SESSION['login'].'"') or die('Erreur Nb2D : '.mysqli_error($base));
$DEF = mysqli_fetch_array($reqnb2);
$DEFRO = $DEF['Robot'];
$DEFAW = $DEF['AWINT'];
$DEFBW = $DEF['BWINT'];
$DEFXW = $DEF['XWINT'];
$DEFVO = $DEF['VORTEX'];
$reqnb3 = mysqli_query($base, 'SELECT * FROM attaque WHERE login="'.$_SESSION['login'].'"') or die('Erreur Nb3D : '.mysqli_error($base));
$ATT = mysqli_fetch_array($reqnb3);
$ATTRO = $ATT['Robot'];
$ATTAW = $ATT['AWINT'];
$ATTBW = $ATT['BWINT'];
$ATTXW = $ATT['XWINT'];
$ATTVO = $ATT['VORTEX'];
// Récupération du nombre de batiments
$reqg1 = mysqli_query($base, 'SELECT * FROM batiments WHERE login="'.$_SESSION['login'].'"') or die('Erreur Nb1R : '.mysqli_error($base));
$NBBAT = mysqli_fetch_array($reqg1);
// Définition de variables pour l'affichage des capacités obligatoire car on ne peut pas faire de calculs dans le tableau :(
$CapaCentre = $NBBAT['Centre']*20;
$CapaAWint = $NBBAT['BAWINT']*30;
$CapaBWint = $NBBAT['BBWINT']*30;
$CapaXWint = $NBBAT['BXWINT']*25;
$CapaVortex = $NBBAT['BVORTEX']*20;
// Traitement de la disposition.
// On teste l'existence de nos variables. NbCollect récupéré à partir de l'include fonctions.
if ( isset($_POST["ProRobot"]) && isset($_POST["DefRobot"]) && isset($_POST["AttRobot"]) )
{
if ( ($_POST["ProRobot"]) == 0 ) { $msgro = '<h2>Vous devez laisser au moins 1 robot en protection.</h2>'; }
elseif ( ($_POST["ProRobot"])+($_POST["DefRobot"])+($_POST["AttRobot"]) == $NbCollect )
{
mysqli_query($base,"UPDATE protection SET Robot='".$_POST["ProRobot"]."' WHERE login='".$_SESSION["login"]."'");
mysqli_query($base,"UPDATE defense SET Robot='".$_POST["DefRobot"]."' WHERE login='".$_SESSION["login"]."'");
mysqli_query($base,"UPDATE attaque SET Robot='".$_POST["AttRobot"]."' WHERE login='".$_SESSION["login"]."'");
$PRORO = $_POST["ProRobot"];
$DEFRO = $_POST["DefRobot"];
$ATTRO = $_POST["AttRobot"];
$msgro = '<h1>Disposition enregistrée</h1>';
}
else { $msgro = '<h2>Nombre de robots non égal à celui existant.</h2>'; }
}
// On teste l'existence de nos variables.
if ( isset($_POST['ProAWINT']) && isset($_POST['DefAWINT']) && isset($_POST['AttAWINT']) )
{
if ( ($_POST["ProAWINT"])+($_POST["DefAWINT"])+($_POST["AttAWINT"]) == $TOTNPRO['TotAWINT'] )
{
mysqli_query($base,"UPDATE protection SET AWINT='".$_POST["ProAWINT"]."' WHERE login='".$_SESSION["login"]."'");
mysqli_query($base,"UPDATE defense SET AWINT='".$_POST["DefAWINT"]."' WHERE login='".$_SESSION["login"]."'");
mysqli_query($base,"UPDATE attaque SET AWINT='".$_POST["AttAWINT"]."' WHERE login='".$_SESSION["login"]."'");
$PROAW = $_POST["ProAWINT"];
$DEFAW = $_POST["DefAWINT"];
$ATTAW = $_POST["AttAWINT"];
$msgaw = '<h1>Disposition enregistrée</h1>';
}
else { $msgaw = '<h2>Nombre de A-Wint non égal à celui existant.</h2>'; }
}
// On teste l'existence de nos variables.
if ( isset($_POST['ProBWINT']) && isset($_POST['DefBWINT']) && isset($_POST['AttBWINT']) )
{
if ( ($_POST["ProBWINT"])+($_POST["DefBWINT"])+($_POST["AttBWINT"]) == $TOTNPRO['TotBWINT'] )
{
mysqli_query($base,"UPDATE protection SET BWINT='".$_POST["ProBWINT"]."' WHERE login='".$_SESSION["login"]."'");
mysqli_query($base,"UPDATE defense SET BWINT='".$_POST["DefBWINT"]."' WHERE login='".$_SESSION["login"]."'");
mysqli_query($base,"UPDATE attaque SET BWINT='".$_POST["AttBWINT"]."' WHERE login='".$_SESSION["login"]."'");
$PROBW = $_POST["ProBWINT"];
$DEFBW = $_POST["DefBWINT"];
$ATTBW = $_POST["AttBWINT"];
$msgbw = '<h1>Disposition enregistrée</h1>';
}
else { $msgbw = '<h2>Nombre de B-Wint non égal à celui existant.</h2>'; }
}
// On teste l'existence de nos variables.
if ( isset($_POST['ProXWINT']) && isset($_POST['DefXWINT']) && isset($_POST['AttXWINT']) )
{
if ( ($_POST["ProXWINT"])+($_POST["DefXWINT"])+($_POST["AttXWINT"]) == $TOTNPRO['TotXWINT'] ) {
mysqli_query($base,"UPDATE protection SET XWINT='".$_POST["ProXWINT"]."' WHERE login='".$_SESSION["login"]."'");
mysqli_query($base,"UPDATE defense SET XWINT='".$_POST["DefXWINT"]."' WHERE login='".$_SESSION["login"]."'");
mysqli_query($base,"UPDATE attaque SET XWINT='".$_POST["AttXWINT"]."' WHERE login='".$_SESSION["login"]."'");
$PROXW = $_POST["ProXWINT"];
$DEFXW = $_POST["DefXWINT"];
$ATTXW = $_POST["AttXWINT"];
$msgxw = '<h1>Disposition enregistrée</h1>';
}
else { $msgxw = '<h2>Nombre de X-Wint non égal à celui existant.</h2>'; }
}
// On teste l'existence de nos variables.
if ( isset($_POST['ProVORTEX']) && isset($_POST['DefVORTEX']) && isset($_POST['AttVORTEX']) )
{
if ( ($_POST["ProVORTEX"])+($_POST["DefVORTEX"])+($_POST["AttVORTEX"]) == $TOTNPRO['TotVORTEX'] ) {
mysqli_query($base,"UPDATE protection SET VORTEX='".$_POST["ProVORTEX"]."' WHERE login='".$_SESSION["login"]."'");
mysqli_query($base,"UPDATE defense SET VORTEX='".$_POST["DefVORTEX"]."' WHERE login='".$_SESSION["login"]."'");
mysqli_query($base,"UPDATE attaque SET VORTEX='".$_POST["AttVORTEX"]."' WHERE login='".$_SESSION["login"]."'");
$PROVO = $_POST["ProVORTEX"];
$DEFVO = $_POST["DefVORTEX"];
$ATTVO = $_POST["AttVORTEX"];
$msgvo = '<h1>Disposition enregistrée</h1>';
}
else { $msgvo = '<h2>Nombre de Frégate Vortex non égal à celui existant.</h2>'; }
}
// Affichage stylé des ressources
$SuperNRCar = floor($NRCar*100)/100;
$SuperNRFer = floor($NRFer*100)/100;
$SuperNRAci = floor($NRAci*100)/100;
$SuperNRGold = floor($NRGold*100)/100;
$SuperNREsp = floor($NREsp*100)/100;
$SuperNREst = floor($NREst*100)/100;
?>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Espace membre</title>
<link rel="stylesheet" type="text/css" href="INDISPENSABLE.css">
<link rel="stylesheet" type="text/css" href="CSS/CSSGESTION.css">
</head>
<body>
<?php require_once 'Accès.php'; ?>
<div id="contenu">
<table id="stock"><thead>
<tr><th> Carbone </th> <th> Fer </th> <th> Acier </th> <th> Or </th> <th> Espace </th> <th> Espace total</th> <th> Collecteurs </th> </tr>
</thead><tbody>
<tr><td> <?=$SuperNRCar?> </td> <td> <?=$SuperNRFer?> </td> <td> <?=$SuperNRAci?> </td> <td> <?=$SuperNRGold?> </td> <td> <?=$SuperNREsp?> </td> <td> <?=$SuperNREst?> </td> <td> <?=$NbCollect?> </td> </tr>
</tbody></table>
<h1>Gestion</h1>
<?php
if ( isset($msgro) ) { echo $msgro; }
if ( isset($msgaw) ) { echo $msgaw; }
if ( isset($msgbw) ) { echo $msgbw; }
if ( isset($msgxw) ) { echo $msgxw; }
if ( isset($msgvo) ) { echo $msgvo; }
?>
<h2>Entrez les taux de production</h2>
<form method="post" action="Ressources4.php">
<table id="taux">
<tr>
<td><label for="carbone">Carbone</label></td>
<td><label for="fer">Fer</label></td>
<td><label for="acier">Acier</label></td>
<td><label for="gold">Or</label></td>
<td></td>
</tr>
<tr>
<td>
<input type="text" pattern="([1][0][0]|[0-9]{1,2})" size="1" name="Carbone" class="cadence" value= "<?=$APCarbone?>" onfocus="if(this.value == this.defaultValue) this.value = [];" onblur="if(this.value == []) this.value = this.defaultValue;" maxlength="3" style="border:solid 1px red; box-shadow:0 0 12px red inset;" />
<b> %</b>
</td>
<td>
<input type="text" pattern="([1][0][0]|[0-9]{1,2})" size ="1" name="Fer" class="cadence" value="<?=$APFer?>" onfocus="if(this.value == this.defaultValue) this.value = [];" onblur="if(this.value == []) this.value = this.defaultValue;" maxlength="3" style="border:solid 1px black; box-shadow:0 0 12px black inset;" />
<b> %</b>
</td>
<td>
<input type="text" pattern="([1][0][0]|[0-9]{1,2})" size="1" name="Acier" class="cadence" value="<?=$APAcier?>" onfocus="if(this.value == this.defaultValue) this.value = [];" onblur="if(this.value == []) this.value = this.defaultValue;" maxlength="3" style="border:solid 1px blue; box-shadow:0 0 12px blue inset;" />
<b> %</b>
</td>
<td>
<input type="text" pattern="([1][0][0]|[0-9]{1,2})" size="1" name="Gold" class="cadence" value="<?=$APGold?>" onfocus="if(this.value == this.defaultValue) this.value = [];" onblur="if(this.value == []) this.value = this.defaultValue;" maxlength="3" style="border:solid 1px gold; box-shadow:0 0 12px gold inset;" />
<b> %</b>
</td>
<td>
<input type="submit" value="Ok !" style="padding:5px 20px; background-color:lightsteelblue; border:dotted 2px grey; border-radius:5px;" />
</td>
</tr>
</table>
</form>
<br>
<form method="post" action="Gestion4.php">
<table id="position">
<thead>
<tr>
<th>Hangars</th>
<th>Protection</th>
<th>Défense</th>
<th>Attaque</th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><b><?=$NBBAT['Centre']?> Centre de collecte</b>
<?php echo"$NbCollect / $CapaCentre"; ?></td>
<td>
<input type="text" name ="ProRobot" class="placement" size="4" pattern="\d+" onfocus="if(this.value == this.defaultValue) this.value = '';" onblur="if(this.value == '') this.value = this.defaultValue;" value="<?=$PRORO;?>" />
</td>
<td>
<input type="text" name="DefRobot" value="<?=$DEFRO;?>" class="placement" size="4" pattern="\d+" onfocus="if(this.value == this.defaultValue) this.value = '';" onblur="if(this.value == '') this.value = this.defaultValue;" />
</td>
<td>
<input value="<?=$ATTRO;?>" type="text" name="AttRobot" class="placement" size="4" pattern="\d+" onFocus="javascript:this.value=''" onBlur="javascript:if(this.value == '')this.value=this.defaultValue;" />
</td>
<td></td>
</tr>
<?php
if ($NBBAT['BAWINT'] > 0) {
echo'<tr>
<td>
<b>'.$NBBAT['BAWINT'].' Hangar(s) A-Wint</b>
'.$TOTNPRO['TotAWINT'].' / '.$CapaAWint.'
</td>
<td>
<input value="'.$PROAW.'" type="text" name ="ProAWINT" class="placement" size="4" pattern="\d+" onfocus="if(this.value == this.defaultValue) this.value = [];" onblur="if(this.value == []) this.value = this.defaultValue;" />
</td>
<td>
<input value ="'.$DEFAW.'" type="text" name="DefAWINT" class="placement" size="4" pattern="\d+" onfocus="if(this.value == this.defaultValue) this.value = [];" onblur="if(this.value == []) this.value = this.defaultValue;" />
</td>
<td>
<input value ="'.$ATTAW.'" type="text" name="AttAWINT" class="placement" size="4" pattern="\d+" onfocus="if(this.value == this.defaultValue) this.value = [];" onblur="if(this.value == []) this.value = this.defaultValue;" />
</td>
<td></td>
</tr>';
}
if ($NBBAT['BBWINT'] > 0) {
echo'<tr>
<td>
<b>'.$NBBAT['BBWINT'].' Hangar(s) B-Wint</b>
'.$TOTNPRO['TotBWINT'].' / '.$CapaBWint.'
</td>
<td>
<input value="'.$PROBW.'" type="text" name ="ProBWINT" class="placement" size="4" pattern="\d+" onfocus="if(this.value == this.defaultValue) this.value = [];" onblur="if(this.value == []) this.value = this.defaultValue;" />
</td>
<td>
<input value ="'.$DEFBW.'" type="text" name="DefBWINT" class="placement" size="4" pattern="\d+" onfocus="if(this.value == this.defaultValue) this.value = [];" onblur="if(this.value == []) this.value = this.defaultValue;" />
</td>
<td>
<input value ="'.$ATTBW.'" type="text" name="AttBWINT" class="placement" size="4" pattern="\d+" onfocus="if(this.value == this.defaultValue) this.value = [];" onblur="if(this.value == []) this.value = this.defaultValue;" />
</td>
<td></td>
</tr>';
}
if ($NBBAT['BXWINT'] > 0) {
echo'<tr>
<td>
<b>'.$NBBAT['BXWINT'].' Hangar(s) X-Wint</b>
'.$TOTNPRO['TotXWINT'].' / '.$CapaXWint.'
</td>
<td>
<input value="'.$PROXW.'" type="text" name ="ProXWINT" size="4" pattern="\d+" class="placement" onfocus="if(this.value == this.defaultValue) this.value = [];" onblur="if(this.value == []) this.value = this.defaultValue;" />
</td>
<td>
<input value ="'.$DEFXW.'" type="text" name="DefXWINT" size="4" class="placement" pattern="\d+" onfocus="if(this.value == this.defaultValue) this.value = [];" onblur="if(this.value == []) this.value = this.defaultValue;" />
</td>
<td>
<input value ="'.$ATTXW.'" type="text" name="AttXWINT" size="4" class="placement" pattern="\d+" onfocus="if(this.value == this.defaultValue) this.value = [];" onblur="if(this.value == []) this.value = this.defaultValue;" />
</td>
<td></td>
</tr>';
}
if ($NBBAT['BVORTEX'] > 0) {
echo'<tr>
<td>
<b>'.$NBBAT['BVORTEX'].' Hangar(s) Frégate Vortex</b>
'.$TOTNPRO['TotVORTEX'].' / '.$CapaVortex.'
</td>
<td>
<input value="'.$PROVO.'" type="text" name ="ProVORTEX" size="4" pattern="\d+" class="placement" onfocus="if(this.value == this.defaultValue) this.value = [];" onblur="if(this.value == []) this.value = this.defaultValue;" />
</td>
<td>
<input value ="'.$DEFVO.'" type="text" name="DefVORTEX" size="4" class="placement" pattern="\d+" onfocus="if(this.value == this.defaultValue) this.value = [];" onblur="if(this.value == []) this.value = this.defaultValue;" />
</td>
<td>
<input value ="'.$ATTVO.'" type="text" name="AttVORTEX" size="4" class="placement" pattern="\d+" onfocus="if(this.value == this.defaultValue) this.value = [];" onblur="if(this.value == []) this.value = this.defaultValue;" />
</td>
<td></td>
</tr>';
}
?>
<tr>
<td></td><td></td><td></td><td></td>
<td><input type="submit" value="Valider" /></td>
</tr>
</tbody>
</table>
</form>
</div>
</body>
</html>
[/quote]
Bonjour ! :)
Je passe par ici car j'aurai besoin de conseils pour optimiser mes scripts. D'habitude je poste sur un autre forum mais là ça ne veut pas poster mon sujet (ils me sortent un truc du genre "vous avez été bloqué car sinon vous allez détruire le forum", du coup je viens annihiler ce forum-là car les gens savent pas encore à quel point je suis dangereux :twisted: )
Heureusement que j'ai pris l'habitude d'enregistrer les messages juste avant de les poster quand j'ai mis genre une demie-heure à les taper. Donc je vous copie colle tout ci-dessous.
Et sinon petite présentation rapide : je suis débutant en php, je code juste pour le fun et j'ai fait un site web mais très moche et pas vraiment fonctionnel ^^
[quote]Bonjour ! :)
Ce coup-ci je poste pas parce-que je suis devant un problème qui me tourmente depuis des heures mais plutôt parce-que je suis en manque de problèmes on va dire ^^ Je suis encore débutant en php mais j'ai fini par réussir à taper tout le code que je voulais faire jusqu'à présent pour mon site. Je pense maintenant à optimiser le tout car je me retrouve avec de belles tartines de code et n'ayant pas encore connaissance de toutes les bonnes pratiques, je dois sûrement pouvoir optimiser tout ça.
J'aimerai donc pouvoir supprimer un maximum de lignes de mon code histoire de m'y retrouver un peu, et aussi augmenter la rapidité d'exécution de mes scripts (pour l'instant ça ne pose pas problème, mais autant s'y intéresser maintenant afin de prendre de bonnes habitudes ^^).
Je suis preneur de toutes les bonnes astuces. En fouillant mon code j'ai trouvé quelques pistes d'amélioration mais je ne suis pas certain d'y gagner en rapidité, je ne m'y connais pas assez pouvoir savoir quelle méthode s'exécute plus rapidement que l'autre, d'où ce sujet ^^
Idée 1 :
Pour m'y retrouver dans mes calculs php, j'ai pris pour habitude de stocker dans des variables ce que je vais chercher dans la base de données.
[code]$reqnb2 = mysqli_query($base, 'SELECT * FROM defense WHERE login="'.$_SESSION['login'].'"') or die('Erreur Nb2D : '.mysqli_error($base));
$DEF = mysqli_fetch_array($reqnb2);
$DEFRO = $DEF['Robot'];
$DEFAW = $DEF['AWINT'];
$DEFBW = $DEF['BWINT'];
$DEFXW = $DEF['XWINT'];
$DEFVO = $DEF['VORTEX'];[/code]
Est-ce-que le script gagnerait en rapidité si je réutilisais directement $DEF['Robot'] dans tous mes calculs au lieu de créer $DEFRO ?
Idée 2 :
Histoire de gagner du temps quand je tape mon code, j'utilise parfois la notation abrégée quand je veux utiliser echo dans du html.
[code]<td>
<input type="text" name="DefRobot" value="<?=$DEFRO;?>" class="placement" size="4" pattern="\d+" onfocus="if(this.value == this.defaultValue) this.value = '';" onblur="if(this.value == '') this.value = this.defaultValue;" />
</td>[/code]
Au niveau rapidité d'exécution, c'est plus rapide ou plus lent qu'écrire :
[code]<td>
<input type="text" name="DefRobot" value="<?php echo $DEFRO; ?>" class="placement" size="4" pattern="\d+" onfocus="if(this.value == this.defaultValue) this.value = '';" onblur="if(this.value == '') this.value = this.defaultValue;" />
</td>
[/code]
Idée 3 :
Il est conseillé de séparer le CSS du fichier html et de l'appeler à l'aide de la balise link. C'est ce que je fais. De même j'utilise require et include pour appeler des fichiers php. Cependant, on peut très bien dans les 2 cas taper tous ces fichiers directement dans le fichier html. Certes ça sera un peu fouillis, mais dans le cas des "petits" include, le code ne sera pas rallongé de beaucoup. Est-ce-que dans ce cas là le script gagnera en rapidité ou j'y perdrai sur les deux tableaux ?
Voici le code de la page d'où j'ai extrait tout ça, si jamais vous voyez d'autres améliorations n'hésitez pas ^^
[code]<?php
// Toujours un max de php au début avec session_start obligé
session_start();
$base = mysqli_connect('localhost', 'id1904253_cyril', 'cyril', 'id1904253_base') or die (mysqli_error ($base));
require_once 'Fonctions.php';
require_once 'ActuRessou.php';
// Récupération du nombre de robots et vaisseaux. Nouvelles variables pour le traitement de la disposition.
$REQTOTNPRO = mysqli_query($base, 'SELECT * FROM protection WHERE login="'.$_SESSION['login'].'"') or die('erreur Nb1D : '.mysqli_error($base));
$TOTNPRO = mysqli_fetch_array($REQTOTNPRO);
$PRORO = $TOTNPRO['Robot'];
$PROAW = $TOTNPRO['AWINT'];
$PROBW = $TOTNPRO['BWINT'];
$PROXW = $TOTNPRO['XWINT'];
$PROVO = $TOTNPRO['VORTEX'];
$reqnb2 = mysqli_query($base, 'SELECT * FROM defense WHERE login="'.$_SESSION['login'].'"') or die('Erreur Nb2D : '.mysqli_error($base));
$DEF = mysqli_fetch_array($reqnb2);
$DEFRO = $DEF['Robot'];
$DEFAW = $DEF['AWINT'];
$DEFBW = $DEF['BWINT'];
$DEFXW = $DEF['XWINT'];
$DEFVO = $DEF['VORTEX'];
$reqnb3 = mysqli_query($base, 'SELECT * FROM attaque WHERE login="'.$_SESSION['login'].'"') or die('Erreur Nb3D : '.mysqli_error($base));
$ATT = mysqli_fetch_array($reqnb3);
$ATTRO = $ATT['Robot'];
$ATTAW = $ATT['AWINT'];
$ATTBW = $ATT['BWINT'];
$ATTXW = $ATT['XWINT'];
$ATTVO = $ATT['VORTEX'];
// Récupération du nombre de batiments
$reqg1 = mysqli_query($base, 'SELECT * FROM batiments WHERE login="'.$_SESSION['login'].'"') or die('Erreur Nb1R : '.mysqli_error($base));
$NBBAT = mysqli_fetch_array($reqg1);
// Définition de variables pour l'affichage des capacités obligatoire car on ne peut pas faire de calculs dans le tableau :(
$CapaCentre = $NBBAT['Centre']*20;
$CapaAWint = $NBBAT['BAWINT']*30;
$CapaBWint = $NBBAT['BBWINT']*30;
$CapaXWint = $NBBAT['BXWINT']*25;
$CapaVortex = $NBBAT['BVORTEX']*20;
// Traitement de la disposition.
// On teste l'existence de nos variables. NbCollect récupéré à partir de l'include fonctions.
if ( isset($_POST["ProRobot"]) && isset($_POST["DefRobot"]) && isset($_POST["AttRobot"]) )
{
if ( ($_POST["ProRobot"]) == 0 ) { $msgro = '<h2>Vous devez laisser au moins 1 robot en protection.</h2>'; }
elseif ( ($_POST["ProRobot"])+($_POST["DefRobot"])+($_POST["AttRobot"]) == $NbCollect )
{
mysqli_query($base,"UPDATE protection SET Robot='".$_POST["ProRobot"]."' WHERE login='".$_SESSION["login"]."'");
mysqli_query($base,"UPDATE defense SET Robot='".$_POST["DefRobot"]."' WHERE login='".$_SESSION["login"]."'");
mysqli_query($base,"UPDATE attaque SET Robot='".$_POST["AttRobot"]."' WHERE login='".$_SESSION["login"]."'");
$PRORO = $_POST["ProRobot"];
$DEFRO = $_POST["DefRobot"];
$ATTRO = $_POST["AttRobot"];
$msgro = '<h1>Disposition enregistrée</h1>';
}
else { $msgro = '<h2>Nombre de robots non égal à celui existant.</h2>'; }
}
// On teste l'existence de nos variables.
if ( isset($_POST['ProAWINT']) && isset($_POST['DefAWINT']) && isset($_POST['AttAWINT']) )
{
if ( ($_POST["ProAWINT"])+($_POST["DefAWINT"])+($_POST["AttAWINT"]) == $TOTNPRO['TotAWINT'] )
{
mysqli_query($base,"UPDATE protection SET AWINT='".$_POST["ProAWINT"]."' WHERE login='".$_SESSION["login"]."'");
mysqli_query($base,"UPDATE defense SET AWINT='".$_POST["DefAWINT"]."' WHERE login='".$_SESSION["login"]."'");
mysqli_query($base,"UPDATE attaque SET AWINT='".$_POST["AttAWINT"]."' WHERE login='".$_SESSION["login"]."'");
$PROAW = $_POST["ProAWINT"];
$DEFAW = $_POST["DefAWINT"];
$ATTAW = $_POST["AttAWINT"];
$msgaw = '<h1>Disposition enregistrée</h1>';
}
else { $msgaw = '<h2>Nombre de A-Wint non égal à celui existant.</h2>'; }
}
// On teste l'existence de nos variables.
if ( isset($_POST['ProBWINT']) && isset($_POST['DefBWINT']) && isset($_POST['AttBWINT']) )
{
if ( ($_POST["ProBWINT"])+($_POST["DefBWINT"])+($_POST["AttBWINT"]) == $TOTNPRO['TotBWINT'] )
{
mysqli_query($base,"UPDATE protection SET BWINT='".$_POST["ProBWINT"]."' WHERE login='".$_SESSION["login"]."'");
mysqli_query($base,"UPDATE defense SET BWINT='".$_POST["DefBWINT"]."' WHERE login='".$_SESSION["login"]."'");
mysqli_query($base,"UPDATE attaque SET BWINT='".$_POST["AttBWINT"]."' WHERE login='".$_SESSION["login"]."'");
$PROBW = $_POST["ProBWINT"];
$DEFBW = $_POST["DefBWINT"];
$ATTBW = $_POST["AttBWINT"];
$msgbw = '<h1>Disposition enregistrée</h1>';
}
else { $msgbw = '<h2>Nombre de B-Wint non égal à celui existant.</h2>'; }
}
// On teste l'existence de nos variables.
if ( isset($_POST['ProXWINT']) && isset($_POST['DefXWINT']) && isset($_POST['AttXWINT']) )
{
if ( ($_POST["ProXWINT"])+($_POST["DefXWINT"])+($_POST["AttXWINT"]) == $TOTNPRO['TotXWINT'] ) {
mysqli_query($base,"UPDATE protection SET XWINT='".$_POST["ProXWINT"]."' WHERE login='".$_SESSION["login"]."'");
mysqli_query($base,"UPDATE defense SET XWINT='".$_POST["DefXWINT"]."' WHERE login='".$_SESSION["login"]."'");
mysqli_query($base,"UPDATE attaque SET XWINT='".$_POST["AttXWINT"]."' WHERE login='".$_SESSION["login"]."'");
$PROXW = $_POST["ProXWINT"];
$DEFXW = $_POST["DefXWINT"];
$ATTXW = $_POST["AttXWINT"];
$msgxw = '<h1>Disposition enregistrée</h1>';
}
else { $msgxw = '<h2>Nombre de X-Wint non égal à celui existant.</h2>'; }
}
// On teste l'existence de nos variables.
if ( isset($_POST['ProVORTEX']) && isset($_POST['DefVORTEX']) && isset($_POST['AttVORTEX']) )
{
if ( ($_POST["ProVORTEX"])+($_POST["DefVORTEX"])+($_POST["AttVORTEX"]) == $TOTNPRO['TotVORTEX'] ) {
mysqli_query($base,"UPDATE protection SET VORTEX='".$_POST["ProVORTEX"]."' WHERE login='".$_SESSION["login"]."'");
mysqli_query($base,"UPDATE defense SET VORTEX='".$_POST["DefVORTEX"]."' WHERE login='".$_SESSION["login"]."'");
mysqli_query($base,"UPDATE attaque SET VORTEX='".$_POST["AttVORTEX"]."' WHERE login='".$_SESSION["login"]."'");
$PROVO = $_POST["ProVORTEX"];
$DEFVO = $_POST["DefVORTEX"];
$ATTVO = $_POST["AttVORTEX"];
$msgvo = '<h1>Disposition enregistrée</h1>';
}
else { $msgvo = '<h2>Nombre de Frégate Vortex non égal à celui existant.</h2>'; }
}
// Affichage stylé des ressources
$SuperNRCar = floor($NRCar*100)/100;
$SuperNRFer = floor($NRFer*100)/100;
$SuperNRAci = floor($NRAci*100)/100;
$SuperNRGold = floor($NRGold*100)/100;
$SuperNREsp = floor($NREsp*100)/100;
$SuperNREst = floor($NREst*100)/100;
?>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Espace membre</title>
<link rel="stylesheet" type="text/css" href="INDISPENSABLE.css">
<link rel="stylesheet" type="text/css" href="CSS/CSSGESTION.css">
</head>
<body>
<?php require_once 'Accès.php'; ?>
<div id="contenu">
<table id="stock"><thead>
<tr><th> Carbone </th> <th> Fer </th> <th> Acier </th> <th> Or </th> <th> Espace </th> <th> Espace total</th> <th> Collecteurs </th> </tr>
</thead><tbody>
<tr><td> <?=$SuperNRCar?> </td> <td> <?=$SuperNRFer?> </td> <td> <?=$SuperNRAci?> </td> <td> <?=$SuperNRGold?> </td> <td> <?=$SuperNREsp?> </td> <td> <?=$SuperNREst?> </td> <td> <?=$NbCollect?> </td> </tr>
</tbody></table>
<h1>Gestion</h1>
<?php
if ( isset($msgro) ) { echo $msgro; }
if ( isset($msgaw) ) { echo $msgaw; }
if ( isset($msgbw) ) { echo $msgbw; }
if ( isset($msgxw) ) { echo $msgxw; }
if ( isset($msgvo) ) { echo $msgvo; }
?>
<h2>Entrez les taux de production</h2>
<form method="post" action="Ressources4.php">
<table id="taux">
<tr>
<td><label for="carbone">Carbone</label></td>
<td><label for="fer">Fer</label></td>
<td><label for="acier">Acier</label></td>
<td><label for="gold">Or</label></td>
<td></td>
</tr>
<tr>
<td>
<input type="text" pattern="([1][0][0]|[0-9]{1,2})" size="1" name="Carbone" class="cadence" value= "<?=$APCarbone?>" onfocus="if(this.value == this.defaultValue) this.value = [];" onblur="if(this.value == []) this.value = this.defaultValue;" maxlength="3" style="border:solid 1px red; box-shadow:0 0 12px red inset;" />
<b> %</b>
</td>
<td>
<input type="text" pattern="([1][0][0]|[0-9]{1,2})" size ="1" name="Fer" class="cadence" value="<?=$APFer?>" onfocus="if(this.value == this.defaultValue) this.value = [];" onblur="if(this.value == []) this.value = this.defaultValue;" maxlength="3" style="border:solid 1px black; box-shadow:0 0 12px black inset;" />
<b> %</b>
</td>
<td>
<input type="text" pattern="([1][0][0]|[0-9]{1,2})" size="1" name="Acier" class="cadence" value="<?=$APAcier?>" onfocus="if(this.value == this.defaultValue) this.value = [];" onblur="if(this.value == []) this.value = this.defaultValue;" maxlength="3" style="border:solid 1px blue; box-shadow:0 0 12px blue inset;" />
<b> %</b>
</td>
<td>
<input type="text" pattern="([1][0][0]|[0-9]{1,2})" size="1" name="Gold" class="cadence" value="<?=$APGold?>" onfocus="if(this.value == this.defaultValue) this.value = [];" onblur="if(this.value == []) this.value = this.defaultValue;" maxlength="3" style="border:solid 1px gold; box-shadow:0 0 12px gold inset;" />
<b> %</b>
</td>
<td>
<input type="submit" value="Ok !" style="padding:5px 20px; background-color:lightsteelblue; border:dotted 2px grey; border-radius:5px;" />
</td>
</tr>
</table>
</form>
<br>
<form method="post" action="Gestion4.php">
<table id="position">
<thead>
<tr>
<th>Hangars</th>
<th>Protection</th>
<th>Défense</th>
<th>Attaque</th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><b><?=$NBBAT['Centre']?> Centre de collecte</b>
<?php echo"$NbCollect / $CapaCentre"; ?></td>
<td>
<input type="text" name ="ProRobot" class="placement" size="4" pattern="\d+" onfocus="if(this.value == this.defaultValue) this.value = '';" onblur="if(this.value == '') this.value = this.defaultValue;" value="<?=$PRORO;?>" />
</td>
<td>
<input type="text" name="DefRobot" value="<?=$DEFRO;?>" class="placement" size="4" pattern="\d+" onfocus="if(this.value == this.defaultValue) this.value = '';" onblur="if(this.value == '') this.value = this.defaultValue;" />
</td>
<td>
<input value="<?=$ATTRO;?>" type="text" name="AttRobot" class="placement" size="4" pattern="\d+" onFocus="javascript:this.value=''" onBlur="javascript:if(this.value == '')this.value=this.defaultValue;" />
</td>
<td></td>
</tr>
<?php
if ($NBBAT['BAWINT'] > 0) {
echo'<tr>
<td>
<b>'.$NBBAT['BAWINT'].' Hangar(s) A-Wint</b>
'.$TOTNPRO['TotAWINT'].' / '.$CapaAWint.'
</td>
<td>
<input value="'.$PROAW.'" type="text" name ="ProAWINT" class="placement" size="4" pattern="\d+" onfocus="if(this.value == this.defaultValue) this.value = [];" onblur="if(this.value == []) this.value = this.defaultValue;" />
</td>
<td>
<input value ="'.$DEFAW.'" type="text" name="DefAWINT" class="placement" size="4" pattern="\d+" onfocus="if(this.value == this.defaultValue) this.value = [];" onblur="if(this.value == []) this.value = this.defaultValue;" />
</td>
<td>
<input value ="'.$ATTAW.'" type="text" name="AttAWINT" class="placement" size="4" pattern="\d+" onfocus="if(this.value == this.defaultValue) this.value = [];" onblur="if(this.value == []) this.value = this.defaultValue;" />
</td>
<td></td>
</tr>';
}
if ($NBBAT['BBWINT'] > 0) {
echo'<tr>
<td>
<b>'.$NBBAT['BBWINT'].' Hangar(s) B-Wint</b>
'.$TOTNPRO['TotBWINT'].' / '.$CapaBWint.'
</td>
<td>
<input value="'.$PROBW.'" type="text" name ="ProBWINT" class="placement" size="4" pattern="\d+" onfocus="if(this.value == this.defaultValue) this.value = [];" onblur="if(this.value == []) this.value = this.defaultValue;" />
</td>
<td>
<input value ="'.$DEFBW.'" type="text" name="DefBWINT" class="placement" size="4" pattern="\d+" onfocus="if(this.value == this.defaultValue) this.value = [];" onblur="if(this.value == []) this.value = this.defaultValue;" />
</td>
<td>
<input value ="'.$ATTBW.'" type="text" name="AttBWINT" class="placement" size="4" pattern="\d+" onfocus="if(this.value == this.defaultValue) this.value = [];" onblur="if(this.value == []) this.value = this.defaultValue;" />
</td>
<td></td>
</tr>';
}
if ($NBBAT['BXWINT'] > 0) {
echo'<tr>
<td>
<b>'.$NBBAT['BXWINT'].' Hangar(s) X-Wint</b>
'.$TOTNPRO['TotXWINT'].' / '.$CapaXWint.'
</td>
<td>
<input value="'.$PROXW.'" type="text" name ="ProXWINT" size="4" pattern="\d+" class="placement" onfocus="if(this.value == this.defaultValue) this.value = [];" onblur="if(this.value == []) this.value = this.defaultValue;" />
</td>
<td>
<input value ="'.$DEFXW.'" type="text" name="DefXWINT" size="4" class="placement" pattern="\d+" onfocus="if(this.value == this.defaultValue) this.value = [];" onblur="if(this.value == []) this.value = this.defaultValue;" />
</td>
<td>
<input value ="'.$ATTXW.'" type="text" name="AttXWINT" size="4" class="placement" pattern="\d+" onfocus="if(this.value == this.defaultValue) this.value = [];" onblur="if(this.value == []) this.value = this.defaultValue;" />
</td>
<td></td>
</tr>';
}
if ($NBBAT['BVORTEX'] > 0) {
echo'<tr>
<td>
<b>'.$NBBAT['BVORTEX'].' Hangar(s) Frégate Vortex</b>
'.$TOTNPRO['TotVORTEX'].' / '.$CapaVortex.'
</td>
<td>
<input value="'.$PROVO.'" type="text" name ="ProVORTEX" size="4" pattern="\d+" class="placement" onfocus="if(this.value == this.defaultValue) this.value = [];" onblur="if(this.value == []) this.value = this.defaultValue;" />
</td>
<td>
<input value ="'.$DEFVO.'" type="text" name="DefVORTEX" size="4" class="placement" pattern="\d+" onfocus="if(this.value == this.defaultValue) this.value = [];" onblur="if(this.value == []) this.value = this.defaultValue;" />
</td>
<td>
<input value ="'.$ATTVO.'" type="text" name="AttVORTEX" size="4" class="placement" pattern="\d+" onfocus="if(this.value == this.defaultValue) this.value = [];" onblur="if(this.value == []) this.value = this.defaultValue;" />
</td>
<td></td>
</tr>';
}
?>
<tr>
<td></td><td></td><td></td><td></td>
<td><input type="submit" value="Valider" /></td>
</tr>
</tbody>
</table>
</form>
</div>
</body>
</html>
[/quote][/code]