Charger une image dans pHPmyadmin

Fermé
Diedouch Messages postés 9 Date d'inscription samedi 21 décembre 2013 Statut Membre Dernière intervention 13 janvier 2014 - 28 déc. 2013 à 14:59
 Utilisateur anonyme - 3 janv. 2014 à 10:05
Bonjour,

je fais face au problème suivant surement stupide pour ceux qui savent.

je veux charger une image dans phpmyadmin

Dans phpmyadmin J'ai donné le type blob à mon image.

Elle ne charge pas.

J'ai voulu décomposer le mouvement en reprenant bout de code suivant d'un livre

J'aurai aimé afficher l'image pour vois si elle existe vraiment .Je n'y arrive pas
Comment afficher l'image (pour controle) et l'introduire dans ma table.

j'ai une erreur du genre undefined variable

Voici ce que j'ai écrit.Quelle est ma variable définie au final


<?php

$destDir="upload";
if (sizeof($_POST)>0 && $FILES ['fichier'] && $FILES['fichier'] !="none")

{
if(!is_dir($destDir))
{
if (!@mkdir($destDir))
{
die ("erreur lors de la création du dossier $destDir");
}
}
@chmod($destDir,0777);

if (!file_exists($_FILES['fichier']['tmp_name']))
{
die("le fichier n'est pas passé.vérifier les critères");
}
$taille_max=$POST['MAX_FILE_SIZE'];
$taille_fichier= filesize ($_FILES['fichier']['tmp_name']);
if ($taille_max && ($taille_fichier > $taille_max))
{
die ("la taille du fichier est trop grande");
}
$ext=strrchr($FILES['fichier']['name'],'.');
$ext=substr ($ext,1);
$ext=strolower ($ext);
if ($ext!="jpg" && $ext!="jpeg" && $ext!="png" && $ext!="gif")
{
die ("le fichier n'est pas une image");
}
if (move_uploaded_file ($FILES['fichier']['tmp_name'], $destDir.$fichier_destination))
{
die ("le fichier est correctement passé");
}
else
echo ' problème de transfert';
}

?>

Merci de votre aide
A voir également:

13 réponses

Bonjour

Avec "j'ai une erreur du genre undefined variable " on va te donner une réponse du genre : on ne peut pas dire grand chose.

Par contre, si tu copies-colles le message d'erreur exact, on pourra en dire un peu plus.

Ceci étant dit, c'est un bon début : il vaut mieux enregistrer les images dans un dossier comme c'est fait ici, mais il faut de plus enregistrer dans la base de nom du fichier pour pouvoir le retrouver plus tard. Le champ à créer est donc de type TEXT ou VARCHAR, mais pas BLOB.
0
Diedouch Messages postés 9 Date d'inscription samedi 21 décembre 2013 Statut Membre Dernière intervention 13 janvier 2014
28 déc. 2013 à 22:03
Merci de votre réponse

je suis conscient que je crée un fichier sans l'envoyer à ce stade dans la base de donnée

Pour simplifier mon problème.je l'ai décomposé en deux partie. la première est la création du fichier.

Pour l'envoyer dans la base de données ,je crois savoir faire.

Actuellement, je ne peux réussir à afficher l'image que j'ai uploadé

En voulant l'afficher ,l'idée est de vérifier si elle existe avant de l'envoyer dans la base de donnée
Je ne sais pas l'afficher (donc elle n'existe pas ?)

Mais dans quel fichier est elle réellement?

L'erreur qui apparait est:

( ! ) Notice: Undefined variable: fichier in C:\wamp\www\querer\upload_essai.php on line 5
Call Stack
# Time Memory Function Location
1 0.0027 248400 {main}( ) ..\upload_essai.php:0

Merci d'avance
D.
0
Utilisateur anonyme
28 déc. 2013 à 22:31
Ton erreur est à la ligne 5 du fichier upload_essai.php.
Le code que tu montres est-il celui de upload_essai.php ?
Si ce n'est pas le cas comme je le supppose fortement, peux-tu montrer le code de upload_essai.php ?
0
Diedouch Messages postés 9 Date d'inscription samedi 21 décembre 2013 Statut Membre Dernière intervention 13 janvier 2014
29 déc. 2013 à 08:44
Oui mon erreur est surement dans la ligne 5

Avant d'abandonner et en désespoir de cause j'avais écrit:

print '<img src="'.$fichier.'" alt="" width="2560" height="1920"/>';

Cela ne fonctionnait pas mais de toute façon ce n'était pas une bonne solution car dans ce cas la taille du fichier est imposée.

Je pense que la solution devrait être de reprendre une variable déjà écrite mais laquelle ,j'ai fait beaucoup d'essais en vain

