SAUVEGARDE D'UNE BASE MYSQL

RaphAstronome Messages postés 104 Date d'inscription samedi 7 décembre 2002 Statut Membre Dernière intervention 17 août 2009 - 3 janv. 2003 à 19:28
Gallient Messages postés 15 Date d'inscription vendredi 29 avril 2005 Statut Membre Dernière intervention 7 novembre 2007 - 22 août 2008 à 11:04
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/13076-sauvegarde-d-une-base-mysql

Gallient Messages postés 15 Date d'inscription vendredi 29 avril 2005 Statut Membre Dernière intervention 7 novembre 2007
22 août 2008 à 11:04
Ne fonctionne pas sur PHP 5.2.6
cs_Thienou Messages postés 69 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 12 février 2010
13 juil. 2007 à 15:50
Fonctionne très bien et il est très simple, bravo.
cs_Samx Messages postés 1 Date d'inscription vendredi 7 mars 2003 Statut Membre Dernière intervention 6 septembre 2006
6 sept. 2006 à 02:31
bip bilip bip bip >>> Nouvelle de dernière heure: Ce script fonctionne à merveille sur PHP5
gostsn Messages postés 22 Date d'inscription lundi 23 mai 2005 Statut Membre Dernière intervention 6 mars 2011
12 juin 2006 à 03:22
Super!
G passer deux heures a chercher un script SIMPLE pour télécharger ma db cotidiennement!
Bravo!

NB: pour uploader des grosse pas de donnée je vous conseil http://www.ozerov.de/bigdump.php C très simple.
jib0403 Messages postés 2 Date d'inscription mardi 28 juin 2005 Statut Membre Dernière intervention 28 juin 2005
28 juin 2005 à 14:02
le script marche super bien
merci beaucoup
seulement j'aurais besion que le script s'enregistre tout seul à un endroit
merci
figo57 Messages postés 1 Date d'inscription mercredi 24 mars 2004 Statut Membre Dernière intervention 29 juillet 2004
29 juil. 2004 à 14:51
bonjour, je trouve ce script très sympa, cependant j'ai un problème au niveau de l'enrgistrement en local...
Je n'arrive pas à enregistrer ma base en .sql......
comment fait-on... il me dit obligatoirement d'enregsitrer ça au format html.....

merci d'avance!!
beleeette Messages postés 2 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 6 juillet 2004
6 juil. 2004 à 19:00
Protéger les noms des tables et des champs par des "`" peut se retrouver utile.

C'est une bete modif des 2 fonctions:

function get_table_structure($db, $table){
global $drop;

$schema_create = "";
if(!empty($drop))
$schema_create .= "DROP TABLE IF EXISTS `$table`;\n";

$schema_create .= "CREATE TABLE `$table` (\n";

$result = mysql_db_query($db, "SHOW FIELDS FROM `$table`") or mysql_die();
while($row = mysql_fetch_array($result))
{
$schema_create .= " `$row[Field]` $row[Type]";

if(isset($row["Default"]) && (!empty($row["Default"]) || $row["Default"] == "0"))
$schema_create .= " DEFAULT '$row[Default]'";
if($row["Null"] != "YES")
$schema_create .= " NOT NULL";
if($row["Extra"] != "")
$schema_create .= " $row[Extra]";
$schema_create .= ",\n";
}
$schema_create = ereg_replace(",\n$", "", $schema_create);
$result = mysql_db_query($db, "SHOW KEYS FROM `$table`") or mysql_die();
while($row = mysql_fetch_array($result))
{
$kname=$row['Key_name'];
if(($kname !"PRIMARY") && ($row['Non_unique'] 0))
$kname="UNIQUE|$kname";
if(!isset($index[$kname]))
$index[$kname] = array();
$index[$kname][] = $row['Column_name'];
}

while(list($x, $columns) = @each($index))
{
$schema_create .= ",\n";
if($x == "PRIMARY")
$schema_create .= " PRIMARY KEY (" . implode($columns, ", ") . ")";
elseif (substr($x,0,6) == "UNIQUE")
$schema_create .= " UNIQUE ".substr($x,7)." (" . implode($columns, ", ") . ")";
else
$schema_create .= " KEY $x (" . implode($columns, ", ") . ")";
}

$schema_create .= "\n)";
return (stripslashes($schema_create));
}

