cs_lanner
Messages postés131Date d'inscriptionsamedi 16 avril 2005StatutMembreDernière intervention 8 avril 2015
-
16 mars 2011 à 14:26
cs_christobal
Messages postés208Date d'inscriptionjeudi 3 octobre 2002StatutMembreDernière intervention31 mars 2011
-
28 mars 2011 à 08:38
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_christobal
Messages postés208Date d'inscriptionjeudi 3 octobre 2002StatutMembreDernière intervention31 mars 2011 28 mars 2011 à 08:38
@theptitprince
:D je ne souhaite pas faire un simple dump de ma base (elle est archivé quotidiennement) mais uniquement sauvegarder les tables propre a un client "prefix" a un instant.
Le tout est dans une fonction qui archive la db puis les supprimes :)
cs_theptitprince
Messages postés14Date d'inscriptiondimanche 3 décembre 2006StatutMembreDernière intervention 5 janvier 2012 27 mars 2011 à 23:53
Merci a tous pour vos commentaire et vos notes :)
@ Christobal :
Je ne vois pas vraiment l'utilité d'une close LIKE puisque le but est de sauvegarder l'intégralité d'un base SQL.
Cependant, je pense en effet qu'il est possible de mettre une close LIKE, mais pas avec un ' WHERE '.$table[0] puisque $table[0] est le nom de la table... Il faut mettre un nom de colonne, et encore...
Pour obtenir le nom de la colonne, tu peux passer par un explode(",",$donnee_structure[1])... Mais tu serais après obligé pendant toute la sauvegarde de faire un like d'un numéro de colonne fixe sans pouvoir changer de colonne, a condition que la dite colonne existe...
Quoiqu'il en soit, je n'en vois pas une grande utilité pour une sauvegarde.... Peux-tu me dire pourquoi tu as besoin d'un LIKE?
@ Autre:
Je ne sais pas si free permet de changer l'allocation maximale... C'est assez bridé Free de ce que je m'en souviens...
cs_christobal
Messages postés208Date d'inscriptionjeudi 3 octobre 2002StatutMembreDernière intervention31 mars 2011 27 mars 2011 à 23:50
Pfff, pô les yeux en face des trous ce soir.
bon le plus simple c'est de le mettre dans "$req_table" :
cs_christobal
Messages postés208Date d'inscriptionjeudi 3 octobre 2002StatutMembreDernière intervention31 mars 2011 27 mars 2011 à 23:39
C'est parfait, exactement se que j'avais besoin.
Juste une chose dans "$req_tout" vous pensez qu'il est possible de mettre une close where et LIKE du style :
$req_tout = 'SELECT * FROM ' . $table[0] . ' WHERE ' . $table[0] . ' LIKE \'' . $prefix. '%\' ' ;
parce que je n'y arrive pô :)
merki
cs_RudiRatlos
Messages postés6Date d'inscriptionvendredi 17 février 2006StatutMembreDernière intervention10 décembre 2007 26 mars 2011 à 09:40
parfait :) 10/10
pmtjnden
Messages postés14Date d'inscriptionlundi 28 mars 2005StatutMembreDernière intervention 4 juillet 2011 21 mars 2011 à 17:53
bravo pour le script... ca marche super en local.
Je vais voir si je trouve une solution pour Free...(je la déposerais ici)
Si quelqu'un a une idée je suis preneur.
pmtjnden
Messages postés14Date d'inscriptionlundi 28 mars 2005StatutMembreDernière intervention 4 juillet 2011 21 mars 2011 à 17:38
bonjour,
quelque soit la taille que l'on alloue (même si on enlève la ligne d'allocation mémoire) sur Free, un message d'erreur apparait :
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 1024 bytes) in /mnt/160/sdb/9/8/nomdusite/chemin/page.php on line xxx (48)
la ligne xxx correspondant à la ligne :
while($donnees_tout = mysql_fetch_array($result_tout)){
en cas de grosse base....
ou à la ligne (61) :
$tout_contenu = str_replace(',);',');',$tout_contenu);
en cas de base plus petite
cs_lanner
Messages postés131Date d'inscriptionsamedi 16 avril 2005StatutMembreDernière intervention 8 avril 2015 18 mars 2011 à 12:42
ah ben sous dreamweaver on voit bien le bug la colorisation de syntaxe en prend un coup si on ne fait pas ce que j'ai marqué .. enfin bref c'est juste l'information , la correction
Pour moi la variable c'est forcement :
Ligne 13
$tout_contenu ="";
vincseize
Messages postés113Date d'inscriptionmardi 25 février 2003StatutMembreDernière intervention28 mars 2010 18 mars 2011 à 01:55
et suite non non
$tout_contenu = '';
vincseize
Messages postés113Date d'inscriptionmardi 25 février 2003StatutMembreDernière intervention28 mars 2010 18 mars 2011 à 01:55
cs_lanner
Messages postés131Date d'inscriptionsamedi 16 avril 2005StatutMembreDernière intervention 8 avril 2015 17 mars 2011 à 21:17
re-Coucou
PS : petite faute dans cette partie , un ' de trop :) > $tout_contenu =""';
vincseize
Messages postés113Date d'inscriptionmardi 25 février 2003StatutMembreDernière intervention28 mars 2010 17 mars 2011 à 18:54
Le truc en fait,
ce serait de detecter si la conf serveur est en agic quote ou non
car la mon patch (un peu grave vite fait), evites les erreurs , mais
retire tous les guillemets du coup ...
ceci dit
je pense que c'est à l insert de données avant dans la base, donc le fameux addslash
auquel il faut penser ds le cas de magic_quotes on ou off
:)
cs_theptitprince
Messages postés14Date d'inscriptiondimanche 3 décembre 2006StatutMembreDernière intervention 5 janvier 2012 17 mars 2011 à 18:48
En effet, je n'y ai pas pensé des le début (en fait, j'ai tiré ce script de mon site, et les variables contenu et $structure et $tout_contenu sont initialisés des le lancement de index.php. Je rajoute donc!
Merci de la remarque pour les slashes!
vincseize
Messages postés113Date d'inscriptionmardi 25 février 2003StatutMembreDernière intervention28 mars 2010 17 mars 2011 à 18:25
Et suite
pour ceux qui ont des problemes de slashes (voir magic_quotes)
pour eviter le message d'erreur non bloquant 'variables indéfinies'
cs_theptitprince
Messages postés14Date d'inscriptiondimanche 3 décembre 2006StatutMembreDernière intervention 5 janvier 2012 16 mars 2011 à 16:02
En effet, en fonction de la taille de la base sauvegardée, il est possible que le memory_limit soit trop petit (limité à 8M il me semble, si ma mémoire est bonne). Après, à chacun de le modifier en conséquence!
cs_lanner
Messages postés131Date d'inscriptionsamedi 16 avril 2005StatutMembreDernière intervention 8 avril 2015 16 mars 2011 à 15:52
oui je l'accorde aussi :) je n'ai pas directement testé, cependant une information il se peu que le memory_limit soit trop bas est provoque une erreur et du coup ne fonctionera pas
sur le script on peu ajouter (si on a pas accès a la configuration)
ini_set("memory_limit",'16M');
Dans mon cas j'avais l'erreur : Allowed memory size of 8388608 bytes exhausted
cs_theptitprince
Messages postés14Date d'inscriptiondimanche 3 décembre 2006StatutMembreDernière intervention 5 janvier 2012 16 mars 2011 à 14:40
Bonjour.
Je l'accorde, mes noms de variables ne sont pas forcément évident. Tout est défini au début du code avec ses variables:
28 mars 2011 à 08:38
:D je ne souhaite pas faire un simple dump de ma base (elle est archivé quotidiennement) mais uniquement sauvegarder les tables propre a un client "prefix" a un instant.
Le tout est dans une fonction qui archive la db puis les supprimes :)
27 mars 2011 à 23:53
@ Christobal :
Je ne vois pas vraiment l'utilité d'une close LIKE puisque le but est de sauvegarder l'intégralité d'un base SQL.
Cependant, je pense en effet qu'il est possible de mettre une close LIKE, mais pas avec un ' WHERE '.$table[0] puisque $table[0] est le nom de la table... Il faut mettre un nom de colonne, et encore...
Pour obtenir le nom de la colonne, tu peux passer par un explode(",",$donnee_structure[1])... Mais tu serais après obligé pendant toute la sauvegarde de faire un like d'un numéro de colonne fixe sans pouvoir changer de colonne, a condition que la dite colonne existe...
Quoiqu'il en soit, je n'en vois pas une grande utilité pour une sauvegarde.... Peux-tu me dire pourquoi tu as besoin d'un LIKE?
@ Autre:
Je ne sais pas si free permet de changer l'allocation maximale... C'est assez bridé Free de ce que je m'en souviens...
27 mars 2011 à 23:50
bon le plus simple c'est de le mettre dans "$req_table" :
$req_table = 'SHOW TABLES LIKE \'' . $client . '%\' ' ;
@++ et encore merki pour la source ;)
27 mars 2011 à 23:39
Juste une chose dans "$req_tout" vous pensez qu'il est possible de mettre une close where et LIKE du style :
$req_tout = 'SELECT * FROM ' . $table[0] . ' WHERE ' . $table[0] . ' LIKE \'' . $prefix. '%\' ' ;
parce que je n'y arrive pô :)
merki
26 mars 2011 à 09:40
21 mars 2011 à 17:53
Je vais voir si je trouve une solution pour Free...(je la déposerais ici)
Si quelqu'un a une idée je suis preneur.
21 mars 2011 à 17:38
quelque soit la taille que l'on alloue (même si on enlève la ligne d'allocation mémoire) sur Free, un message d'erreur apparait :
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 1024 bytes) in /mnt/160/sdb/9/8/nomdusite/chemin/page.php on line xxx (48)
la ligne xxx correspondant à la ligne :
while($donnees_tout = mysql_fetch_array($result_tout)){
en cas de grosse base....
ou à la ligne (61) :
$tout_contenu = str_replace(',);',');',$tout_contenu);
en cas de base plus petite
18 mars 2011 à 12:42
Pour moi la variable c'est forcement :
Ligne 13
$tout_contenu ="";
18 mars 2011 à 01:55
$tout_contenu = '';
18 mars 2011 à 01:55
$contenu .= "'".addslashes($donnees_tout[$i])."',";
17 mars 2011 à 21:17
PS : petite faute dans cette partie , un ' de trop :) > $tout_contenu =""';
17 mars 2011 à 18:54
ce serait de detecter si la conf serveur est en agic quote ou non
car la mon patch (un peu grave vite fait), evites les erreurs , mais
retire tous les guillemets du coup ...
ceci dit
je pense que c'est à l insert de données avant dans la base, donc le fameux addslash
auquel il faut penser ds le cas de magic_quotes on ou off
:)
17 mars 2011 à 18:48
Merci de la remarque pour les slashes!
17 mars 2011 à 18:25
pour ceux qui ont des problemes de slashes (voir magic_quotes)
changer:
$contenu .= "'".$donnees_tout[$i]."',";
par
$contenu .= "'".addslashes($donnees_tout[$i])."',";
17 mars 2011 à 17:45
parfait
cependant
je me suis permis néanmoins d'ajouter
en ligne 28
// init variables
$structure = '';
$tout_contenu = '';
pour eviter le message d'erreur non bloquant 'variables indéfinies'
16 mars 2011 à 16:02
16 mars 2011 à 15:52
sur le script on peu ajouter (si on a pas accès a la configuration)
ini_set("memory_limit",'16M');
Dans mon cas j'avais l'erreur : Allowed memory size of 8388608 bytes exhausted
16 mars 2011 à 14:40
Je l'accorde, mes noms de variables ne sont pas forcément évident. Tout est défini au début du code avec ses variables:
$host = 'localhost';
$user = 'nomdutilisateur';
$login = 'motdepasse';
$dbname = 'information_schema';
Je pense tout de même qu'en regardant le code, il était possible d'identifier les variables...
16 mars 2011 à 14:26
Ou se définie le mot de passe ?