Cordialement
D.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Si, c'était une bonne solution, à condition de la modifier un peu.
Mais on ne peut pas t'aider, tu ne donne pas les informations dont on a besoin pour ça.
Montre le script que tu utilises pour l'affichage.
0
Utilisateur anonyme
29 déc. 2013 à 09:29
Je viens de relire ton script pour enregistrer l'image. Tu as aussi un problème de variable non définie ici :
if (move_uploaded_file ($FILES['fichier']['tmp_name'], $destDir.$fichier_destination))  

D'où vient la variable $fichier_destination ? Elle n'apparaît nulle part avant. Et il te manquera un "/" entre $destDir et $fichier_destination
0
Diedouch Messages postés 9 Date d'inscription samedi 21 décembre 2013 Statut Membre Dernière intervention 13 janvier 2014
29 déc. 2013 à 12:07
pour moi $fichier_destination était la variable qui se créait après avoir fait upload.c'est dans cette variable que je pensais trouver mon image

Je vous renvoie tout le script qui est en fait copié d'un livre de C. Villeneuve "construisez votre application).si vous recopiez l'intégralié du script, cela pourrait peut être vous donner une idée

Pour essai.php


<html>
<head ></head>
<body>




<form enctype="multipart/form-data" action="upload_essai.php" method="POST" >
<input type="hidden" name="MAX_FILE_size" value= "4000000">
choisir un fichier :<input name="fichier" type="file">
<input type="submit" name="action" value ="envoi">

</form>


<?php

$destDir="upload";
if (sizeof($_POST)>0 && $FILES ['fichier'] && $FILES['fichier'] !="none")

{
if(!is_dir($destDir))
{
if (!@mkdir($destDir))
{
die ("erreur lors de la création du dossier $destDir");
}
}
@chmod($destDir,0777);

if (!file_exists($_FILES['fichier']['tmp_name']))
{
die("le fichier n'est pas passé.vérifier les critères");
}
$taille_max=$POST['MAX_FILE_SIZE'];
$taille_fichier= filesize ($_FILES['fichier']['tmp_name']);
if ($taille_max && ($taille_fichier > $taille_max))
{
die ("la taille du fichier est trop grande");
}
$ext=strrchr($FILES['fichier']['name'],'.');
$ext=substr ($ext,1);
$ext=strolower ($ext);
if ($ext!="jpg" && $ext!="jpeg" && $ext!="png" && $ext!="gif")
{
die ("le fichier n'est pas une image");
}
if (move_uploaded_file ($FILES['fichier']['tmp_name'], $destDir.$fichier_destination))
{
die ("le fichier est correctement passé");

}
else
echo ' problème de transfert';
}



?>

pour upload_essai.php


<html></html
<head></head>
<body>
<?php
print '<img src="'.$fichier.'" alt="" width="2560" height="1920"/>';
?>
</body>

Je n'ai rien de plus.

Villeneuve ne met pas "/" entre $destDir et $fichier_destination mais un simple point

Cordialement

D.
0
Utilisateur anonyme
29 déc. 2013 à 12:40
1 - je vois des $FILES là où il devrait y avoir des $_FILES. Il ne faut pas oublier le soulignement entre $ et FILES

2 - La variable $fichier_destination n'est pas définie et ça ne peut pas marcher comme ça. Il faut que tu donnes un nom sous lequel le fichier va être enregistré : tu peux faire par exemple :
$fichier_destination=$_FILES['fichier']['name'];
pour reprendre le nom original du fichier.

3 - Villeneuve ne met pas "/" entre $destDir et $fichier_destination mais un simple point
Ne mélangeons pas tout ! Il faut bien en point pour concaténer (mettre bout à bout) deux chaines. Mais sans / : voilà ce qui va se passer : si ton image s'appelle toto.jpg, tu vas l'enregistrer dans "uploadtoto.jpg" alors que tu voulais certainement dire "upload/toto.jpg".
Soit tu ajoutes un "/" dès le départ dans
$destDir="upload/";

Soit (mais pas les deux) tu l'ajoutes au moment du move_uploaded_files :
move_uploaded_file ($FILES['fichier']['tmp_name'], $destDir.'/'.$fichier_destination)


4 - on reparlera de upload_essai.php plus tard. Disons que si tu crois qu'une variable contient quelque chose parce que ça t'arrangerait bien, il va falloir reprendre l'apprentissage du PHP à partir de zéro.
0
Diedouch Messages postés 9 Date d'inscription samedi 21 décembre 2013 Statut Membre Dernière intervention 13 janvier 2014
30 déc. 2013 à 09:05
Merci de votre réponse

Je ne crois pas que nous soyons au bout de nos peines $fichier_destination=$_Files['fichier']['name'];
semble faire une erreur undefined variable
mais je reviendrai sur le sujet.Pour le moment je sature....je ne sais plus réfléchir
en attendant ..meilleurs voeux
D.
0
Utilisateur anonyme
30 déc. 2013 à 10:19
Évidemment, si tu écris $_Files au lieu de $_FILES ...
0
J'ai tout repris à partir d'un autre manuel