function get_table_content($db, $table){
$result = mysql_db_query($db, "SELECT * FROM $table") or mysql_die();
$i = 0;
while($row = mysql_fetch_row($result))
{
$table_list = "(";

for($j=0; $j<mysql_num_fields($result);$j++)
$table_list .= "`".mysql_field_name($result,$j)."`, ";

$table_list = substr($table_list,0,-2);
$table_list .= ")";

if(isset($GLOBALS["showcolumns"]))
$schema_insert = "INSERT INTO`$table` $table_list VALUES (";
else
$schema_insert = "INSERT INTO `$table` VALUES (";

for($j=0; $j<mysql_num_fields($result);$j++)
{
if(!isset($row[$j]))
$schema_insert .= " NULL,";
elseif($row[$j] != "")
$schema_insert .= " '".addslashes($row[$j])."',";
else
$schema_insert .= " '',";
}
$schema_insert = ereg_replace(",$", "", $schema_insert);
$schema_insert .= ")";
echo trim($schema_insert).";\n";
$i++;
}
return (true);
}
cs_Jackboy Messages postés 757 Date d'inscription vendredi 7 septembre 2001 Statut Membre Dernière intervention 19 juin 2008
7 sept. 2003 à 15:18
est'il possible, dans le meme principe, de faire un update de la base de donnée, autrement dit de faire le contraire, de mon disque dur au serveur ?!?
cs_iubito Messages postés 629 Date d'inscription mercredi 3 juillet 2002 Statut Membre Dernière intervention 9 octobre 2006
23 juin 2003 à 11:10
justement, le seul endroit où g eu un problème avec une GROSSE table (4 méga), c pas dans l'export vers .SQL mais dans l'import.
Si je met dans phpmyadmin "insertion étendues" (= ne répète pas les insert into) ça met trop de temps pour faire la requête et ça plante. Si je met pas les insertion étendues çà fait pleins de requêtes mais ça passe !
flagada42 Messages postés 15 Date d'inscription lundi 31 décembre 2001 Statut Membre Dernière intervention 23 juin 2003
23 juin 2003 à 10:54
modif pour ne pas avoir insert into répéter à chaque fois :

function get_table_content($db, $table)
{

$result = mysql_db_query($db, "SELECT * FROM $table") or mysql_die();
$i = 0;
$no_passage = 1 ;
$row = mysql_fetch_row($result) ;

while($row)
{
$table_list = "(";

for($j=0; $j<mysql_num_fields($result);$j++)
{
$table_list .= mysql_field_name($result,$j).", ";
}
$table_list = substr($table_list,0,-2);
$table_list .= ")";


if ($no_passage == 1)
{
if(isset($GLOBALS["showcolumns"]))
{
$schema_insert = "INSERT INTO $table $table_list VALUES
(";
}
else
{
$schema_insert = "INSERT INTO $table VALUES
(";
}
}
else
{
$schema_insert = "(" ;
}
$no_passage ++ ;

for($j=0; $j<mysql_num_fields($result);$j++)
{
if(!isset($row[$j]))
{
$schema_insert .= " NULL,";
}
elseif($row[$j] != "")
{
$schema_insert .= " '".addslashes($row[$j])."',";
}
else
{
$schema_insert .= " '',";
}
}
$schema_insert = ereg_replace(",$", "", $schema_insert);
$schema_insert .= ")";

$row = mysql_fetch_row($result) ;
if ($row)
{
echo trim($schema_insert).",
";
}
else
{
echo trim($schema_insert).";
";
}
$i++;
}
return (true);
}
cs_FleX Messages postés 35 Date d'inscription vendredi 22 février 2002 Statut Membre Dernière intervention 17 mars 2003
6 mars 2003 à 11:40
Trop mortel !! super pratique en cas de modif :) 10/10
cs_Enishi Messages postés 7 Date d'inscription mardi 24 octobre 2000 Statut Membre Dernière intervention 29 juin 2003
13 févr. 2003 à 22:11
Merci pour le code, très utile!
birdyz Messages postés 42 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 4 septembre 2006
17 janv. 2003 à 15:15
en tout cas, je viens de tester ce code sur une base de 1.3 Mo, et ca marche niquel. Merci pour ce code
cs_iubito Messages postés 629 Date d'inscription mercredi 3 juillet 2002 Statut Membre Dernière intervention 9 octobre 2006
6 janv. 2003 à 18:01
ah bon ça chie au dessus d'1 Mo ?
tu m'inkiètes là parce que ma base chez free fait facilement 800 ko actuellement et ça va grOssir
pi0up51 Messages postés 103 Date d'inscription vendredi 13 juillet 2001 Statut Membre Dernière intervention 26 août 2003
4 janv. 2003 à 10:03
Ze demanderais : est-ce que ça marche comme phpmyadmin ou comme eskuel ??
Pcqe phpmyadmin dès que la base fait plus d'1Mo ça se chie dessus :P
RaphAstronome Messages postés 104 Date d'inscription samedi 7 décembre 2002 Statut Membre Dernière intervention 17 août 2009
3 janv. 2003 à 19:28
Pratique avant de faire une modif risquée
Ca marche lorsqu'on à droit qu'a 1 base de données ?
Rejoignez-nous