Inserer une photo

  • Auteur de la discussion Auteur de la discussion Mth
  • Date de début Date de début
WRInaute occasionnel
Bonjour à tous,

Voila, je progresse petit à petit dans la réalisation de mon site.

Actuellement, je voudrais insérer des photos dans mes annonces.

Mes connaissances actuelles encore très réduites me permettent de:
- enregister dans ma bdd des textes
- uploader un fichier photo sur mon site

Avant d'aller plus loin, je viens donc prendre vos conseils sur la façon de procéder pour lier ces deux éléments:

les photos peuvent-elles être un champs de la bdd
ou dois-je définir dans le script php que le fichier importé s'appelle image-(n°id de l'enregistrement).jpg

Comment procède-t-on en général dans ce cas.

Merci de vos bons conseils.
 
WRInaute impliqué
Les bdd possédant des champs blob binaire devraient pouvoir stocker l´image, mais je ne pense pas que cela soit une bonne chose, car cela occupera beaucoup de ressource pour pas grand chose.
Le mieux serait donc de mettre un champs contenant le nom de l´image, puis faire un dossier contenant toutes ces images. Enfin lors de l´appel bdd, tu sors tout, dont l´adresse de l´image.
 
WRInaute occasionnel
Merci correiaj,

J'étais justement partie sur cette solution d'un repertoire avec les photos.
Il me reste à bien comprendre pour la mettre en oeuvre:

j'ajoute un champs "image" dans ma bdd (de type varchar?)


dans lequel je veux que s'enregiste le chemin de la photo uploadée avec l'id de l'enregistement comme repère exemple: /repertoire/image-25.jpg

et qu'en même temps le fichier image soit enregistré dans le site avec ce nom

en utilisant le même formulaire bien sur.

C'est bien ça?

Mon problème est de faire ces deux enregistrements dans un même formulaire.

Si on peut m'aider un peu plus, merci beaucoup
 
WRInaute discret
Oui tu as tout compris comment il fallait faire:
dans ton formulaire tu mets un input type=file puis tu upload vers le serveur. Ensuite tu le copies en respectant un nom par exemple : repertoire/image-$idimage.jpg
Donc dans ta bdd tu n'es même pas obligé de rajouter un champ pour ensuite afficher l'image ;)
 
WRInaute occasionnel
Donc, je suis déjà sur la bonne piste, c'est le principal


dans ton formulaire tu mets un input type=file puis tu upload vers le serveur. Ensuite tu le copies en respectant un nom par exemple : repertoire/image-$idimage.jpg

avec un input type=file, pas de problème, j'ai le fichier sur le serveur.

Mais comment je fais le rapprochement entre ce fichier que je peux renommer et le reste des données importées par le formulaire, pour savoir à quel enregistrement il correspond . :cry:

Je vais pas tarder à tout comprendre, encore un petit effort :)

Merci à tous
 
WRInaute impliqué
Logiquement, tu as une table avec un auto increment (id), et chaque ligne correspond à un enregistrement. Donc en extrayant cette ligne tu auras toutes les infos...
 
WRInaute occasionnel
Bon voila,
avec les renseignements précédents qui m'ont été donnés, je n'ai plus qu'un petit probleme



Code:
<?php

$reponse = mysql_query("SELECT * FROM annonces ORDER BY id DESC LIMIT 0,1"); 

while ($donnees = mysql_fetch_array($reponse) )
{
echo $donnees['id'];
echo "<br />";
}

mysql_close(); // Déconnexion de MySQL
?>




<?php
if(!empty($_FILES['fichier_source']['tmp_name']) AND is_uploaded_file($_FILES['fichier_source']['tmp_name']))
{


if(filesize($_FILES['fichier_source']['tmp_name'])<60000)
{


list($largeur, $hauteur, $type, $attr)=getimagesize($_FILES['fichier_source']['tmp_name']);

//Si le Type est JPEG (correspond au chiffre 2) on copie l'image
if($type===2)
{

//Copie le fichier dans le répertoire de destination
if(move_uploaded_file($_FILES['fichier_source']['tmp_name'], 'repertoire/image$donnees['id'].jpg'))
{

//Le fichier a été uploadé correctement
echo 'Ok, fichier envoyé correctement';
}
else
{
//Erreur
echo 'Erreur lors de la copie du fichier';
}

}

}

}
?>


Avec ce code qui fait suite au code d'inscription d'un enregistrement, j'ai bien la dernière id de ma bdd qui s'imprime en echo, donc je dois pouvoir l'utiliser dans le move_uploaded_file.



Sauf que je ne sais pas comment écrire cette donnée dans (move_uploaded_file($_FILES['fichier_source']['tmp_name'], 'repertoire/image$donnees['id'].jpg')

pars error



Que dois-je mettre au lieu de $donnes[id] pour récupérer cette donnée dans le nom de mon fichier?

Merci de votre aide
 
WRInaute occasionnel
Bon, ça y est, ouf

en fait ma boucle while était fermée trop tot,
et avec le nom du fichier repertoire/image-' . $id . '.jpg
c'est impeccable.

Merci de vos bons conseils
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut