moogli

  • Signature
    Il en faut peu pour être heureux !!!!!
  • Site web
  • Nombre de sujets
    33
  • Nombre de messages
    1 802
  • Nombre de commentaires
    6
  • Nombre de news
    Aucune
  • Niveau en PHP
    Excellent

Ses derniers messages sur les forums

moogli
le 20/11/2004 à 17:25
sauvegarde auto de basedo via robot
SAlut,

tu peut utiliser mysqldump
our te faire un script :
il faut que tu utilise les fonctions show tables, et describe de mysql afin d'avoir le nom des tables et les champ (ainsi que les structure de table ...)

je suis sympa je t'en donne tout fait :
<?php
/***************************************/
/* Fait par moogli le 17/011/2004 */
/* e-mail : moogli_gl@yahoo.fr */
/* Utilitaire dump de bdd */
/***************************************/
$nom_base="";//tu a juste a rentrer ici le nom de la base a sauvegarder!
$table_sql="Tables_in_".$nom_base;
$base = mysql_connect('localhost','root','');
mysql_select_db($nom_base,$base);
//on essai d'avoir toute les tables
$sql = 'SHOW TABLES';
$req = mysql_query($sql) or die ('Erreur sql :'.mysql_error());
$nb_table = mysql_num_rows($req);
//$table=array(array());
//REcupe des noms des tables
while ($data = mysql_fetch_object($req))
{
$table[$data->$table_sql]='';
}
//On a le nom de toute les tables il faut maintenant créer un fichier avec les requetes qui vont avec
//print_r($table);
mysql_free_result($req);

foreach ($table as $nom_table => $champ)
{
//On parcour $table pour avoir la descriptoin de chaque table
$sql_des = 'DESCRIBE '.$nom_table;
$req_des = mysql_query($sql_des) or die ('Erreur sql lors de la description des table :'.mysql_error());
while ($data = mysql_fetch_object($req_des))
{
$table[$nom_table][$data->Field]['Type']=$data->Type;
$table[$nom_table][$data->Field]['Null']=$data->Null;
$table[$nom_table][$data->Field]['Key']=$data->Key;
$table[$nom_table][$data->Field]['Default']=$data->Default;
$table[$nom_table][$data->Field]['Extra']=$data->Extra;
}
mysql_free_result($req_des);

}
//On a la structure de toute les tables on va (pour l'instant) afficher la requete de création de la table avec commentaire avant pour dire le nom de la table :)
//On crée nom de fichier apartir du nom de la base et time stamp pour éviter de niquer u autre fichier
$nom_fichier = $nom_base.'_'.date("U").'.sql';
//Ouverture du fichier
$fp = fopen($nom_fichier,"wb");//création du fichier s'il n'existe pas
//Définition des entetes
$comment_head = '-------------------------------------------------
--
-- Utilitaire de dump de base MySQL (V 1.0)
-- par Moogli => moogli_gl@yahoo.fr
--
-- Base de donnée : '.$nom_base.'
-- Cette base contient '.$nb_table.' table(s).
-- Fichier crée le '.date("d/m/Y").' à '.date("H:i:s")."\n---------------------------------------------------\n\n";
//On met l'entete dans le fichier
fputs($fp,$comment_head);
//$comment_table = "--Struture de la table :";
$i=0;
foreach ($table as $nom_table => $champ)
{
//print_r($champ);
//pour chaque table nom de la table=> $nom_table, nom des champ $champ[]
$structure = 'CREATE TABLE `'.$nom_table.'` (
';
foreach ($champ as $nom_champ=> $value) {
// $clef contient type, null,key,default,extra
$structure.= '`'.$nom_champ.'` '.$champ[$nom_champ]['Type'];
if ($champ[$nom_champ]['Null'] == "") {
$structure .= ' NOT NULL ';
}
else {
$structure .= ' NULL ';
}
$structure .= ' default \''.$champ[$nom_champ]['Default'].'\'';
if ($champ[$nom_champ]['Extra'] != "") $structure .= ' '.$champ[$nom_champ]['Extra'];
$structure .= ',
';
if ($champ[$nom_champ]['Key']=='PRI') $prim_key = $nom_champ;
if ($champ[$nom_champ]['Key']=='KEY') $key .= $nom_champ.',';
$list_champ[$nom_table][]=$nom_champ;
}
//On a presque tout fait on verifie s'il y a ue clef primaire
if (isset($prim_key) && $prim_key!="")
{
$structure .= " PRIMARY KEY (`'.$prim_key.'`)\n";
}
else {
$tructure = substr($structure,0,strlen($struture)-1);//enlève la vigule dû au dernier champ
}
if (isset($key) && $key != '')
{
$tab = explode(',',$key);
foreach($tab as $clef)
{
if ($clef!="") {
$struture .= ",\nKEY (`$clef`)\n";
}
}
}
$structure .= ") TYPE=MyISAM;\n\n";
$structure_table[$nom_table]=$structure;
//recupe de infos a insérer de la table en cours

$sql_sel = 'SELECT * FROM '.$nom_table;
$req_sel = mysql_query($sql_sel) or die ('Erreur selection (pour insert) => '.mysql_error());
if (mysql_num_rows($req_sel)!= 0) {
//On a des données dans la table !
while ($data = mysql_fetch_object($req_sel))
{
$in = 'INSERT INTO '.$nom_table.' VALUES(';
$nb = count($list_champ[$nom_table]);
foreach ($list_champ[$nom_table] as $valeurduchamp)
{
--$nb;
if ($nb !=0){
$in .= '"' . $data->$valeurduchamp .'", ';
}
else {
$in .= '"' . $data->$valeurduchamp .'" ';
}
}
$in .= ");";
$insert[$nom_table][]=preg_replace("/(.)?\\n/","\\r\\n",$in);
//$insert[$nom_table][]=$in;
}
}
else {
//On a aucun tuple on insert dans la table un champ vide
$insert[$nom_table][] = '';
}
mysql_free_result($req_sel);
//Insertion dans le fichier de la structure de la tables ainsi que des données.
$pointille = "-------------------------------------------------";
$comment_table = "--\n--Struture de la table : $nom_table\n--\n\n";
//Insertion dans le fichier de la structure de la table et des info
//Nom de la table
fputs($fp,$comment_table);
//structure de la table
fputs($fp,$structure.'
');
//Contenu de la table
$contenu = "--\n--Contenu de la table :$nom_table\n--\n\n";
$contenu .= join("\n",$insert[$nom_table])."\n$pointille\n";

fputs($fp,$contenu); //addslashes() ?

}
fclose($fp);
mysql_close();
/*
//ne sert que pour les tests
//On met un lien vers le fichier
echo '<a href="./',$nom_fichier,'" target="_blank">Voir le fichier créé ?</a>';
*/
?>


Voila tu peut appeler sa avec une tache cron si ton hébergeur te le permet ou tu te fait truc qui au chargement vérifie s'il faut faire la sauvegarde de la base (pas core fait désolé ...). Il te fait juste un fichier dans lequelle tu met le timestamp (ou date c'est toi qui voit) de l adate ou tu doit faire le save, pis un p'tit if pour comprait le timestamp du fichier et celui actuel !

