Vous n'êtes pas identifié(e).
Pages : 1
Merci beaucoup tof73;
Bonjour à tous ;
Dans ma table mysql ,les valeurs de champ time sont sous cette forme: nom-jour,jour, mois,anneé,heure,minute ,Exemple: Wed 14 May 2014 8:02 .
Pouvez-vous me dire comment puise-je le diviser en petits 6 sous-champs: nom-jour,jour, mois,anneé,heure,minute afin de faciliter leur manipulation?
Merci d'avance.
Bonjour;
je réitère ma question !!!
quel intérêt d'avoir plusieurs exemplaires d'une table ????
une table peux contenir plusieurs enregistrements non ?
Vous avez raison, moi personnellement je vois que c'est illogique!, Mysql est conçu pour manipuler des tables pouvant contenir des millions d'enregistrements. Dans mon cas, je n'ai pas besoin de tout ce nombre de tables,mais c'est l'avis de mon responsable qui voulait tester mes compétences en php et de faire marcher le script à tout prix, chose qui est difficile pour moi du moment que je suis débutante.
Merci pour votre intervention.
Salut
quel intérêt d'avoir 2 tables de même structure ?
Je dois respecter la structure de ma table d'origine afin de pouvoir effectuer le transfert des enregistrements.
Merci.
Bonjour à tous;
Merci pour vos réponses;
J'ai fait ce que vous m'avez donné, mais toujours je n'arrive pas à régler le problème! l'insertion se fait uniquement lors de la première exécution de programme.
Salut;
1) Vous avez écrit deux fois la même chose sans utiliser de "flag".
2) Dans quel but ? A quoi cela sert?
Je vous explique:
Moi je veux créer une table appelée 'mdl_log1' de même structure que la table 'mdl_log', puis j'insère les enregistrements qui vérifient ma condition dans cette dernière (mdl_log1) au fur et à mesure que ma table d'origine se remplie de nouveaux enregistrements .
La création de la table mdl_log1 de même structure ne marche pas avec la requête:
.
C'est pour cette raison que j'ai fait deux fois la même chose.
Lors de la première éxécution de mon script, la création et l'insertion des enregistrements se fait le plus normalement du monde, mais les prochaines exécutions :non, Mysql m'affiche toujours le message ''Table 'mdl_log1' already exists" , Alors je voulais développer un mécanisme qui m'aide à régler ce problème d'insertion, j'ai penser à utiliser un flag bienque je ne maîtrise rien de ça , Si ce flag est égal à zéro '0' , c'est-à-dire ma table n'existe pas, alors il va la créer, sinon c-à-d flag=1, ma table existe, il va insérer les enregistrements.
J'espère que vous comprenez mon problème et merci pour votre patience.
Bonjour;
Est ce que je peux faire ça?
function Ma_Fonction($flag)
{
if ($flag = 0)
{
$sql_table= "CREATE TABLE $numero[0] as (SELECT * FROM `moodle`.`mdl_log` WHERE `mdl_log`.`id` >=$VAL_MIN AND `mdl_log`.`id`<=$dx1) ";
$res_sql_table=mysql_query($sql_table);
if($res_sql_table==FALSE)
{die(mysql_error());
mysql_close();}
}
if ($flag = 1)
{
$sql_table1= "INSERT INTO $numero[0] (SELECT * FROM `moodle`.`mdl_log` WHERE `mdl_log`.`id` >=$VAL_MIN AND `mdl_log`.`id`<=$dx1) ";
$res_sql_table1=mysql_query($sql_table1);
if($res_sql_table1==FALSE)
{die(mysql_error());
mysql_close();}
}
echo ' le falg est égal a ' .$flag;
}
Merci beaucoup
Bonjour à tous;
comment utiliser les flags en php?
Merci d'avance.
Bonjour à tous;
Voilà , j'ai écrit un script php qui consiste à insérer les enregistrements depuis une table appelée table1 vers une autre appelée table2 sachant que la table1 est dans la base de données "moodle" et la table2 est dans la base de données "moodle_purge". à la première exécution, la table2 est remplie, mais quand j'ajoute d'autre enregistrements à ma première table manuellement (c-à-d dans phpmyadmin) et que je tente une deuxième exécution de mon script, je remarque que ma deuxième table reste telle qu'elle est c-à-d que les nouveaux enregistrements ne s'insèrent pas.
Voici mon script:
/********création de la table2 de même structure que table1 dans la base de données moodle_purge************/
$sql_cr= "CREATE TABLE IF NOT EXISTS table2 LIKE `moodle`.`table1` ";
$res_sql_cr=mysql_query($sql_cr);
if($res_sql_cr==FALSE)
{die(mysql_error());
mysql_close();}
$sql_ins= "INSERT INTO table2 as (SELECT * FROM `moodle`.`table1` WHERE `TABLE1`.`id` >=$MIN AND `TABLE1`.`id` <=$x1 )";/*$MIN et $x1 changent à chaque nouvelle insertion dans la lable1*/
$res_sql_ins=mysql_query($sql_ins);
if($res_sql_ins==FALSE)
{die(mysql_error());
mysql_close();}
?>
Pouvez-vous me dire qu'est ce qui manque à celui-ci? Merci d'avance.
Salut à tous;
Merci pour vos interventions, maintenant j'ai trouvé la solution à mon problème, voici le script pour ceux qui trouvent le même problème que moi:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<?php
date_default_timezone_set('Africa/Algiers') ;
set_time_limit(0);
$debut= date('H:i:s');
//die();
include ('connection.php');
$db=mysql_select_db("moodle");
///////////////////////////
$sql_min= "SELECT MIN(id) as VAL_MIN FROM mdl_log";
$res_sql_min=mysql_query($sql_min);
if($res_sql_min==FALSE)
{die(mysql_error());
mysql_close();}
$rep_sql_min= mysql_fetch_array($res_sql_min);
mysql_free_result($res_sql_min);
$VAL_MIN=$rep_sql_min['VAL_MIN'];
echo ' Le minimum est= '.$VAL_MIN .'<br>';
$sql_max= "SELECT MAX(id) as VAL_MAX FROM mdl_log";
$res_sql_max=mysql_query($sql_max);
if($res_sql_max==FALSE)
{die(mysql_error());
mysql_close();}
$rep_sql_max= mysql_fetch_array($res_sql_max);
mysql_free_result($res_sql_max);
$VAL_MAX=$rep_sql_max['VAL_MAX'];
echo ' Le maximum est = '.$VAL_MAX .'<br>';
$dx=$VAL_MAX-$VAL_MIN;
echo ' La difference est= '.$dx .'<br>';
$dx1=$VAL_MAX-1000000;
echo ' adr_deb_mdl_log= '.$dx1 .'<br>';
/****************************************************/
//creation des table
/****************************************************/
if ($dx>=1000000)
{
/*
$sql_create=" CREATE TABLE `moodle`.`mdl_log1` as (SELECT * FROM mdl_log WHERE id='9269739')";
$res1=mysql_query($sql_create);
if ($res1==FALSE)
{die(mysql_error());
mysql_close(); }
*/ /****************************************************/
//Insertion des enregistrements dans les table
/****************************************************/
$time=date('i');
$table_name="`moodle`.mdl_log".$time;
$sql_insert="CREATE TABLE $table_name as (SELECT* FROM `moodle`.`mdl_log` WHERE `mdl_log`.`id` >=$VAL_MIN AND `mdl_log`.`id`<=$dx1)";
$res_sql_insert=mysql_query($sql_insert);
if ($res_sql_insert==FALSE)
{die(mysql_error());
mysql_close(); }
/****************************************************/
//suppressiondes enregistrements de la table
/****************************************************/
include ('connection.php');
$db=mysql_select_db("moodle");
$sql_suppr="DELETE FROM `moodle`.`mdl_log` WHERE `mdl_log`.`id`>=$VAL_MIN AND `mdl_log`.`id`<=$dx1";
$res_sql_suppr=mysql_query($sql_suppr);
if ($res_sql_suppr==FALSE)
echo mysql_erreur();
}
mysql_close();
?>
</body>
</html>
Bonsoir;
Merci JC, effectivement vous avez raison de m'avoir posé ce genre de question c'est un test que je dois faire avant de procéder au programme final et puis la structure de la table mdl_log1 ce n'est pas moi qui l'a choisit, j'ai seulement respecté celle de la table d'origine (mdl_log) puisqu'elle est prédéfinie ,je sais très bien que les tables Mysql sont faites pour gérer des millions d’enregistrements , mais l'année passée, on est tombés dans une situation très délicate où notre base de données 'moodle' a craché à cause de nombre d'enregistrements élevé dans la table mdl_log qui a atteint plus de 6000000, je m'explique: on travail dans un établissement d'enseignement à distance , pour cela, on a opté pour une plate-forme d'enseignement en ligne qui est 'moodle', la table 'mdl_log' garde automatiquement l'historique de nos élèves et comme nous avons un nombre énorme d'apprenants (plus de 700000) , le nombre d'enregistrements dans la table augmente au moyenne de 2000000 par jour.Ce qui a causé le problème , alors on était obligés de transmettre le contenu de notre table quotidiennement vers d'autres , mais malheureusement cette opération était manuelle , cette année , nous voulons l'automatiser à l'aide d'un script php qui s’exécutera régulièrement avec cron.
Merci à vous.
Bonjour;
Si j'ai posé ce problème sur le forum, c'est que je suis bloqué et j'ai vraiment besoin d'aide!!!: Merci quand même pour l'intervention!
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:
<?php
date_default_timezone_set('Africa/Algiers') ;
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?
Je suis désolée pour ce long message et merci d'avance.
Pages : 1