begin process at 2012 05 27 18:18:01
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Astuces

 > RÉCUPÈRE LA PLACE PERDU DANS UNE BASE DE DONNÉES MYSQL

RÉCUPÈRE LA PLACE PERDU DANS UNE BASE DE DONNÉES MYSQL


 Information sur la source

Note :
1 / 10 - par 1 personne
1,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Astuces Classé sous :MySQL, Recuperer, base-dedonnées, phpmysql, codesource Niveau :Initié Date de création :09/10/2009 Vu :2 815

Auteur : aminecherche

Ecrire un message privé
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

 Description

En supprimant des données dans une table MySQL on se retrouve avec de la place perdue. Dans phpMyAdmin, la liste des tables contient la colonne "Perte" qui indique la taille perdue.
Ce script permet donc d'optimiser toutes les tables d'une base de données et de gagner un peut de place

Source

  • $sql_serveur = "à renseigner"; // Serveur mySQL
  • $sql_base = "à renseigner"; // Base de données mySQL
  • $sql_login = "à renseigner"; // Login de connection a mySQL
  • $sql_password = "à renseigner"; // Mot de passe pour mySQL
  • $lk = @mysql_connect($sql_serveur, $sql_login, $sql_password) or die(mysql_error
  • ());
  • @mysql_select_db($sql_base, $lk) or die(mysql_error());
  • ?>
  • <html>
  • <head>
  • <title>Récupère la place perdu dans une base de données MySQL</title>
  • <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  • </head>
  • <body>
  • <?php
  • //on prépare la requête
  • $sql = "OPTIMIZE TABLE ";
  • //on recherche toutes les données des tables
  • $req = mysql_query('SHOW TABLE STATUS', $lk);
  • while($data = mysql_fetch_assoc($req)) {
  • //on regarde seulement les tables qui affichent des pertes
  • if($data['Data_free'] > ) {
  • //et on l'inclut si elle comporte des pertes
  • $sql .= '`'.$data['Name'].'`, ';
  • echo $data['Name'] . "<br>\n";
  • }
  • }
  • //on enlève le ', ' de trop
  • $sql = substr($sql, , (strlen($sql)-2));
  • //et on optimise
  • mysql_query($sql, $lk);
  • mysql_close($lk);
  • ?>
  • </body>
  • </html>
$sql_serveur = "à renseigner"; // Serveur mySQL 
$sql_base = "à renseigner"; // Base de données mySQL 
$sql_login = "à renseigner"; // Login de connection a mySQL 
$sql_password = "à renseigner"; // Mot de passe pour mySQL

$lk = @mysql_connect($sql_serveur, $sql_login, $sql_password) or die(mysql_error
());
@mysql_select_db($sql_base, $lk) or die(mysql_error());
?> 
<html>
<head>
<title>Récupère la place perdu dans une base de données MySQL</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
//on prépare la requête
$sql = "OPTIMIZE TABLE ";
//on recherche toutes les données des tables
$req = mysql_query('SHOW TABLE STATUS', $lk);
while($data = mysql_fetch_assoc($req)) {
    //on regarde seulement les tables qui affichent des pertes
    if($data['Data_free'] > ) {
        //et on l'inclut si elle comporte des pertes
        $sql .= '`'.$data['Name'].'`, ';
        echo $data['Name'] . "<br>\n";
    }
}
//on enlève le ', ' de trop
$sql = substr($sql, , (strlen($sql)-2));
//et on optimise
mysql_query($sql, $lk);
mysql_close($lk);
?>
</body>
</html>



 Sources de la même categorie

AFFICHÉ SUR UN TABLEAU AVEC PAGINATION ET BASE DE DONNÉES par stormxp
Source avec Zip Source avec une capture GENERATEUR D'ONGLET DE NAVIGATION PHP par pos123
FORMATER UN LIEN YOUTUBE, DAILYMOTION OU VIMEO POUR L'UTILIS... par kgb93
Source avec Zip Source avec une capture PAGINATION + FICHIER CSS par profdi
Source avec Zip Source avec une capture SYSTEME D'AUTHENTIFICATION PHP AVEC PROTÉCTION KEYLOGGER par mtrix000

 Sources en rapport avec celle ci

Source avec Zip GÉNÉRATION AUTOMATIQUE DE FICHIER .CLASS.PHP EN FONCTION D'U... par ig3
Source avec Zip CLASS PHP :: REQUÊTES MYSQL par devgoneti
Source avec Zip RECHERCHE DES DOUBLONS DANS UNE TABLE MYSQL EN SÉLECTIONNANT... par aladec2007
Source avec Zip Source avec une capture EL COYOTOS LIVRE D'OR PHP 5 par elcoyotos
Source avec Zip CLASS MYSQL 5/PHP5 AVEC GESTION DES EXCEPTION ET DES REQUÊTE... par devil_may_cry

