Euskalor
Messages postés40Date d'inscriptionmardi 4 mars 2008StatutMembreDernière intervention22 avril 2010
-
6 mars 2008 à 17:50
linkinnissou
Messages postés3Date d'inscriptionmercredi 21 avril 2010StatutMembreDernière intervention22 avril 2010
-
22 avril 2010 à 21:05
Salut à toutes et à tous !
Je souhaiterais savoir comment faire pour mettre une image dans une base de donnée MySQL via un code PHP. Etant débutant en PHP, je ne connais pas toutes les fonctions et malgré avoir trouvé des codes pouvant m'aider.
Le problème est que j'ai trouvé un code sur internet me permettant de faire l'opération que je souhaite. Mais en éxécutant le code je vois s'afficher une erreur concernant les fonctions " fread " et " fopen " ( fonctions inconnues me dit-elle ), malgré le bon fonctionnement du code en général car en effet je vois bien que la base de donnée a bien enregistré l'id correspondant à ma tentative.
Alors je voudrais savoir si je suis obligé d'utiliser fread et fopen dans mon code pour permettre l'envoi de l'image dans ma base de donnée ?
Voici la partie du code qui me pose problème :
<?php
mysql_connect ....
$données=addslashes(fread(fopen($image, "r"),filesize($image)));
$result=mysql_query("INSERT INTO ....
J'ai testé ce code en interne sur mon ordinateur en chargeant une image par le biais d'un input type ="file". Est-ce possible que ça ne fonctionne pas comme cela ?
Merci d'avance de bien vouloir éclairer ma lanterne !!
Euskalor
Messages postés40Date d'inscriptionmardi 4 mars 2008StatutMembreDernière intervention22 avril 2010 9 mars 2008 à 18:16
Bon j'ai toujours un problème lors de l'affichage. Soit j'ai toujours le code binaire de l'image qui s'affiche soit j'ai un écran blanc.
J'ai bien vérifier dans ma base de donnée si le ficher était bien là. Et il l'est car je voit bien la taille exacte de la photo dans ma base.
Mais je voulais savoir si d'une par mon code était bon pour l'insertion de la photo dans ma base ( je pense que oui car le transfert à bien lieu ).
Et surtout si lors du transfert, il prend aussi le type de fichier ( soit jpeg ).
Voci le code pour l'envoi de la photo vers la base donnée :
$donnees = file_get_contents($_FILES['photo']['tmp_name']);
$query = "INSERT INTO image (donnee_binaire) VALUES ('".addslashes($donnees)."')";
$result = mysql_query($query) or die("
Enregistrement en BDD impossible !!
".$query."
");
$id = mysql_insert_id();
print "
Indentifiant du fichier dans la base: $id
";
mysql_close();
if(!$result)
echo"Enregistrement absent
";
else
echo"Enregistrement en base effectué :)
";
J'ai lu aussi qu'il fallait faire un fichier php pour l'upload de l'image et un autre fichier html pour l'afficher, est-ce vraiment nécessaire ? Ou est-il possible de lfaire sue une seule et même page en php.
Pour l'affichage, j'ai essayer sur une seule page le lecture de la base avec " SELECT*FROM ..... et tenter de l'afficher avec un " echo"img src="".$(result) etc.... Sans le header il m'affiche le code binaire avec c'est la page blanche.
Je pense qu'il y a un problème que je ne dois pas la voir au vu des mes connaissances en php, je dois surement faire une erreur quelque part.
Euskalor
Messages postés40Date d'inscriptionmardi 4 mars 2008StatutMembreDernière intervention22 avril 2010 7 mars 2008 à 11:39
Bonjour !
Je te remercie pour ta réponse coucou 747 ! J'ai eu beau chercher sur internet je n'avais pas trouvé cette fonction ^^ En effet ça va être plus lisible !!
Je ne la connaît pas non plus mais j'en déduit qu'il fut que je réécrive la ligne avec les fred etc ... Je vais faire des essais avec pour trouver son fonctionnement je suis ravi :)
Sinon pour l'enregistrement je le fait dans un type LONGBLOB.
Tiens une autre question du coup me vient ! Je suppose que je dois garder les champs dans ma base donnée de taille et de type du fichier ? Je m'éloigne je suis proche ?
Je vais quand même chercher !! Ce qui est bien avec le PHP c'est que ça fonctionne avec la logique tout s'explique du moment qu'on a les bon outils :)
A bientôt et merci encore :)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Euskalor
Messages postés40Date d'inscriptionmardi 4 mars 2008StatutMembreDernière intervention22 avril 2010 8 mars 2008 à 03:06
Merci beaucoup pour tes conseils ! L'envoi des données dans ma base de donnée marche bien ! J'ai pas réussi du premier coup car il me manquait des codes. Mais j'ai cherché comment bien utiliser cette fonction dans des bouquin et sur le net !!
Maintenant je travaille sur l'affichage de la photo à partir d'une autre page web. Pour l'instant je n'ai le droit qu'au cryptage de la photo pas l'image. Mais j'y travaille et je trouverais !
Euskalor
Messages postés40Date d'inscriptionmardi 4 mars 2008StatutMembreDernière intervention22 avril 2010 9 mars 2008 à 18:40
Voilà juste pour dire que j'ai trouvé l'erreur !!!! L'insertion est bonne !! J'avait juste mal place mon header !! Tout marche à la perfection !!
Conclusion !! Copier coller un code déjà pondu ça ne ser à rien car la plupart du temps ça ne marche pas ! Le mieux c'est de voir comment il fonctionne apprendre les fonctions qu'on ne connaît et faire son propre code !! Comme on aprrend on comprend et on avance dans le monde php :) !!
PS : YOUPI ! Je suis content d'avoir trouvé tout seul enfin presque !!! Les pistes ou grands chemins de coucou 747 m'ont beaucoup aider. Je te remercie de ne pas m'en avoir trop dit non plus sinon je n'aurais pas compris ce que je faisais !!
linkinnissou
Messages postés3Date d'inscriptionmercredi 21 avril 2010StatutMembreDernière intervention22 avril 2010 21 avril 2010 à 14:24
salut Euskalor,j'ai fait le même code que vous et n'as pas marché,il a un problème au niveau de la fonction "file_get_contents" et à ce que j'ai compris il ne recoit pas l'image,pouvez vous m'aidez,c'est trés urgent pour mon projet de fin d'étude.j'attend merci
Euskalor
Messages postés40Date d'inscriptionmardi 4 mars 2008StatutMembreDernière intervention22 avril 2010 21 avril 2010 à 21:34
Salut !!
Un extrait de ton code concerné me serait utile pour pouvoir apporter une réponse.
Sinon, sache que l'envoi d'un fichier photo dans une BDD n'est pas vraiment la meilleure des solutions. D'ailleurs je n'utilise plus tout à fait ce script.
La meilleure méthode à mon sens est de télécharger le fichier photo dans un répertoire de ton serveur et de copier son chemin d'accès dans la BDD !
linkinnissou
Messages postés3Date d'inscriptionmercredi 21 avril 2010StatutMembreDernière intervention22 avril 2010 22 avril 2010 à 17:12
merci beaucoup pour votre réponse,mais tout va bien,j'ai trouvé la solution en ce qui concerne l'upload de l'image.mais j'ai une autre question si ca vous dérange pas,dans mon projet j'ai un tableau qui contient des données des étudiants,chaque ligne correspond à un étudiant et qui contient une case à cocher,lorsque je coche d'une ligne j'insère les données dans une autre table,mon problème c'est que la requete ne permet que la l'insertion des données de la dernière ligne malgrès que je l'ai pas coché.sachant que toutes les autres requetes fonctionnent avec mon code,seulement insert into.
Voici mon code:(delete est mon checkbox)
<?
$id=$_POST['id'];
if(!isset($id)){
die("id erronné");
}
$nom=$_POST['nom'];
if(!isset($nom)){
die("nom erronné");
}
$prenom=$_POST['prenom'];
if(!isset($prenom)){
die("prenom erronné");
}
$naissance=$_POST['naissance'];
if(!isset($naissance)){
die("date erronné");
}
$adresse=$_POST['adresse'];
if(!isset($adresse)){
die("adresse erronné");
}
linkinnissou
Messages postés3Date d'inscriptionmercredi 21 avril 2010StatutMembreDernière intervention22 avril 2010 22 avril 2010 à 21:05
voici mon formulaire:(la code dont je te l'ai envoyé dans le message précedent est de la page fenetre2.php)
<form name="formulaire" method="POST" action="fenetre.php">
<?php
// on se connecte à MySQL
$db = mysql_connect('localhost', 'root', '');
// on sélectionne la base
mysql_select_db('nessrine',$db);
if($_POST['ok'])
{
$naissance=$_POST['naissance'];
if(!isset($naissance)){
die("année erronné");
}
$sql = "SELECT id,nom,prenom,naissance,adresse,num FROM affilié WHERE '".$naissance."'-(SELECT EXTRACT(YEAR FROM naissance))='20' AND etat='invalide'";
$result = mysql_query($sql) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);
// si on a récupéré un résultat on l'affiche.