Les boucles en php
Posté : 15 sept. 2014, 10:10
Bonjour à tous;
Voilà , j'ai écris un script php qui a pour but de compter le nombre d'enregistrements dans une table qui s'appelle "mdl_log" de ma base de données "moodle" , si ce nombre dépasse 100000, alors il crée une nouvelle table appelée "mdl_log1" , il insère les 100000 premiers enregistrements dans cette dernière puis il les supprime dans la table d'origine ,c'est à dire dans "mdl_log". Voici mon script:
Pourrez-vous me dire comment améliorer mon script afin qu'il réponde à mes besoins?
Désolé pour ce long message et merci d'avance.
Voilà , j'ai écris un script php qui a pour but de compter le nombre d'enregistrements dans une table qui s'appelle "mdl_log" de ma base de données "moodle" , si ce nombre dépasse 100000, alors il crée une nouvelle table appelée "mdl_log1" , il insère les 100000 premiers enregistrements dans cette dernière puis il les supprime dans la table d'origine ,c'est à dire dans "mdl_log". Voici mon script:
set_time_limit(0);
$debut= date('H:i:s');
//die();
include ('connection.php');
$db=mysql_select_db("moodle");
///////////////////////////
$sql_cpt= "SELECT COUNT(id) as NBR FROM mdl_log";
$res_sql_cpt=mysql_query($sql_cpt);
if($res_sql_cpt==FALSE)
{die(mysql_error());
mysql_close();}
$rep_sql_cpt= mysql_fetch_array($res_sql_cpt);
{
mysql_free_result($res_sql_cpt);
$NBR=$rep_sql_cpt['NBR'];
echo ' nbr= '.$NBR;
}
if($NBR>=100000)
{
$sql_create="CREATE TABLE `moodle`.`mdl_log1` (`id` bigint( 10 ) NOT NULL AUTO_INCREMENT ,`time` bigint( 10 ) NOT NULL DEFAULT '0',`userid` bigint( 10 ) NOT NULL DEFAULT '0',`ip` varchar( 45 ) NOT NULL DEFAULT '',`course` bigint( 10 ) NOT NULL DEFAULT '0',`module` varchar( 20 ) NOT NULL DEFAULT''`cmid` bigint( 10 ) NOT NULL DEFAULT '0',`action` varchar( 40 ) NOT NULL DEFAULT '',`url` varchar( 100 ) NOT NULL DEFAULT '',`info` varchar( 255 ) NOT NULL DEFAULT '',PRIMARY KEY ( `id` ) ,KEY `mdl_log_coumodact_ix` ( `course` , `module` , `action` ) ,
KEY `mdl_log_tim_ix` ( `time`),KEY`mdl_log_act_ix` ( `action` ) ,
KEY `mdl_log_usecou_ix` ( `userid` , `course` ) ,
KEY `mdl_log_cmi_ix` ( `cmid` ))";
$res1=mysql_query($sql_create);
if ($res1==FALSE)
echo mysql_error();
$sql_insert="INSERT INTO `moodle`.`mdl_log1` (SELECT* FROM `moodle`.`mdl_log` WHERE `mdl_log`.`id` >=1 AND `mdl_log`.`id`<=100000)
";
$res_sql_insert=mysql_query($sql_insert);
if ($res_sql_insert==FALSE)
echo mysql_erreur();
mysql_close();
$sql_suppr="DELETE FROM `moodle`.`mdl_log` WHERE `mdl_log`.`id`>=1 AND `mdl_log`.`id`<=100000";
$res_sql_suppr=mysql_query($sql_suppr);
if ($res_sql_suppr==FALSE)
echo mysql_erreur();
}
}
mysql_close();
Sachant que le champs 'id' est incrémenté automatiquement et que le nombre d'enregistrements augmente d'une manière rapide , par conséquent , j'aurais besoin de plusieurs tables et pas seulement d'une seule comme je l'ai fait dans le script et que les enregistrements à insérer seront toujours les 100000 premiers: Je m'explique: pour la première table mdl_log1, les enregistrements à insérer commenceront à partir de 1 jusqu'à 100000. Pour la deuxième table mdl_log2, les enregistrements à insérer commenceront à partir de 100001 à 200001 et ainsi de suite..Pourrez-vous me dire comment améliorer mon script afin qu'il réponde à mes besoins?
Désolé pour ce long message et merci d'avance.