Page 1 sur 1

Conseil pour l'otpimisation du code php

Posté : 23 juin 2005, 19:36
par Mestoph
Bonjour, je debut en php... Je me suis fait un enorme script php avec plusieurs page qui fonctionne plus ou moin bien...

Mon gros problème et que je mets des variables partout et mon code est vraiment laid a lire et pas tres obtimisée...

Voici un exemple de mon travail, j'aurais besoin de quelques conseil pour l'optimisation ce celui-ci car je ne vois vraiment pas comment faire....

Merci d'avance aux personnes qui me repondront !
<?
include("include/config.php");
include("langues/$Langage.php");
include("include/header.php");
echo "<br>";
if($_GET['Page']=='1'){			
	$Compte=$_POST['Compte'];
	$Motdepasse=$_POST['Motdepasse'];
	$Id=$_POST['Id'];
	$Personnage=$_POST['Personnage'];			   
	$cnx = odbc_connect($Db_Serveur, $Db_Compte, $Db_Pass);
	if( ! $cnx ) echo "$banque_6 <br>";			 
	$query = "SELECT * FROM PlayingCharacters WHERE UserId =$Id";
	$result = odbc_exec($cnx, $query);
	while (odbc_fetch_into($result, $PlayingCharacters)) {
		$Gold = $PlayingCharacters[21];
		$Xp	= $PlayingCharacters[24];	
			$Xp=substr( $Xp  , 0, strlen($Xp) - strlen(stristr( $Xp, ".")) );			// enleve la , et les decimale
?>
<table width="100%" border="1" cellpadding="5" cellspacing="0" align="center">
	<tr>
		<td class='texte1' bgcolor='#949C84' bordercolordark="white" bordercolorlight="black" align="left" width="50%"><font face="Tahoma" size="1" color="#FFFFFF"><b><?php echo $banque_19; ?> <?php echo $Personnage; ?></b></td>
		<td class='texte1' bgcolor='#949C84' bordercolordark="white" bordercolorlight="black" align="left" width="50%"><font face="Tahoma" size="1" color="#FFFFFF"><b>&nbsp;</b></td>
	</tr>
	<tr bgcolor='B8C0B2'>
		<td class='texte1' bordercolordark='white' bordercolorlight='black' align='center' width="50%"><font face="Tahoma" size="1"><? echo $banque_12; ?></td>
		<td class='texte1' bordercolordark='white' bordercolorlight='black' align='center' width="50%"><font face="Tahoma" size="1"><? echo $banque_13; ?></td>
	</Tr>
	<tr>
		<td class='texte1' bordercolordark="white" bordercolorlight="black" align="center" width="50%"><font face='Tahoma' size='1'><?php echo $Gold; ?></td>
		<td class='texte1' bordercolorlight="black" bordercolordark="white" align="center" width="50%"><font face='Tahoma' size='1'><?php echo $Xp; ?></td>
	</tr>				
	<tr bgcolor='B8C0B2'>
		<td class='texte1' bgcolor='#949C84' bordercolordark="white" bordercolorlight="black" align="left" width="50%"><font face="Tahoma" size="1" color="#FFFFFF"><b><?php echo $banque_18; ?></b></td>
		<td class='texte1' bgcolor='#949C84' bordercolordark="white" bordercolorlight="black" align="left" width="50%"><font face="Tahoma" size="1" color="#FFFFFF"><b>&nbsp;</b></td>
	</tr>
	<tr>
		<td class='texte1' align="center" valign="top" width="50%">	 
			<form method="post" action="<?php echo $_SERVER[PHP_SELF]; ?>?Page=2&id=<? echo $id; ?>">
		    <p align="center">
		    <input type="hidden" name="Personnage" value="<? echo $Personnage ?>">
			<p align="center">
			<font face='Tahoma' size='1'><?php echo $banque_17; ?> : <br><br><input type="text" name="Echange" size="20" tabindex="4"><br><br>
			<input type="hidden" name="Compte" value="<? echo $Compte ?>">
			<input type="hidden" name="Motdepasse" value="<? echo $Motdepasse ?>">
		    <input type="submit" value="<?php echo $banque_4; ?>" tabindex="1"><br><br></p>
		</td>
		<td class='texte1' align="center" width="50%"><font color="#FF0000" size='1'><?php echo $banque_16; ?> <?php echo $Gold; ?>
		  <?
			  if ($Gold<=1) { 
				  echo $banque_14;
		  } else { 
			  echo $banque_15;
			  }
?>		</td>
	</tr>
</table><br>
<?
	}
 odbc_close($cnx);	
include("include/footer.php");
exit;			
}
if($_GET['Page']=='2'){
	$Compte=$_POST['Compte'];
	$Motdepasse=$_POST['Motdepasse'];
	$Personnage=$_POST['Personnage'];
	$Echange=$_POST['Echange'];						
	if($Echange=='') {
		echo "<center><font face='Tahoma' size='1'>$banque_1 !<br><br>";
		echo "<center><input type='button' value='$banque_9' onclick='javascript:history.back();'><br><br>";
		include("include/footer.php");
		exit;
	} elseif($Echange<='0') {
		echo "<center><font face='Tahoma' size='1'>$banque_20 !<br><br>";
		echo "<center><input type='button' value='$banque_9' onclick='javascript:history.back();'><br><br>";
		include("include/footer.php");
		exit;
	} else {					
		$cnx = odbc_connect($Db_Serveur, $Db_Compte, $Db_Pass);
		if( ! $cnx ) echo "$banque_6";
		$Verif_Gold = odbc_exec ($cnx, "Select * FROM PlayingCharacters WHERE PlayerName = '$Personnage' ");
		while (odbc_fetch_into($Verif_Gold, $PlayingCharacters)); {
			if ( preg_match('#[0-9]#',$Echange) ) {
				if ($Echange <= $PlayingCharacters[21]) {
					$Echange2 = "$PlayingCharacters[24]" + "$Echange";
					$Echange3 = "$PlayingCharacters[21]" - "$Echange";
					odbc_exec ($cnx, "UPDATE PlayingCharacters SET XP = '$Echange2' WHERE PlayerName = '$Personnage'");
					odbc_exec ($cnx, "UPDATE PlayingCharacters SET Gold = '$Echange3' WHERE PlayerName = '$Personnage'");  
					echo "<center><font face='Tahoma' size='1'>$banque_22<br><br>";
echo<<<END
					<form method="POST" action="$_SERVER[PHP_SELF]?id=$id">
					<input type="hidden" name="Compte" value="$Compte">
					<input type="hidden" name="Motdepasse" value="$Motdepasse">
					<input type="submit" value="$banque_23">
					</form>		
END;
					include("include/footer.php");
					exit;
				} else {
		 		  echo "<center><font face='Tahoma' size='1'>$banque_21 !<br><br>";
				  echo "<center><input type='button' value='$banque_9' onclick='javascript:history.back();'><br><br>";
				  include("include/footer.php");
				  exit;
				}
			} else {
			 	echo "<center><font face='Tahoma' size='1'>$Xp_19 !<br><br>";
				echo "<center><input type='button' value='$Xp_6' onclick='javascript:history.back();'><br><br>";
				include("include/footer.php");
				exit;
			}
		}
	}
	odbc_close($cnx);			
	include("include/footer.php");
	exit;			
}
$num=0;
if($Compte=='' || $Motdepasse=='') {
 	echo "<center><font face='Tahoma' size='1'>$banque_1 !<br><br>";
	echo "<center><input type='button' value='$banque_9' onclick='javascript:history.back();'><br><br>";
	include("include/footer.php");
	exit;
} else {
	$cnx = odbc_connect($Db_Serveur, $Db_Compte, $Db_Pass);
	if( ! $cnx ) echo "$banque_6 <br>";
	$query = "SELECT * FROM T4Cusers WHERE Account ='$Compte'";
	$result = odbc_exec($cnx, $query);
	if (odbc_fetch_row($result)==$Compte) {
		$query1 = "SELECT * FROM OnlineUsers WHERE AccountName ='$Compte'";
		$result1 = odbc_exec($cnx, $query1);
		if (odbc_fetch_row($result1)<>$Compte) {
			$query2 = "SELECT * FROM T4Cusers WHERE Account ='$Compte'";
			$result2 = odbc_exec($cnx, $query2);
			while (odbc_fetch_into($result2, $T4Cusers)) {
				$Lecturemdp = $T4Cusers[2];
				if ($Lecturemdp == $Motdepasse) {
					$querynum = "SELECT * FROM PlayingCharacters WHERE Accountname ='$Compte'";
					$resultnum = odbc_exec($cnx, $querynum);
					while (odbc_fetch_into($resultnum, $PlayingCharacters)) {
						$num++;
					}
					if ( $num > 0 ) {
?>
					<center><form method="post" action="<?php echo $_SERVER[PHP_SELF]; ?>?Page=1&id=<? echo $id; ?>">
					<FONT face=Tahoma size=1><?php echo $banque_7; ?> :
					<select name="Id">
<?
					$query3 = "SELECT * FROM PlayingCharacters WHERE Accountname ='$Compte'";
					$result3 = odbc_exec($cnx, $query3);
					while (odbc_fetch_into($result3, $PlayingCharacters)) {
						$Personnage = $PlayingCharacters[1];
						$Id	= $PlayingCharacters[0];
						echo "<option value=\"".$Id."\">".$Personnage."</option>";
					}
?>
					</select><br><br>
					<p align="center"><input type="hidden" name="envoit" value="Ok">
				   	<input type="hidden" name="Personnage" value="<? echo $Personnage ?>">
					<input type="hidden" name="Compte" value="<? echo $Compte ?>">
					<input type="hidden" name="Motdepasse" value="<? echo $Motdepasse ?>">
					<input type="submit" value="<?php echo $banque_4; ?>" tabindex="1"><br></p>
					</form>
<?
  					} else {
?>						  	
					<center><font face="Tahoma" size="1"><?php echo $mule_19; ?>
					<br><br>
					<p align="center"><input type="button" value="<?php echo $banque_9; ?>" onclick="javascript:history.back();"><br><br></p>
					</form>
<?
					}
				} else {
				 	echo "<center><font face='Tahoma' size='1'>$banque_8 !<br><br>";
					echo "<center><input type='button' value='$banque_9' onclick='javascript:history.back();'><br><br>";
					include("include/footer.php");
					exit;
				}
			}
		} else {
		 	echo "<center><font face='Tahoma' size='1'>$banque_10 !<br><br>";
			echo "<center><input type='button' value='$banque_9' onclick='javascript:history.back();'><br><br>";
			include("include/footer.php");
			exit;
		}
	} else {
	 	echo "<center><font face='Tahoma' size='1'>$banque_11 !<br><br>";
		echo "<center><input type='button' value='$banque_9' onclick='javascript:history.back();'><br><br>";
		include("include/footer.php");
		exit;
	}
}
include("include/footer.php");
exit;
?>						

Posté : 23 juin 2005, 21:08
par pascaltje
essaie de séparer les différentes parties dans ton code:
- les infos à récupérer des formulaires + les tests, pour savoir quel traitement effectuer
- les traitements = en gros ce qui a trait au SQL, à l'enregistrement des données
- l'affichage

pour cela, des schémas peuvent aider :)

et je conseille aussi et surtout de programmer en objet (DAO) pour avoir un code plus lisible:
http://www.phpfrance.com/forums/voir_sujet-224.php

A+

Pascal

Posté : 23 juin 2005, 21:25
par Invité
Grand merci de ta réponse rapide !

Je vais dessuite voir le lien que tu as posé sur ce message

A bientot pascaltje