voila fait bien joujou avec, la suite la semaine prochaine .

je demande juste de laisser l'entête si tu file le script a quelqu'un (meme pour toi !) merci.

Si y a des souci (devrait pas y en avoir sa tourne chez moi) envoie moi un mail (pour éviter que j'oublie le post) avec les erreurs (message ligne ..). je réponderais avant vendredi prochain (du moins jespère :) )

smiley

[Message modifié le 20/11/2004 à 18:36 par LA GLOBULE]
Il en faut peu pour être heureux !!!!!
moogli
le 20/11/2004 à 16:40
V3
salut,

toujours dans la messagerie, un affichape page par page quand tu recherche un membre et que tu a plus de x reponse ! (je viens de faire une recher 506 réponse smiley).

@+
Il en faut peu pour être heureux !!!!!
moogli
le 20/11/2004 à 16:08
imagettftext récalcitrant
Salut,
j'ai bien freetype d'installé. je l'est réinstallé (udpdate en suivant l'aide), j'ai donc la version 2.1.9.

j'ai recompilé php avec la ligne suivante :

./configure --with-config-file-path=/usr/local/apache2/conf --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql --with-enable-ftp --with-zlib --with-gd --enable-gd-native-ttf --with-ttf --with-jpeg-dir --with-png-dir --with-tiff-dir --with-freetype=/usr --with-gif-dir


je regarde le phpinfo et j'ai toujour la meme chose !

est ce qu'il y a un truc qui ne va pas dans mon configure ?

Merci d'avance
smiley
Il en faut peu pour être heureux !!!!!
moogli
le 20/11/2004 à 12:33
Remplacer saut de ligne par \r\n
re, j'ai l'impression que j'ai des bbcode qui ressemble pas mal a ceux de La Globule !

oups ! smiley

smiley
Il en faut peu pour être heureux !!!!!
moogli
le 20/11/2004 à 12:32
Remplacer saut de ligne par \r\n
Désolé pour les étude d'info je pense pas qui voudront de moi (j'ai déja du mal dans discipline !).

Pour la regexp j'ai texter s'a m'affiche bien les \r\n mais j'ai toujours, le saut de ligne !
exemple
sans le bout de code de mojorisin

