Questions (boucle sur tables, requêtes via formulaire, etc.)
Posté : 21 nov. 2005, 20:50
Bonsoir !!!
J'aurais quelques questions
1- J'ai fais un petit programme(ci-dessous) pour faire mes stats sur une table MySQL, je voudrais que ce programme se fasse sur 20 tables, il va donc falloir, je pense que j'utilise une boucle, mais je ne sais pas trop comment procéder pour faire une boucle sur une base de données, les noms de tables auront un morceau en commun (ex: sedan_matchs et lehavre_matchs), je pense que ceci pourrait être exploitable, pourriez-vous m'indiquez la manière de faire, ou une piste ?
2- Pour la mise à jour de mes tables, je souhaiterais savoir si aller chercher des informations sur un autre site web est "légal", faut-il des autorisations spécifiques du webmaster du site concerné (un site pro) ?
En clair, est-ce du piratage de données ?
3- Je souhaiterais faire mes requêtes SQL en passant par le formulaire de contact de mon site, bien sûr avec un user et un mot de passe complexe, ect-ce dangereux pour la sécurité de mon site de faire ceci ?
4- Subsidiaire : J'aimerais savoir sur ce code, si cela est possible de l'optimiser en l'allégeant, car étant débutant, il y a forcément des choses auxquelles je n'ai pas forcément connaissance et peut-être pas pensé, et je trouve le code un peu long pour le résultat que j'obtiens.