Je n'ai plus aucune erreur mais aucune image ne s'affiche dans le champ intitulé mon fichier de la bdd à qui j'ai donné le type blob puis vachar

Je reprends tout Le problème est surement au niveau de la liison entre e site et la bdd

<html>
<head> </head>
<body>
<?php

if (isset($_POST ['nom']))
{
$nom=$_POST ['nom'];
$email=$_POST ['mail'];
$msg=$_POST ['Msg'];
$monfichier=$_POST['monfichier'];
$titre=$_POST ['titre'];
$telephone=$_POST ['telephone'];
$quefaire=$_POST ['quefaire'];
$ou=$_POST ['ou'];
$quoi=$_POST ['quoi'];
$Date=date("d/m/Y");

mysql_connect("localhost","root","") or die ("connection impossible au serveur");
mysql_select_db ("bresil") or die ("database inconnue");
$date=date("d/m/y");
$sql= "INSERT INTO offre values ('','".$quefaire."','".$ou."','".$quoi."','".$titre."','".$msg."','".$monfichier."','".$nom."','".$telephone."','".$email."','".$date."')";
mysql_query ($sql) or die ("erreur");

echo"enregistement réussi";
}


if (isset($_FILES['monfichier']) AND $_FILES['monfichier']['error'] == 0 AND $_FILES['monfichier']['size'] <= 4000000)
{
$infosfichier = pathinfo($_FILES['monfichier']['name']);

if (in_array($infosfichier['extension'], array('jpg', 'jpeg', 'gif', 'png')))
{
move_uploaded_file($_FILES['monfichier']['tmp_name'], 'uploads/' . basename($_FILES['monfichier']['name']));
$monfichier = 'uploads/' . basename($_FILES['monfichier']['name']);
echo "L'envoi a bien été effectué !";


}
}

//formulaire

echo'
<form action="lepere.php?contenu=contact" method="POST" enctype="multipart/form-data">


<select name="quefaire">
<option value="Demanderoffir" >Demander/offrir</option>
<option value="demander" >Je demande</option>
<option value="offrir" >J\'offre</option>
</select>

<select name="ou">
<option value="emplacement" >emplacement</option>


</select>

<select name="quoi">
<option value="demande" >demande?</option>


<select/>

<br/>






Titre:<br/><input type="text" name="titre"/><br/><br/>
Message:<br/><textarea name="Msg"></textarea><br/><br/>
Photo á joindre:<br/><input type="texte" name="monfichier"/><input type="file" name="monfichier"/><br/><br/>

Nom:<br/><input type="text" name="nom"/><br/><br/>
Telephone:<br/><input type="value" name="telephone"/><br/><br/>

E-mail:<br/><input type="text" name="mail"/><br/><br/>

<input type="submit" name="valider" value="OK"/>


</form>
';
0
Utilisateur anonyme
2 janv. 2014 à 17:18
J'ai tout repris à partir d'un autre manuel Pourquoi ?
0
Diedouch Messages postés 9 Date d'inscription samedi 21 décembre 2013 Statut Membre Dernière intervention 13 janvier 2014
3 janv. 2014 à 08:47
La réponse est simple malgré vos indications , je n'arrivai pas au résultat .Il y avait toujours des erreurs

Maintenant je n'ai plus d'erreur mais néanmoins pas de fichier photo dans la bdd.
En recopiant ce que j'ai écrit sur notepad vous pouvez arriver au même résultat que moi et tester vos propositions

Ce qui m 'intéresse c'est le resultat final et donc la solution .Vos indications ne sont pas pour moi suffisantes. Je ne suis pas informaticien.j'ai commencé la programmation il y a moins d'un mois

Donc Merci de me donner la solution si vous la connaissez.

D.
0
Utilisateur anonyme
3 janv. 2014 à 10:05
Maintenant je n'ai plus d'erreur mais néanmoins pas de fichier photo dans la bdd.
C'est donc pire : avant, tu avais des indications pour te dire ce qui ne marchait pas, maintenant, tu n'en as plus ! Ce n'est pas un progrès, c'est de la marche arrière.
vous pouvez ... tester vos propositions . Toutes les propositions que je t'ai faites étaient parfaitement exactes et justifiées. Je t'ai donné les justifications, mais j'ai l'impression qu'elles ne t'ont pas intéressé.
Donc Merci de me donner la solution si vous la connaissez Je ne donne pas de programme tout fait. Ici, c'est un forum d'entraide : je veux bien t'aider, pas faire ton travail. J'avais commencé en t'expliquant tes erreurs, mais si tu changes complètement de solution, ça veut dire que ce que je t'ai dit avant, je l'ai fait en pure perte : la preuve, tu as recommencé la même erreur de majuscules / minuscules. Si tu veux une solution toute faite, je ne suis pas la personne qui te convient : re-pose ton sujet, tu trouveras peut-être ton bonheur. Bonne chance.
0