NSERT INTO commentaire VALUES("3", "8", ":thx: :row_lol: :marteau: :cool2: :boulet2: :cestca: smiley :goodluk: :welcome: :pasbol:
[color=magenta]Un boo text en magenta :)[/color] ", "moogli", "df@df.fr", "2004-10-08 00:54:12" );


avec son code (j'ai modifier, j'ai remplacer \r\r par \r\n :) )

INSERT INTO commentaire VALUES("3", "8", ":thx: :row_lol: :marteau: :cool2: :boulet2: :cestca: smiley :goodluk: :welcome: :pasbol:
\r\r[color=magenta]Un boo text en magenta :)[/color] ", "moogli", "df@df.fr", "2004-10-08 00:54:12" );


moi je voudrait

INSERT INTO commentaire VALUES("3", "8", ":thx: :row_lol: :marteau: :cool2: :boulet2: :cestca: smiley :goodluk: :welcome: :pasbol:\r\r[color=magenta]Un boo text en magenta :)[/color] ", "moogli", "df@df.fr", "2004-10-08 00:54:12" );


j'ai résolu le problème grace a preg_replace("/(.)?\\n/","\\r\\n",$in);

et donc a part le bloc note qui affiche as comme un porc le reste prend bien en compte mes \n dans les chaine de caractères !

Merci pour tout , a tous

smiley
Il en faut peu pour être heureux !!!!!
moogli
le 19/11/2004 à 16:24
Incrementer une variable
ben tu peut utiliser 2 tableaux
par exemple
$bgt[rang du titre][]
$titre[]

tu rentre le titre, s'il n'existe pas, dans le tableau (faut le parcourir) tu récupère la clef du titre ensuite tu rentre dans $bgt les truc qui t'interesse !

exemple
<?php
$titre=array();
while ()
{
$id='';
foreach ($titre as $clef_titre => $valeur)
{
if ($valeur == $row['titre'])
{
$id=$titre;
break;
//faut vérifier si le break peut faire sortir de la boucle foreach, (il sert a éviter de se taper tout le tableau si on a ce que l'on veut !)
}
if ($id=='')
{
//on insère un nouveau titre
$titre[] = $row['titre'];
$id = count($titre) -1;//on a la valeur de la dernière clef introduite!
}
//maitenant que l'on est sur d'avoir l'id du titre on mette la valeur budgetnom dans le tableau bgt
$bgt[$id][]=$row['budgetnom'];
}
}
?>

Je ferais un truc dans le genre (regarde les nom de variable j'ai sabré les majuscule !

Comment sa je suis compliqué smiley

smiley
Il en faut peu pour être heureux !!!!!
moogli
le 19/11/2004 à 14:11
Incrementer une variable
Salut,
tu déclare $bdg avant le while ($bgd='';)

dans le while tu fait $bdg .= $row['BudgetNom'].','

après le while retire la dernière virgule (substr) il me semble !

@+
Il en faut peu pour être heureux !!!!!
moogli
le 19/11/2004 à 13:03
Recherche dans BD
pour le 1 faudrait que tu remplace le caractère manquand par un caractère générique disant qu'a la place de celui ci il y a un carcatère quelconque !

regarde la doc c'est expliqué .

pour le correcteur je pense pas qu'il faille se jeter la dedans (meme word ne reconnais pas tout les mots français donc un site web ...).

je pense que si le gars c'est gourer dans l'ortographe ben y recommence :)

parce que pour tester s'il a y a des mot qui se ressemble avec un carcatère de différent, il faut faire une boucle pour tester chauqe caractère (possible) manquant.
a moins biensur que tu sorte le regexp qui tue:)

bon courage
Il en faut peu pour être heureux !!!!!
moogli
le 19/11/2004 à 12:59
Remplacer saut de ligne par \r\n
lu,


saut de ligne unix en saut de ligne windows.

Je te suis pas trop la ?
je veut que mon texte qui est comme ceci :
une ligne avec blabla
une autre avec blabla

devienne => une ligne avec blabla\r\nune autre ligne avec balabla

je vais suivre ton conseil et chercher du coté des expression regulière !

merci :)

smiley
Il en faut peu pour être heureux !!!!!
moogli
le 19/11/2004 à 12:55
DaForum
pour le taff y a que la globule qui faut remercier :)

pour l'optimisation ben commencer par éviter les test qui servent a rien, pis une interface graphique très légères, sa y fait énormément, ainsi que des tables bien construites des requetes qui ne sont redondantes ...

Bref c'est tout un ensemble :)

Je pense que google peut te donner plus d'infos.

smiley
Il en faut peu pour être heureux !!!!!
LoadingChargement en cours