INSERTION D'UNE IMAGE DANS UNE BASE DE DONNEES MYSQL PAR YERMES

klicksoe Messages postés 38 Date d'inscription vendredi 9 mars 2007 Statut Membre Dernière intervention 23 avril 2009 - 5 août 2008 à 15:05
webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 - 8 août 2008 à 09:27
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/47507-insertion-d-une-image-dans-une-base-de-donnees-mysql-par-yermes

webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 4
8 août 2008 à 09:27
Un admin CS ne pourrait pas venir supprimer cette source plutôt ^^
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
8 août 2008 à 05:08
... mais c'est qu'il est meprisant en plus...

c'est pas moi qui met des keywords genre :
Finlande{

}

en plein milieu de mon code... vient pas me dire que je ne comprends rien...
shaft_amine Messages postés 58 Date d'inscription mercredi 30 juillet 2008 Statut Membre Dernière intervention 1 février 2018
8 août 2008 à 00:02
Maintenant je vous assure j'ai tester et ça marche trés bien.

Il faut dire que avant de bouger le code il faut le tester tel qu'il est.
C'est à dire décomprésser le Zip et executer l'index avec un apache moi j'utilise Easyphp et ça marche bien comme il faut.

On peut pas utilisé le fichier tranfert.php tous seul.

Pour utilisé le code il faut d'abord le comprendre.
Merci
azqsazqs Messages postés 83 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 28 novembre 2010
7 août 2008 à 19:25
@SHAFT_AMINE: J'ai posé ce code a ce qui ont besoin de stocké une image dans une base de données. Si ca vous concerne pas vous pouvez dire c'est "INUTILE"

@SHAFT_AMINE: Mr COUCOU747 c'est ton problème

Premièrement, quand on pose un code, que des gens le test et que ca marche pas ou qu'il est mal fait, faut pas croire qu'il vont passer dessus sans rien dire. Surtout que rien qu'en reagrdant le code, on voit les erreurs (première erreur a la deuxième ligne?).

Deuxièmement, c'est faux, c'est TON problème SHAFT_AMINE, tu met en fuite la crédibilité de tes codes et celle de PHPCS.

Que tu défende ton code, ok, mais que tu dise, "rien a ***** de ce que vous pensez", non.
webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 4
7 août 2008 à 17:08
Connais-tu seulement les bases de PHP Shaft_Amine ?
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
7 août 2008 à 16:25
nan mais... function transfert c'est pas a commenter...
shaft_amine Messages postés 58 Date d'inscription mercredi 30 juillet 2008 Statut Membre Dernière intervention 1 février 2018
7 août 2008 à 16:10
j'ai enlever les commentaires
Palleas_44 Messages postés 130 Date d'inscription lundi 12 décembre 2005 Statut Membre Dernière intervention 19 avril 2009
7 août 2008 à 14:16
> j'ai pas utilisé " foo.php " OK

C'est le nom du fichier dans lequel il a copié ton "code"
Il ne sert à rien ce code, déjà le Algérie tu aurais su que tu avais mis n'importe quoi si seulement tu avais retesté ton code avant de le poster !
Plutôt que de t'obstiner avec des "Pour l'utilité je pense que en Codes-Sources en met pas que les codes parfait", remet toi en question 5 minutes !
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
7 août 2008 à 13:36
Algérie
{

ca c'est TON code, pas le mien... t'as qu'a aller voir mon profil, tu verras alors qu'une parse error, ca ne me fait pas peur
shaft_amine Messages postés 58 Date d'inscription mercredi 30 juillet 2008 Statut Membre Dernière intervention 1 février 2018
7 août 2008 à 13:28
Mr COUCOU747 c'est ton problème

Parse error: syntax error, unexpected '{' in /home/max/Desktop/foo.php on line 4
j'ai pas utilisé " foo.php " OK
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
7 août 2008 à 12:44
max@max-laptop:~/Desktop$ php foo.php

Parse error: syntax error, unexpected '{' in /home/max/Desktop/foo.php on line 4
max@max-laptop:~/Desktop$

Algérie
{

ca ca ne fonctionne pas.

si on enleve ca, tes returns n'ont aucun sens, et ton code reste TRES moche.
shaft_amine Messages postés 58 Date d'inscription mercredi 30 juillet 2008 Statut Membre Dernière intervention 1 février 2018
7 août 2008 à 11:32
Désoler j'ai esseyé le code^pas mal de fois et ça marche,.......si le commentaires posent de problème vous pouvez les enlevés.
Pour l'utilité je pense que en Codes-Sources en met pas que les codes parfait
J'ai posé ce code a ce qui ont besoin de stocké une image dans une base de données.
Si ca vous concerne pas vous pouvez dire c'est "INUTILE"
cs_yoman64 Messages postés 592 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 4 décembre 2008
7 août 2008 à 11:19
Il y a quelques moment où le stockage de fichiers/images dans une base de données peuvent être utile.

Par exemple pour garder tout au même endroit, mais avec un cache dans le système de fichier (C'est le cas pour codes-sources si je me fis à ce qu'on me raconte).

Ou alors pour la base de données d'une application quelconque, on peut stocker un logo ou des graphiques dans la base de données, puisqu'elle n'est pas destiné à un site web il n'y a alors pas de possibilité de stocker des fichiers autrement.

Plus tous les exemples cités par webded.

Cependant en aucun cas ce code est utile pour les appliquées, le code est extrêmement mal conçu (gestion d'erreur ? sécurité ? Propreté ? Algérie(lol) ?) et n'est pas utilisable dans l'état. Et puis j'avais pas remarqué, niveau initié, l'auteur veut visiblement se moquer de nous ^^
azqsazqs Messages postés 83 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 28 novembre 2010
7 août 2008 à 11:01
Ben, je vois pas l'intéret.

AU premier abord, on se dit, "Ouais super génial...!!", mais ensuite, comment trouver une utilité ?

Bien que webdeb donne quelques raison à ce système,

---------------------------------------------------------------------------------------------------------------
C'est le cas par exemple si l'on ne dispose pas d'un serveur de fichier mais uniquement d'une base de données.
---------------------------------------------------------------------------------------------------------------

On peut se dire que si il n'y a pas d'hébergement de fichier, la BDD ne doit pas pouvoir être "importante".

De plus je trouve ce code très moche (cf les autres commentaires, Algérie ?) plus moche encore que les miens.

Mais bon, on va pas le descendre non plus, il a eu une idée l'a appliquée. En soit c'est déjà un grand pas.
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
6 août 2008 à 16:40
c'est sur... un parse error a la premiere ligne, c'est tres utile...
rhisty Messages postés 4 Date d'inscription mercredi 23 juillet 2008 Statut Membre Dernière intervention 12 février 2009
6 août 2008 à 16:24
Ton code est très useful. Merci
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
6 août 2008 à 00:17
parfois t'as aussi des clusters, ce qui rend pratique la mise en BDD.

Apres un upload, si tu mets tout en BDD, t'as pas a te poser de question sur le contenu du fichier, ou le caractere executable du truc...

cela dit... pour les raisons expliquees plus haut, le code pue et ne vaut pas initie.
webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 4
5 août 2008 à 18:57
Salut,

Je vais rejoindre l'avis des deux autres commentateurs. Voici la liste non exhaustive des défauts de ton code :

1/ C'est quoi ce Algérie { } ??? Je ne connais pas cette syntaxe. Des accents (bien que ce soit possible en PHP) dans le code c'est très moche et déprécié...
2/ Tout est mélangé dans ton code (logique métier, accès à la BDD, affichage...
3/ Il n'y a ni sécurité ni aucun test sur tes données. Comment t'assures-tu que tes variables et valeurs sont saines ? Comment t'assures-tu également qu'un transfert de ton image en BDD s'est bien déroulé ?
4/ Ton code n'est utilisable qu'avec MySQL. Pour sauver une image en BDD de manière performante, il faudra mieux le faire avec une base SQL Serveur ou Oracle par exemple.
5/ Les fonctions mysql_() sont complètement obsolètes. Aujourd'hui en PHP 5 il existe une merveilleuse extension native d'accès aux SGBDR qui s'appelle PDO.

Bref, il y'a beaucoup, beaucoup, beaucoup de choses à revoir dans ce code. Il n'est en rien utilisable dans un développement professionnel (ni même personnel... Enfin personnellement, je ne l'utiliserai pas).

Pour finir, je vais modérer les deux avis précédent. Il ne faut pas croire que stocker une image en BDD c'est mal. Il n'y a pas de bonne et de meilleure façon de faire. En réalité, tout dépend du contexte. Dans la majorité des cas, une base de données est utilisé avec un serveur web ou un serveur de fichiers, donc il est plus judicieux de stocker son chemin en base plutôt que son contenu binaire pour des performances meilleures. Mais il peut y avoir des contextes qui nécessitent un enregistrement du contenu binaire en BDD. C'est le cas par exemple si l'on ne dispose pas d'un serveur de fichier mais uniquement d'une base de données. Ou bien lorsque l'on veut effectuer des calculs sur un contenu binaire à partir d'une procédure stockée par exemple. Certaines bases de données comme Oracle accompagnées d'une grosse infrastructure matérielle sont complètement à même de stocker des images ou autres fichiers binaires en base sans soucis. Mais dans le cas d'un petit serveur dédié ou mutualisé ce n'est clairement pas possible. Enregistrer un contenu binaire en base de données peut s'avérer très utile par exemple pour des fichiers PDF afin de pouvoir réaliser des recherches FULLTEXT. Ce qui ne serait pas très aisé ni performant en PHP.

La mise en cache d'un contenu binaire en base de données doit être bien réfléchi. Il faut savoir par exemple comment seront sollicitées la / les bases de données. Par exemple, en se posant ces question ?

- Combien de connexions à la BDD par jour ?
- Combien de requêtes journalières ?
- Accès uniquement en lecture ?
- Accès uniquement en écriture ?
- Accès en lecture et en écriture ?
- Utilisation de procédures stockées pour manipuler les contenus ?
- Besoin de rechercher directement en FULLTEXT dans le contenu ?
- De quelles infrastructure réseau (nombre de machines, puissance de calcule des machines, technologies des machines, débit des connexions...) je dispose ?
- Mon application gère-t-elle des caches ?
- ...

Bref, après avoir mis au clair ce genre de questions. On n'est plus à même de se décider entre stocker des contenus binaires en base de données ou non.

Pour du web traditionnel, dans la grande majorité des cas (au moins 98% je dirai), il sera plus judicieux de stocker les images et autres contenus binaires sur un serveur de fichiers. En effet, les services web et services de BDD des sites Internet sont généralement installés sur la même machine physique. En considérant des milliers d'accès journaliers en lecture et en écriture sur Apache et MySQL quotidiennement, le serveur (au sens machine physique cette fois-ci) est fortement sollicité. Pour assurer des temps de réponses les plus bas possibles, il sera déconseillé de placer des contenus binaires en BDD.

En revanche, si l'on dispose d'une infrastructure plus complexe avec :

- plusieurs serveurs web d'un côté,
- plusieurs serveurs de BDD de l'autre dont :
- certains ne sont accessibles qu'en lecture
- et d'autres qu'en écriture
- des serveurs frontaux pour réaliser du load balancing (équilibrage de charge) en dispatchant les requêtes (les plus lourdes) sur les serveurs les moins sollicités à l'instant T.
- des solutions de cache pour certaines données actualisées peu souvent, voire très rarement
- ...

En fin de compte, la solution du contenu binaire en base de données n'a rien d'exceptionnel. Elle doit juste être décidée en fonction de l'application à remplir et de l'infrastructure matérielle et logicielle disponible.
cs_yoman64 Messages postés 592 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 4 décembre 2008
5 août 2008 à 15:17
Quelques commentaires:
1. Le code est très très moche
2. Ce n'est pas une bonne pratique pour les raisons cités par klicksoe (Bien que ce commentaire soit totalement justifié, cela reste un avis personnel)
3. C'est déjà présent une bonne dizaine de fois sur phpcs
4. Ton code est (littéralement) bourré de failles de sécurité.

@+
klicksoe Messages postés 38 Date d'inscription vendredi 9 mars 2007 Statut Membre Dernière intervention 23 avril 2009
5 août 2008 à 15:05
L'art et la manière de plomber une bdd ><

Avec cette méthode, tu vas très vite te retrouver avec une ÉNORME base de données, ce code n'a pas vraiment d'intérêt. Les hébergeurs offrent souvent une petite place pour la base de données. De plus, aller chercher une image dans un dossier est "moins long" que de l'importer de la bdd...