Problème avec images dans mysql
Fermé
pierre1098
Messages postés
80
Date d'inscription
vendredi 5 juin 2009
Statut
Membre
Dernière intervention
2 février 2012
-
23 janv. 2012 à 09:41
pierre1098 Messages postés 80 Date d'inscription vendredi 5 juin 2009 Statut Membre Dernière intervention 2 février 2012 - 2 févr. 2012 à 20:00
pierre1098 Messages postés 80 Date d'inscription vendredi 5 juin 2009 Statut Membre Dernière intervention 2 février 2012 - 2 févr. 2012 à 20:00
A voir également:
- Problème avec images dans mysql
- Mysql community server - Télécharger - Bases de données
- Des images - Guide
- Visualisez cette image avec un logiciel d'édition d'images. - Forum Photoshop
- La vidéo à télécharger a été accélérée. elle va 4 fois plus vite que la vidéo d'origine. restaurez la vidéo d'origine. combien de papillons figurent à 3 secondes et 6 images dans la vidéo d'origine ? ✓ - Forum Montage et acquisition vidéo
- Images enregistrées - Forum Bureautique
22 réponses
Melooo
Messages postés
1405
Date d'inscription
vendredi 28 novembre 2008
Statut
Membre
Dernière intervention
18 mars 2013
84
23 janv. 2012 à 10:43
23 janv. 2012 à 10:43
Salut,
Donne nous ce que tu obtiens lorsque tu le met dans la base de données
Donne nous ce que tu obtiens lorsque tu le met dans la base de données
pierre1098
Messages postés
80
Date d'inscription
vendredi 5 juin 2009
Statut
Membre
Dernière intervention
2 février 2012
2
23 janv. 2012 à 13:30
23 janv. 2012 à 13:30
un truc dans ce genre
b55da081f52b722ac0294d4e159a284e
b55da081f52b722ac0294d4e159a284e
pierre1098
Messages postés
80
Date d'inscription
vendredi 5 juin 2009
Statut
Membre
Dernière intervention
2 février 2012
2
24 janv. 2012 à 22:10
24 janv. 2012 à 22:10
un petit up svp
Bonjour
b55da081f52b722ac0294d4e159a284e, c'est le nom de l'image, pas l'image elle même.
Le nom a cette allure-là parce que tu le transformes avec la fonction md5, c'est une drôle d'idée mais pourquoi pas ? Ce serait quand même plus clair si tu rajoutais au moins la bonne extension à la fin du nom...
Par contre, l'image elle-même n'est pas enregistrée dans ta base : ne comprends-tu pas ce que font ton INSERT et ton UPDATE ?
Je suppose qu'elle est enregistrée grâce à la fonction atelier_upload, mais cette fonction ne fait pas partie de bibliothèques standard du PHP, elle doit être quelque part dans un des fichiers de ton application.
On croit deviner qu'elle range tes images dans le répertoire 'fichiers/img/atelier/ et les miniatures dans 'fichiers/img/atelier/small, mais c'est sans garantie
b55da081f52b722ac0294d4e159a284e, c'est le nom de l'image, pas l'image elle même.
Le nom a cette allure-là parce que tu le transformes avec la fonction md5, c'est une drôle d'idée mais pourquoi pas ? Ce serait quand même plus clair si tu rajoutais au moins la bonne extension à la fin du nom...
Par contre, l'image elle-même n'est pas enregistrée dans ta base : ne comprends-tu pas ce que font ton INSERT et ton UPDATE ?
Je suppose qu'elle est enregistrée grâce à la fonction atelier_upload, mais cette fonction ne fait pas partie de bibliothèques standard du PHP, elle doit être quelque part dans un des fichiers de ton application.
On croit deviner qu'elle range tes images dans le répertoire 'fichiers/img/atelier/ et les miniatures dans 'fichiers/img/atelier/small, mais c'est sans garantie
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
pierre1098
Messages postés
80
Date d'inscription
vendredi 5 juin 2009
Statut
Membre
Dernière intervention
2 février 2012
2
26 janv. 2012 à 17:33
26 janv. 2012 à 17:33
Tu as tout compris c'est bien ça
Si tu regarde bien la fonction INSERT et en commentaire car après réflection j'ai choisit l'option UPDATE.
En effet la fonction atelier_upload est une fonction déclarée au préalable dans une pages variables.php qui regroupent toutes les variables du site.
Donc mon problème se situe bien au niveau de l'image quand je l'upload j'ai bien son nom dans la base comme tu dit, elle est rangé dans le bon dossier mais sous la forme d'un carré blanc ?????
Dons à ce niveau la je suis bloqué car elle est inutilisable :s
Si tu regarde bien la fonction INSERT et en commentaire car après réflection j'ai choisit l'option UPDATE.
En effet la fonction atelier_upload est une fonction déclarée au préalable dans une pages variables.php qui regroupent toutes les variables du site.
Donc mon problème se situe bien au niveau de l'image quand je l'upload j'ai bien son nom dans la base comme tu dit, elle est rangé dans le bon dossier mais sous la forme d'un carré blanc ?????
Dons à ce niveau la je suis bloqué car elle est inutilisable :s
J'avais bien vu que l'INSERT était en commentaire, ça ne change rien à ce que j'ai dit.
Dans le code que tu donnes, il n'y a rien qui enregistre l'image, sauf probablement la fonction atelier_upload. Mais comme nous n'avons pas le code de cette fonction, nous ne pouvons pas te dire ce qui ne va pas dedans.
Quand tu dis que l'image est stockée sous la forme d'un carré blanc, qu'est-ce que ça veut dire ? Quelle taille fait-elle ? Est-elle enregistrée avec la bonne extension ?
Dans le code que tu donnes, il n'y a rien qui enregistre l'image, sauf probablement la fonction atelier_upload. Mais comme nous n'avons pas le code de cette fonction, nous ne pouvons pas te dire ce qui ne va pas dedans.
Quand tu dis que l'image est stockée sous la forme d'un carré blanc, qu'est-ce que ça veut dire ? Quelle taille fait-elle ? Est-elle enregistrée avec la bonne extension ?
pierre1098
Messages postés
80
Date d'inscription
vendredi 5 juin 2009
Statut
Membre
Dernière intervention
2 février 2012
2
27 janv. 2012 à 11:04
27 janv. 2012 à 11:04
Voila le code de lla fonction atelier_upload :
function atelier_upload ($image, $img_lar, $chemin, $image_nom, $qualite) {
$dimensions = getimagesize($image);
$max = $img_lar;
if ($dimensions[0]>$dimensions[1]) {
$width = $max;
$height = ($dimensions[1]*($max/$dimensions[0]));
}
else {
$width = ($dimensions[0]*($max/$dimensions[1]));
$height = $max;
}
$img_chemin = imagecreatefromjpeg($image);
$img_nouv = imagecreatetruecolor($width,$height);
imagecopyresampled($img_nouv, $img_chemin, 0, 0, 0, 0, $width, $height, $dimensions[0], $dimensions[1]);
imagejpeg($img_nouv, $chemin . $image_nom, $qualite);
imagedestroy($img_chemin);
imagedestroy($img_nouv);
}
Pour l'image, dans le dossier ou elle est enregistrée, le nom de l'image et le même que dans la base donnée c'est à dire un truc comme ça b55da081f52b722ac0294d4e159a284e
l'extension ne se fait pas donc c'est un carré blanc inexploitable
function atelier_upload ($image, $img_lar, $chemin, $image_nom, $qualite) {
$dimensions = getimagesize($image);
$max = $img_lar;
if ($dimensions[0]>$dimensions[1]) {
$width = $max;
$height = ($dimensions[1]*($max/$dimensions[0]));
}
else {
$width = ($dimensions[0]*($max/$dimensions[1]));
$height = $max;
}
$img_chemin = imagecreatefromjpeg($image);
$img_nouv = imagecreatetruecolor($width,$height);
imagecopyresampled($img_nouv, $img_chemin, 0, 0, 0, 0, $width, $height, $dimensions[0], $dimensions[1]);
imagejpeg($img_nouv, $chemin . $image_nom, $qualite);
imagedestroy($img_chemin);
imagedestroy($img_nouv);
}
Pour l'image, dans le dossier ou elle est enregistrée, le nom de l'image et le même que dans la base donnée c'est à dire un truc comme ça b55da081f52b722ac0294d4e159a284e
l'extension ne se fait pas donc c'est un carré blanc inexploitable
Il n'y a pas d'extension parce que tu n'en mets pas. Tu n'as qu'à en ajouter une. Comme il semble que seul le jpeg est traité :
$image_nom = md5($_FILES['image']['name']).'.jpg';et ça devrait marcher.
pierre1098
Messages postés
80
Date d'inscription
vendredi 5 juin 2009
Statut
Membre
Dernière intervention
2 février 2012
2
Modifié par pierre1098 le 27/01/2012 à 14:10
Modifié par pierre1098 le 27/01/2012 à 14:10
Le problème n'est pas résolu j'ai toujours la même chose sauf que derrière le nom imbuvable de l'image j'ai .jpg.
En revanche la photo et bien stockées elle est propre mais elle s'affiche mal, c'est à dire que c'est le nom bizard qui s'affiche et pas l'image :s
va falloir que je réfléchisse encore
Merci pour le moment
En revanche la photo et bien stockées elle est propre mais elle s'affiche mal, c'est à dire que c'est le nom bizard qui s'affiche et pas l'image :s
va falloir que je réfléchisse encore
Merci pour le moment
derrière le nom imbuvable de l'image
C'est quand même bien toi qui a choisi de rendre ce nom imbuvable avec md5, non ?
elle est propre mais elle s'affiche mal
Une image propre est une image qui s'affiche bien, non ? Ou veux-tu dire qu'elle s'affiche bien en double-cliquant dessus, mais qu'elle s'affiche mal avec ton script ?
C'est quand même bien toi qui a choisi de rendre ce nom imbuvable avec md5, non ?
elle est propre mais elle s'affiche mal
Une image propre est une image qui s'affiche bien, non ? Ou veux-tu dire qu'elle s'affiche bien en double-cliquant dessus, mais qu'elle s'affiche mal avec ton script ?
pierre1098
Messages postés
80
Date d'inscription
vendredi 5 juin 2009
Statut
Membre
Dernière intervention
2 février 2012
2
27 janv. 2012 à 14:17
27 janv. 2012 à 14:17
c'est pas vraiment moi qui est choisit je fait juste des modifs sur le site d'un ami mais ce n'est pas mon code source ^^ donc je m'adapte.
Quand je dit qu'elle est propre c'est que dans le dossier ou elle est stockées elle est normal mais sur le site elle affiche le nom de l'image que l'on ne peux que surligner comme du texte, Dois-je mettre un format spécial pour cette image dans ma BDD
Quand je dit qu'elle est propre c'est que dans le dossier ou elle est stockées elle est normal mais sur le site elle affiche le nom de l'image que l'on ne peux que surligner comme du texte, Dois-je mettre un format spécial pour cette image dans ma BDD
pierre1098
Messages postés
80
Date d'inscription
vendredi 5 juin 2009
Statut
Membre
Dernière intervention
2 février 2012
2
27 janv. 2012 à 14:20
27 janv. 2012 à 14:20
c'est bon j'ai compris mon erreur.
En fait l'image s'affiche en fonction de l'adresse de celle-ci, c'est à dire par rapport au dossier ou elle est stockée, or dans ma base l'adresse de l'image était vide.
J'ai donc saisie l'emplacement de l'image manuellement et ça marche. Il faut donc que lorsque je stock mon image je récupère l'adresse de celle-ci.
En fait l'image s'affiche en fonction de l'adresse de celle-ci, c'est à dire par rapport au dossier ou elle est stockée, or dans ma base l'adresse de l'image était vide.
J'ai donc saisie l'emplacement de l'image manuellement et ça marche. Il faut donc que lorsque je stock mon image je récupère l'adresse de celle-ci.
pierre1098
Messages postés
80
Date d'inscription
vendredi 5 juin 2009
Statut
Membre
Dernière intervention
2 février 2012
2
31 janv. 2012 à 16:14
31 janv. 2012 à 16:14
Je reviens sur ce post car j'ai encore un soucis.
Voilà après avoir réglé tout mes problèmes d''images etc je me retrouve coincé.
Tout ce que j'ai fait fonctionne bien en local il n'y a aucun soucis, mais arrivé sur le serveur en ligne ça ne marche pas,
mes requêtes sql ne fonctionne pas je ne voit pas trop pourquoi car les fichiers de connections fonctionne bien et sont connectés à la bonne base vu que les autres pages fonctionne mais j'ai deux requêtes qui fonctionne mal quelqu'un aurait une idée ??
Voilà après avoir réglé tout mes problèmes d''images etc je me retrouve coincé.
Tout ce que j'ai fait fonctionne bien en local il n'y a aucun soucis, mais arrivé sur le serveur en ligne ça ne marche pas,
mes requêtes sql ne fonctionne pas je ne voit pas trop pourquoi car les fichiers de connections fonctionne bien et sont connectés à la bonne base vu que les autres pages fonctionne mais j'ai deux requêtes qui fonctionne mal quelqu'un aurait une idée ??
Un grand classique quand on passe de local à en ligne, c'est le problème de majuscules/ minuscules.
Windows est insensible à la casse dans les noms de fichiers, donc aussi ceux des bases et des tables. On appelle une table 'MaTable' dans sa base, et 'matable' dans sa requête, ça passe très bien sous Windows. Mais ça ne marche plus si on est hébergé sous Linux par exemple.
Même problème avec les noms de fichiers et de répertoires.
Windows est insensible à la casse dans les noms de fichiers, donc aussi ceux des bases et des tables. On appelle une table 'MaTable' dans sa base, et 'matable' dans sa requête, ça passe très bien sous Windows. Mais ça ne marche plus si on est hébergé sous Linux par exemple.
Même problème avec les noms de fichiers et de répertoires.
pierre1098
Messages postés
80
Date d'inscription
vendredi 5 juin 2009
Statut
Membre
Dernière intervention
2 février 2012
2
31 janv. 2012 à 17:23
31 janv. 2012 à 17:23
Oui mais justement c'est pas la première fois que je fait ça et j'ai super fait attention à la casse
pierre1098
Messages postés
80
Date d'inscription
vendredi 5 juin 2009
Statut
Membre
Dernière intervention
2 février 2012
2
31 janv. 2012 à 17:26
31 janv. 2012 à 17:26
En fait voila mon code c'est ça :
<div id="corps">
<div id="titre"><img src="' . $site_chemin_absolu . 'fichiers/img/titre/administration.png" alt="Administration" /></div>
<div id="corps_haut"></div>
<div id="corps_milieu">
<div id="texte">
');
include( $site_chemin_admin . 'fichiers/site/modules/_menu_admin.php');
echo('
<hr />
<p>Pour modifier Atelier remplisser les champs suivants.</p>
<form action="" method="post" enctype="multipart/form-data">
<table>
<tr>
<td>Photos à ajouter : </td>
<td><input type="file" name="image" /></td>
</tr>
<td>Texte : </td>
<td><textarea name="texte" cols="30" rows="5"></textarea></td>
</tr>
<tr>
<td></td>
<td>
<input type="submit" value="envoyer" />
</td>
</tr>
</table>
</form>
');
$query = mysql_query('SELECT * FROM atelier');
$atelier = mysql_fetch_assoc($query);
if (!empty($_FILES['image'])) {
$image = $_FILES['image']['tmp_name'];
$image_nom = ($_FILES['image']['name']);
$texte = $_POST['texte'];
if (!is_uploaded_file($image)) {
echo('L'image n'a pas été téléchargé !!!');
}
else {
echo atelier_upload ($image, '100', $site_chemin_admin . 'fichiers/img/atelier/small/', $image_nom, '100');
echo atelier_upload ($image, '700', $site_chemin_admin . 'fichiers/img/atelier/', $image_nom, '100');
}
/*mysql_query("INSERT INTO atelier VALUES('','" . $image_nom . "', '" . $texte . "')");*/
mysql_query ("UPDATE suche114514.atelier SET image_nom = '".$image_nom."', texte ='".$texte."' WHERE atelier.id ='".$atelier['id']."' AND atelier.image_nom = '".$atelier['image_nom']."' AND atelier.texte = '".$atelier['texte']."'");
}
else {
echo('Merci de remplir tous les champs');
}
echo('
</div>
</div>
<div id="corps_bas"></div>
</div>
<div id="bas">
');
include ( $site_chemin_admin . $site_bas_chemin );
echo ('
</div>
</div>
</body>
</html>
');
et le problème c'est lorsque je clique sur envoyer, le bas de la page web ne s'affiche plus et la requête vers la BDD non plus
<div id="corps">
<div id="titre"><img src="' . $site_chemin_absolu . 'fichiers/img/titre/administration.png" alt="Administration" /></div>
<div id="corps_haut"></div>
<div id="corps_milieu">
<div id="texte">
');
include( $site_chemin_admin . 'fichiers/site/modules/_menu_admin.php');
echo('
<hr />
<p>Pour modifier Atelier remplisser les champs suivants.</p>
<form action="" method="post" enctype="multipart/form-data">
<table>
<tr>
<td>Photos à ajouter : </td>
<td><input type="file" name="image" /></td>
</tr>
<td>Texte : </td>
<td><textarea name="texte" cols="30" rows="5"></textarea></td>
</tr>
<tr>
<td></td>
<td>
<input type="submit" value="envoyer" />
</td>
</tr>
</table>
</form>
');
$query = mysql_query('SELECT * FROM atelier');
$atelier = mysql_fetch_assoc($query);
if (!empty($_FILES['image'])) {
$image = $_FILES['image']['tmp_name'];
$image_nom = ($_FILES['image']['name']);
$texte = $_POST['texte'];
if (!is_uploaded_file($image)) {
echo('L'image n'a pas été téléchargé !!!');
}
else {
echo atelier_upload ($image, '100', $site_chemin_admin . 'fichiers/img/atelier/small/', $image_nom, '100');
echo atelier_upload ($image, '700', $site_chemin_admin . 'fichiers/img/atelier/', $image_nom, '100');
}
/*mysql_query("INSERT INTO atelier VALUES('','" . $image_nom . "', '" . $texte . "')");*/
mysql_query ("UPDATE suche114514.atelier SET image_nom = '".$image_nom."', texte ='".$texte."' WHERE atelier.id ='".$atelier['id']."' AND atelier.image_nom = '".$atelier['image_nom']."' AND atelier.texte = '".$atelier['texte']."'");
}
else {
echo('Merci de remplir tous les champs');
}
echo('
</div>
</div>
<div id="corps_bas"></div>
</div>
<div id="bas">
');
include ( $site_chemin_admin . $site_bas_chemin );
echo ('
</div>
</div>
</body>
</html>
');
et le problème c'est lorsque je clique sur envoyer, le bas de la page web ne s'affiche plus et la requête vers la BDD non plus
Que des trucs bizarres...
D'après ton code :
C'est toujours sur la première image de ta base que tu travailles.
De plus, tu ne fais que des mises à jour. Mais pour avoir quelque chose à mettre à jour, il faut bien avoir fait un INSERT au départ...
Pour essayer de piéger une erreur, ajoute des or die(mysql_error()); :
Au passage pourquoi tous ces AND dans ton dernier WHERE ? si id est bien un identifiant unique (comme il devrait l'être en bonne conception) , inutile de tester les autres champs
D'après ton code :
$query = mysql_query('SELECT * FROM atelier'); $atelier = mysql_fetch_assoc($query);
C'est toujours sur la première image de ta base que tu travailles.
De plus, tu ne fais que des mises à jour. Mais pour avoir quelque chose à mettre à jour, il faut bien avoir fait un INSERT au départ...
Pour essayer de piéger une erreur, ajoute des or die(mysql_error()); :
$query = mysql_query('SELECT * FROM atelier') or die(mysql_error()); ... mysql_query ("UPDATE suche114514.atelier SET image_nom = '".$image_nom."', texte ='".$texte."' WHERE atelier.id ='".$atelier['id']."' AND atelier.image_nom = '".$atelier['image_nom']."' AND atelier.texte = '".$atelier['texte']."'") or die (mysql_error());
Au passage pourquoi tous ces AND dans ton dernier WHERE ? si id est bien un identifiant unique (comme il devrait l'être en bonne conception) , inutile de tester les autres champs
pierre1098
Messages postés
80
Date d'inscription
vendredi 5 juin 2009
Statut
Membre
Dernière intervention
2 février 2012
2
31 janv. 2012 à 18:13
31 janv. 2012 à 18:13
Bon alors j'ai bien essayé de pieger une erreur comme tu me l'a conseillé mais le résultat et le même et je sais toujours pas d'où ça vient :s
Oui id est unique ^^
Oui id est unique ^^
Aucun message d'erreur ?
1 - ton script, s'il est vraiment comme on le voit dans ton message de 17h26, ne marche certainement pas en local. Il comporte (au moins) une erreur de syntaxe :
echo('L'image n'a pas été téléchargé !!!'); est incorrect, ce devrait être
echo('L\'image n\'a pas été téléchargée !!!');
Ajoute au début de ton script :
error_reporting(E_ALL); pour faire afficher tous les messages d'erreur.
2 - pour voir à partir d'où ton script plante, ajoute quelques echo 'coucou1'; echo 'coucou2'; etc... ici et là jusqu'à voir à partir de quelle ligne il s'arrête ( à retirer après, bien sûr)
1 - ton script, s'il est vraiment comme on le voit dans ton message de 17h26, ne marche certainement pas en local. Il comporte (au moins) une erreur de syntaxe :
echo('L'image n'a pas été téléchargé !!!'); est incorrect, ce devrait être
echo('L\'image n\'a pas été téléchargée !!!');
Ajoute au début de ton script :
error_reporting(E_ALL); pour faire afficher tous les messages d'erreur.
2 - pour voir à partir d'où ton script plante, ajoute quelques echo 'coucou1'; echo 'coucou2'; etc... ici et là jusqu'à voir à partir de quelle ligne il s'arrête ( à retirer après, bien sûr)
pierre1098
Messages postés
80
Date d'inscription
vendredi 5 juin 2009
Statut
Membre
Dernière intervention
2 février 2012
2
1 févr. 2012 à 15:19
1 févr. 2012 à 15:19
Le truc c'est que je voit ou il plante c'est lorsque je clique sur envoyer
ça envoi bien l'image dans mon dossier fichiers/img/ateliers mais pas dans ma base
ça envoi bien l'image dans mon dossier fichiers/img/ateliers mais pas dans ma base