J'aurais quelques questions
1- J'ai fais un petit programme(ci-dessous) pour faire mes stats sur une table MySQL, je voudrais que ce programme se fasse sur 20 tables, il va donc falloir, je pense que j'utilise une boucle, mais je ne sais pas trop comment procéder pour faire une boucle sur une base de données, les noms de tables auront un morceau en commun (ex: sedan_matchs et lehavre_matchs), je pense que ceci pourrait être exploitable, pourriez-vous m'indiquez la manière de faire, ou une piste ?
2- Pour la mise à jour de mes tables, je souhaiterais savoir si aller chercher des informations sur un autre site web est "légal", faut-il des autorisations spécifiques du webmaster du site concerné (un site pro) ?
En clair, est-ce du piratage de données ?
3- Je souhaiterais faire mes requêtes SQL en passant par le formulaire de contact de mon site, bien sûr avec un user et un mot de passe complexe, ect-ce dangereux pour la sécurité de mon site de faire ceci ?
4- Subsidiaire : J'aimerais savoir sur ce code, si cela est possible de l'optimiser en l'allégeant, car étant débutant, il y a forcément des choses auxquelles je n'ai pas forcément connaissance et peut-être pas pensé, et je trouve le code un peu long pour le résultat que j'obtiens.
// Initialisation des variables
//*******
$tt_bp_dom = 0;
$tt_bc_dom = 0;
$tt_spect_dom = 0;
$tt_bp_ext = 0;
$tt_bc_ext = 0;
$tt_spect_ext = 0;
mysql_connect('', '', ''); //connexion à mysql
mysql_select_db(''); // sélection de la base de données
// ****************************
// concerne les matchs à domicile
//*******
$dom = mysql_query("SELECT * FROM sedan_matchs WHERE lieu = 'dom'");
while($resultat_dom = mysql_fetch_array($dom)) // boucle récupérant les matchs à domicile
{
$bp_dom = $resultat_dom['bp'];
$bc_dom = $resultat_dom['bc'];
$spect_dom = $resultat_dom['spect'];
$tt_bp_dom += $bp_dom;
$tt_bc_dom += $bc_dom;
$tt_spect_dom += $spect_dom;
}
$max_spect_x = mysql_query("SELECT max(spect) FROM sedan_matchs WHERE lieu = 'dom'"); // plus forte affluence à domicile
$max_spect_dom = mysql_result($max_spect_x, 0);
$min_spect_x = mysql_query("SELECT min(spect) FROM sedan_matchs WHERE lieu = 'dom'"); // plus faible affluence à l'extérieur
$min_spect_dom = mysql_result($min_spect_x, 0);
$max_bp_x = mysql_query("SELECT max(bp) FROM sedan_matchs WHERE lieu = 'dom'"); // nbre maximum de but pour marqués à domicile
$max_bp_dom = mysql_result($max_bp_x, 0);
$max_bc_x = mysql_query("SELECT max(bc) FROM sedan_matchs WHERE lieu = 'dom'"); // nbre maximum de but contre encaissés à domicile
$max_bc_dom = mysql_result($max_bc_x, 0);
$jour_x_dom = mysql_query("SELECT COUNT(*) FROM sedan_matchs WHERE lieu = 'dom'"); // détermination du nbre de rencontre jouée à domicile
$jour_dom = mysql_result($jour_x_dom, 0);
$moy_spect_dom = ceil($tt_spect_dom / $jour_dom); // moyenne spectateur à domicile (ceil arrondi à l'entier supérieur)
$moy_bp_dom = $tt_bp_dom / $jour_dom; // moyenne des buts pour à domicile
$moy_bp_dom = number_format($moy_bp_dom, 2); // arrondi le nbre avec deux décimale
$moy_bc_dom = $tt_bc_dom / $jour_dom; // moyenne de buts contre à domicile
$moy_bc_dom = number_format($moy_bc_dom, 2);
$dif_but_dom = $tt_bp_dom - $tt_bc_dom; // différence de but à domicile
if($dif_but_dom > 0) // sert à placer le signe + si la différence de buts est positive
{
$dif_but_dom = "+ ".$dif_but_dom;
}
// ****************************
// concerne les matchs à l'extérieur
//*******
$ext = mysql_query("SELECT * FROM sedan_matchs WHERE lieu = 'ext'");
while($resultat_ext = mysql_fetch_array($ext))
{
$bp_ext = $resultat_ext['bp'];
$bc_ext = $resultat_ext['bc'];
$spect_ext = $resultat_ext['spect'];
$tt_bp_ext += $bp_ext;
$tt_bc_ext += $bc_ext;
$tt_spect_ext += $spect_ext;
}
$max_spect_y = mysql_query("SELECT max(spect) FROM sedan_matchs WHERE lieu = 'ext'"); // plus forte affluence à l'extérieur
$max_spect_ext = mysql_result($max_spect_y, 0);
$min_spect_y = mysql_query("SELECT min(spect) FROM sedan_matchs WHERE lieu = 'ext'"); // plus faible affluence à l'extérieur
$min_spect_ext = mysql_result($min_spect_y, 0);
$max_bp_y = mysql_query("SELECT max(bp) FROM sedan_matchs WHERE lieu = 'ext'"); // nbre maximum de but pour marqués à l'extérieur
$max_bp_ext = mysql_result($max_bp_y, 0);
$max_bc_y = mysql_query("SELECT max(bc) FROM sedan_matchs WHERE lieu = 'ext'"); // nbre maximum de but contre encaissés à l'extérieur
$max_bc_ext = mysql_result($max_bc_y, 0);
$jour_x_ext = mysql_query("SELECT COUNT(*) FROM sedan_matchs WHERE lieu = 'ext'"); // détermination du nbre de rencontre jouée à l'extérieur
$jour_ext = mysql_result($jour_x_ext, 0);
$moy_spect_ext = ceil($tt_spect_ext / $jour_ext); // moyenne spectateurs à l'extérieur
$moy_bp_ext = $tt_bp_ext / $jour_ext; // moyenne des buts pour à l'extérieur
$moy_bp_ext = number_format($moy_bp_ext, 2); // arrondi le nbre avec deux décimale
$moy_bc_ext = $tt_bc_ext / $jour_ext; // moyenne de buts contre à l'extérieur
$moy_bc_ext = number_format($moy_bc_ext, 2);
$dif_but_ext = $tt_bp_ext - $tt_bc_ext; // différence de but à domicile
if($dif_but_ext > 0) // sert à placer le signe + si la différence de buts est positive
{
$dif_but_ext = "+ ".$dif_but_ext;
}
// ****************************
// concerne tous les matchs
//*******
$journee = $jour_dom + $jour_ext;
$bp = $tt_bp_dom + $tt_bp_ext;
$bc = $tt_bc_dom + $tt_bc_ext;
$moy_bp = ($moy_bp_dom + $moy_bp_ext) / 2;
$moy_bc = ($moy_bc_dom + $moy_bc_ext) / 2;
$max_but_pour = max($max_bp_dom, $max_bp_ext);
$max_but_contre = max($max_bc_dom, $max_bc_ext);
$dif = $bp - $bc;
if($dif > 0) // affiche le + en cas de différence positive
{
$dif = "+ ".$dif;
}
$total_spect = $tt_spect_dom + $tt_spect_ext;
$moy_spect = ceil(($moy_spect_dom + $moy_spect_ext) / 2);
$max_spect = max($max_spect_dom, $max_spect_ext);
$min_spect = min($min_spect_dom, $min_spect_ext);
mysql_close();
// ****************************
// Affichage des statistiques générales
//*******
echo '
<table class="stat">
<tr>
<th colspan="2"><div class="statTitreHG"></div><div class="statTitreHD"></div>Statistiques générales</th>
</tr>
<tr>
<td>Nombre total de matchs joués</td>
<td>'.$journee.' matchs</td>
</tr>
<tr>
<td>Total buts marqués</td>
<td>'.$bp.' buts marqués</td>
</tr>
<tr>
<td>Moyenne des buts marqués</td>
<td>'.$moy_bp.' par match</td>
</tr>
<tr>
<td>Maximum de buts marqués en un match</td>
<td>'.$max_but_pour.' buts marqués</td>
</tr>
<tr>
<td>Total des buts encaissés</td>
<td>'.$bc.' encaissés</td>
</tr>
<tr>
<td>Moyenne des buts encaissés</td>
<td>'.$moy_bc.' par match</td>
</tr>
<tr>
<td>Différence de buts</td>
<td>'.$dif.'</td>
</tr>
<tr>
<td>Total des spectateurs</td>
<td>'.$total_spect.' spectateurs</td>
</tr>
<tr>
<td>Moyenne des spectateurs</td>
<td>'.$moy_spect.' spectateurs</td>
</tr>
<tr>
<td>Plus forte affluence</td>
<td>'.$max_spect.' spectateurs</td>
</tr>
<tr>
<td>Plus faible affluence</td>
<td>'.$min_spect.' spectateurs</td>
</tr>
<tr>
<td class="piedStat" colspan="2">
<div class="piedStatBG"></div>
<div class="piedStatBD"></div>
</td>
</tr>
</table>';
// ****************************
// Affichage des statistiques à domicile
//*******
echo '
<table class="stat">
<tr>
<th colspan="2"><div class="statTitreHG"></div><div class="statTitreHD"></div>Statistiques à domicile</th>
</tr>
<tr>
<td>Nombre de matchs joués à domicile</td>
<td>'.$jour_dom.' matchs</td>
</tr>
<tr>
<td>Buts marqués</td>
<td>'.$tt_bp_dom.' buts marqués</td>
</tr>
<tr>
<td>Moyenne des buts marqués</td>
<td>'.$moy_bp_dom.' par match</td>
</tr>
<tr>
<td>Maximum de buts marqués en un match</td>
<td>'.$max_bp_dom.' buts marqués</td>
</tr>
<tr>
<td>Buts encaissés</td>
<td>'.$tt_bc_dom.' encaissés</td>
</tr>
<tr>
<td>Moyenne buts encaissés</td>
<td>'.$moy_bc_dom.' par match</td>
</tr>
<tr>
<td>Différence de buts</td>
<td>'.$dif_but_dom.'</td>
</tr>
<tr>
<td>Total des spectateurs</td>
<td>'.$tt_spect_dom.' spectateurs</td>
</tr>
<tr>
<td>Moyenne des spectateurs</td>
<td>'.$moy_spect_dom.' spectateurs</td>
</tr>
<tr>
<td>Plus forte affluence</td>
<td>'.$max_spect_dom.' spectateurs</td>
</tr>
<tr>
<td>Plus faible affluence</td>
<td>'.$min_spect_dom.' spectateurs</td>
</tr>
<tr>
<td class="piedStat" colspan="2">
<div class="piedStatBG"></div>
<div class="piedStatBD"></div>
</td>
</tr>
</table>';
// ****************************
// Affichage des statistiques à l'extérieur
//*******
echo '
<table class="stat">
<tr>
<th colspan="2"><div class="statTitreHG"></div><div class="statTitreHD"></div>Statistiques à l\'extérieur</th>
</tr>
<tr>
<td>Nombre de matchs joués à domicile</td>
<td>'.$jour_ext.' matchs</td>
</tr>
<tr>
<td>Buts marqués</td>
<td>'.$tt_bp_ext.' buts marqués</td>
</tr>
<tr>
<td>Moyenne des buts marqués</td>
<td>'.$moy_bp_ext.' par match</td>
</tr>
<tr>
<td>Maximum de buts marqués en un match</td>
<td>'.$max_bp_ext.' buts marqués</td>
</tr>
<tr>
<td>Buts encaissés</td>
<td>'.$tt_bc_ext.' encaissés</td>
</tr>
<tr>
<td>Moyenne buts encaissés</td>
<td>'.$moy_bc_ext.' par match</td>
</tr>
<tr>
<td>Différence de buts</td>
<td>'.$dif_but_ext.'</td>
</tr>
<tr>
<td>Total des spectateurs</td>
<td>'.$tt_spect_ext.' spectateurs</td>
</tr>
<tr>
<td>Moyenne des spectateurs</td>
<td>'.$moy_spect_ext.' spectateurs</td>
</tr>
<tr>
<td>Plus forte affluence</td>
<td>'.$max_spect_ext.' spectateurs</td>
</tr>
<tr>
<td>Plus faible affluence</td>
<td>'.$min_spect_ext.' spectateurs</td>
</tr>
<tr>
<td class="piedStat" colspan="2">
<div class="piedStatBG"></div>
<div class="piedStatBD"></div>
</td>
</tr>
</table>';
?>
5 - Merci