Commentaires et avis

Commentaire de Vavavlp le 10/10/2009 11:35:06

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 ;)

Cordialement,
Vavavlp

Commentaire de Vavavlp le 10/10/2009 11:36:25

Mince il y a pas de fonction édit ^^'

Là je sais pas si ça vient du code ou du site mais faudrait indenter aussi.

Commentaire de pgassie le 11/10/2009 22:25:23

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>
<body>
<h1>Optimisation de la Base <i><?php echo $base ;?> </i></h1>
<table>
<tr><th>Nom de la table</th><th> Place perdue </th><th> Traitée </th></tr>
<?php
$connexion = @mysql_connect($serveur, $utilisateur, $mot_de_passe)
or die("<br />\n<a href='retour.html'>CONTINUER</a>".mysql_error()."\n</body>\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 "<tr><td>".$ligne['Name'] . "</td><td>". $ligne['Data_free']."</td><td>";
if($ligne['Data_free'] >0 ) {//on ne garde que les tables qui affichent des pertes
echo "oui</td></tr>\n";
$ok=true;
$requete .= '`'.$ligne['Name'].'`, ';
}else echo "non</td></tr>\n";
}
echo"\n</table>\n";
//on enlève le ', ' de trop - peut-être à améliorer
$requete = substr($requete, 0, (strlen($requete)-2));
if ($ok) {  //et on optimise
  echo "<br />\n<br />\n<br />\nTraitement : `".$requete . "` effectué.<br />\n";
  mysql_query($requete, $connection);
} else echo "<br />\n<br />\n<br />\nAucun traitement à faire.<br />\n";
mysql_close($connection);
?>
</body>
</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 !

Commentaire de mountainmagazin le 12/10/2009 09:18:34

Pour retirer un virgule en fin de chaine, tu peux utiliser :

rtrim ( $sql, ", ");

Commentaire de Vonscott le 18/10/2009 03:40:37 1/10

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.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Pb avec tableau [ par nicotango ] Bonjour,je suis débutant en php et j'ai un petit soucis :je veux ecrire des donnees recuperer dans une table et les mettre dans un tableau (jusque là recuperer la clef primaire d un enregistrement juste apres l avoir inserer [ par OncleDude ] bonjour, je voudrai envoyer une valeur vers une table sql puis ensuite recuperer sa clef primaire. alors j'ai fait une premiere Requete : &nbsp;&nbs recuperer l'id d'un INSERT ? [ par Joez ] Bonjour, voila je veux recuperer l'id de l'occurence que je viens d'ajouter dans une table mysql par la commander INSERTest ce possible ?mysql_query(" Comment recuperer les informations generees par la procedure stockee (Mysql) dans un prog PHP [ par ed1982 ] Bonjour,J ai un autre probleme qui ressemble au precedent. Comment recuperer les informations generees par la procedure stockee (Mysql) dans un prog P recuperer une BDD mysql d'un pc planté [ par badziz ] Salut!mon pc a planté et le seul moyen de récupérer mes données a été d'utiliser un logiciel pro. J'ai donc récupéré mes pages PHP par contre la BDD j Recuperer un resultat avec les checkbox [ par bdieng ] Bonjour,je suis entrain de concevoir un site web dynamique.mon probleme peut etre décrit comme suit :je genere dynamiquement un formulaire affichant l Recuperer 2 variable [ par webdoordi ] Bonjour, mon probleme est que je dois recuper 2 données a partir de la meme table sql Exemple contenu de la table sql: p_id -- item  -- Wear1 -- recuperer le resulta d'un select count dans une variable [ par Abdoul86 ] Bonjour j'ai besoin de recuperer le resultat que va me donner ma requete mais j'y arrive[^^sad1] j'aurai besoin d'aide $sql="SELECT COUNT(codescte) F PHP ET MYSQL [ par Zeus1973 ] bonjour a tous voila je trav sur mon exam et je voudrais recuperer une liste de noms dans ma base de donnée mysql et les avoirs comme liens a l'affich Recuperer des info from une base mysql [ par Oasis3000 ] Bonjour,J'ai r&#233;ussi &#224; faire la requete MySQL pour prendre les infos (login,prenom,sexe) dans ma tablemais je voudrais les noter de fa&#231;o


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,936 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales