Vonscott
Messages postés61Date d'inscriptionvendredi 6 janvier 2006StatutMembreDernière intervention19 septembre 2011 18 oct. 2009 à 03:40
ouias, pas convaincu, peut etre utile pour des clients n'ayant pas acces au phpmyadmin.
Quant au niveau initié, faudrait voir à pas pousser mémé dans les orties non plus, un code de débutant que l'on trouve partout.
Une page html pour ca ? Le code aurait pu etre integrer dans une fonction appellée par la page.
mountainmagazin
Messages postés6Date d'inscriptionvendredi 24 septembre 2004StatutMembreDernière intervention29 décembre 2008 12 oct. 2009 à 09:18
Pour retirer un virgule en fin de chaine, tu peux utiliser :
rtrim ( $sql, ", ");
pgassie
Messages postés12Date d'inscriptionmardi 28 octobre 2003StatutMembreDernière intervention13 décembre 2006 11 oct. 2009 à 22:25
Certainement des problèmes d'éditeur font que le code proposé ne marche pas.
J'ai donc ré-écrit le code suivant :
------------------------------------------------------------------------
<?php
//utilisation http://localhost/[test]/optibase.php[?b= mabase]
// [test] étant l'allias de votre connexion PHP locale
// Serveur mySQL à renseigner
$serveur = "localhost";
// Base de données mySQL à renseigner
if((isset($_GET['b']))&&(!empty($_GET['b'])))$base = $_GET['b']; else $base = "mysql";
// Login de connexion à renseigner
$utilisateur = "root";
// Mot de passe pour mySQL à renseigner
$mot_de_passe = "";
?>
<html>
<head>
<title>Récupère la place perdue dans une base de données MySQL</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style>
table, td, th {border:4px inset grey;margin:0 auto;}
h1 {text-align:center;}
</style>
</head>
Optimisation de la Base <?php echo $base ;?>
Nom de la table |Place perdue |Traitée |
<?php
$connexion = @mysql_connect($serveur, $utilisateur, $mot_de_passe)
or die(\"
\nCONTINUER\".mysql_error().\"\n\n</html> \");
//'retour.html' à renseigner
$ok=false;
//on prépare la requête
$requete= \"OPTIMIZE TABLE \";
//on recherche toutes les données des tables
$resultat = mysql_query('SHOW TABLE STATUS FROM '.$base.';');
while($ligne = mysql_fetch_assoc($resultat)) {
echo \"----
".$ligne['Name'] . ", ". $ligne['Data_free'].", ";
if($ligne['Data_free'] >0 ) {//on ne garde que les tables qui affichent des pertes
echo "oui, \n\";
$ok=true;
$requete .= '`'.$ligne['Name'].'`, ';
}else echo \"non</td>\n\";
}
echo"\n
\n";
//on enlève le ', ' de trop - peut-être à améliorer
$requete = substr($requete, 0, (strlen($requete)-2));
if ($ok) { //et on optimise
echo "
\n
\n
\nTraitement : `".$requete . "` effectué.
\n";
mysql_query($requete, $connection);
} else echo "
\n
\n
\nAucun traitement à faire.
\n";
mysql_close($connection);
?>
Spécialement pour Vavavlp,j'ai amélioré la fonction die ( qui ne revenant pas, fabrique une page mal formée ).
Quelques autres petites astuces pour grands débutants.
J'utilise <table> qui n'est pas du tout "deprecated".
Inutile de gérer les lettres accentuées, ce programme est fait pour être en local ; par contre le $serveur peut commencer par "http:" et optimiser une base en ligne.
Vavavlp
Messages postés16Date d'inscriptionsamedi 8 septembre 2007StatutMembreDernière intervention27 avril 2009 10 oct. 2009 à 11:36
Mince il y a pas de fonction édit ^^'
Là je sais pas si ça vient du code ou du site mais faudrait indenter aussi.
Vavavlp
Messages postés16Date d'inscriptionsamedi 8 septembre 2007StatutMembreDernière intervention27 avril 2009 10 oct. 2009 à 11:35
But du code intéressant, pouvant être utile sur des sites utilisant le sql pour stocker des données temporaires.
Toutefois quelques remarques:
- Tu oublies le <?php de départ,
- die(mysql_error()); avant même d'avoir afficher la balise <html> :s
- mysql_ pdo serai mieux quand même,
- pas de xHTML,
- if($data['Data_free'] > ) on a le droit ?? faut pas un zéro (je suis pas sur jamais essayer ^^).
Voila avec ces quelques amélioration ça fera un code bien pratique ;)
18 oct. 2009 à 03:40
Quant au niveau initié, faudrait voir à pas pousser mémé dans les orties non plus, un code de débutant que l'on trouve partout.
Une page html pour ca ? Le code aurait pu etre integrer dans une fonction appellée par la page.
12 oct. 2009 à 09:18
rtrim ( $sql, ", ");
11 oct. 2009 à 22:25
J'ai donc ré-écrit le code suivant :
------------------------------------------------------------------------
<?php
//utilisation http://localhost/[test]/optibase.php[?b= mabase]
// [test] étant l'allias de votre connexion PHP locale
// Serveur mySQL à renseigner
$serveur = "localhost";
// Base de données mySQL à renseigner
if((isset($_GET['b']))&&(!empty($_GET['b'])))$base = $_GET['b']; else $base = "mysql";
// Login de connexion à renseigner
$utilisateur = "root";
// Mot de passe pour mySQL à renseigner
$mot_de_passe = "";
?>
<html>
<head>
<title>Récupère la place perdue dans une base de données MySQL</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style>
table, td, th {border:4px inset grey;margin:0 auto;}
h1 {text-align:center;}
</style>
</head>
Optimisation de la Base <?php echo $base ;?>
Nom de la table |Place perdue |Traitée |
<?php
$connexion = @mysql_connect($serveur, $utilisateur, $mot_de_passe)
or die(\"
\nCONTINUER\".mysql_error().\"\n\n</html> \");
//'retour.html' à renseigner
$ok=false;
//on prépare la requête
$requete= \"OPTIMIZE TABLE \";
//on recherche toutes les données des tables
$resultat = mysql_query('SHOW TABLE STATUS FROM '.$base.';');
while($ligne = mysql_fetch_assoc($resultat)) {
echo \"----
".$ligne['Name'] . ", ". $ligne['Data_free'].", ";
if($ligne['Data_free'] >0 ) {//on ne garde que les tables qui affichent des pertes
echo "oui, \n\";
$ok=true;
$requete .= '`'.$ligne['Name'].'`, ';
}else echo \"non</td>\n\";
}
echo"\n
\n";
//on enlève le ', ' de trop - peut-être à améliorer
$requete = substr($requete, 0, (strlen($requete)-2));
if ($ok) { //et on optimise
echo "
\n
\n
\nTraitement : `".$requete . "` effectué.
\n";
mysql_query($requete, $connection);
} else echo "
\n
\n
\nAucun traitement à faire.
\n";
mysql_close($connection);
?>
</html>
------------------------------------------------------------------------
Spécialement pour Vavavlp,j'ai amélioré la fonction die ( qui ne revenant pas, fabrique une page mal formée ).
Quelques autres petites astuces pour grands débutants.
J'utilise <table> qui n'est pas du tout "deprecated".
Inutile de gérer les lettres accentuées, ce programme est fait pour être en local ; par contre le $serveur peut commencer par "http:" et optimiser une base en ligne.
Plus là : http://www.phpcs.com/forum/sujet-SAVOIR-QUAND-ON-DOIT-OPTIMISER-TABLE-MYSQL_483594.aspx
Programmez, prenez de la peine...
Amusez-vous bien !
10 oct. 2009 à 11:36
Là je sais pas si ça vient du code ou du site mais faudrait indenter aussi.
10 oct. 2009 à 11:35
Toutefois quelques remarques:
- Tu oublies le <?php de départ,
- die(mysql_error()); avant même d'avoir afficher la balise <html> :s
- mysql_ pdo serai mieux quand même,
- pas de xHTML,
- if($data['Data_free'] > ) on a le droit ?? faut pas un zéro (je suis pas sur jamais essayer ^^).
Voila avec ces quelques amélioration ça fera un code bien pratique ;)
Cordialement,
Vavavlp