Programme d'annonce - gestion d'img

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Programme d'annonce - gestion d'img

par Johan » 30 janv. 2006, 14:13

Je remarque que lorsque je mets dans mon champs :

Code : Tout sélectionner

<input type="hidden" name="action" value="inserer" />
les informations (titre, prix, description, telephone ...) s'enregistre ainsi que le titre de la photo (ex : jackrussel2.jpg)
mais en revanche la photo ne s'envoie pas.

Par contre lorsque je mets dans mon champs :

Code : Tout sélectionner

<input type="hidden" name="30.php" value="inserer" /> L'img s'envoie bien mais pas le reste ... 30.php c'est le fichier du tuto d'uploard d'img Pouvez vous m'aider svp

par Johan » 30 janv. 2006, 13:51

Personne pour m'aider ?

par Johan » 30 janv. 2006, 01:48

Il me reste plus qu'à régler le pb du fichier non uploader ... pcq sinon désormais le nom du fichier puis son extension s'inscrivent bien dans le champ "photo" ... voici mes modif :
    // stockage dans la bdd
    $nom = $_POST['nom'];
    $email = $_POST['email'];
    $titre = $_POST['titre'];
    $telephone = $_POST['telephone'];
    $prix = $_POST['prix'];
    $photo = $_FILES['photo']['name'];
    $description = $_POST['description'];
    <p>Votre photo : <?php 
	if(isset($_FILES['photo']))
{
  // params
  unset($erreur);
  $extensions_ok = array('png', 'gif', 'jpg', 'jpeg', 'JPG');
  $taille_max = 200000000;
  $dest_dossier = 'photo/';
  // vérifications
  if( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) )
  {
    $erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !';  
  }
  elseif( file_exists($_FILES['photo']['tmp_name']) 
          and filesize($_FILES['photo']['tmp_name']) > $taille_max)
  {
    $erreur = 'Votre fichier doit faire moins de 500Ko !';
  }
  // copie du fichier
  if(!isset($erreur))
  {
    $dest_fichier = basename($_FILES['photo']['name']);
    // formatage nom fichier
    // enlever les accents
    $dest_fichier = strtr($dest_fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    // remplacer les caracteres autres que lettres, chiffres et point par _
    $dest_fichier = preg_replace('/([^.a-z0-1]+)/i', '_', $dest_fichier);
    // copie du fichier
    move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $dest_fichier);
  }
}


	?> 
	<input type="file" name="photo" /></p> 
Donc désormais pour l'upload ... il me semble qu'il me manque une "action" dans le début de mon form ... non ? dans le tuto :

Code : Tout sélectionner

<form method="POST" action="notre_script.php" enctype="multipart/form-data">
et moi :

Code : Tout sélectionner

<form method="post" enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>">

par Cyrano » 30 janv. 2006, 01:33

Pose toi les bonnes question: la programmation, c'est de la logique: que se passe-t-il à tel endroit du fichier: qu'est-ce qu'il devrait y avoir là ET POURQUOI, ce dernier point étant primordial.

par Johan » 30 janv. 2006, 01:31

Excusez moi mais bon je suis novice et oui j'ai passé du temps sur l'upload de fichier ... mais bon pas facile de tout comprendre !

J'arrive à utiliser l'upload seul ... mais intégré à mon formulaire non !

par Cyrano » 30 janv. 2006, 01:30

Tu as as du passer beaucoup de temps sur le tuto d'upload de fichier ... :-k

par Johan » 30 janv. 2006, 01:29

Oui mais sans succès .... ds mon champ photo de ma table il est rien écrit ... et lorsque j'envois mon formulaire remplie, voici ce qu'il m'arrive : Notice: Undefined variable: _ in g:\easyphp1-7\www\annonce web\inserer_annonce.php on line 29

Ligne 29 :

Code : Tout sélectionner

$photo = $_POST['photo'];

par Cyrano » 30 janv. 2006, 01:26

Tu as envoyé un fichier ?

par Johan » 30 janv. 2006, 01:25

voici ce que cela me marque :

Code : Tout sélectionner

array(0) { }

par Cyrano » 30 janv. 2006, 01:23

Je te l'ai pourtant mentionné : $_FILES est un tableau associatif : essaye ce bout de code, tu vas voir:
<pre>
<?php
var_dump($_FILES);
?>
</pre>
Mets ça juste à la récupération des données et regarde ce que ça va t'afficher.

par Johan » 30 janv. 2006, 01:18

J'ai avancé un peu ... voici mon code pour stocker dans la BDD :

Code : Tout sélectionner

// stockage dans la bdd $nom = $_POST['nom']; $email = $_POST['email']; $titre = $_POST['titre']; $telephone = $_POST['telephone']; $prix = $_POST['prix']; $photo = $_FILES['photo']; $description = $_POST['description']; if(!get_magic_quotes_gpc())
Je viens de mettre "FILES" après $photo=

mais je ne sais pas si c'est juste puisque désormais dans le champ photo de ma BDD il est indiqué que mon dernier ajout serait "Array" et là je suis un peu perdu.

Revoici donc mon formulaire ...

Code : Tout sélectionner

<form method="post" enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>"> <input type="hidden" name="action" value="inserer" /> <p>Votre nom : <input type="text" name="nom" /></p> <p>Votre email : <input type="text" name="email" /></p> <p>Titre de la vente : <input type="text" name="titre" /></p> <p>Votre prix : <input type="text" name="prix" /></p> <p>Votre telephone : <input type="text" name="telephone" /></p> <p>Description : <textarea name="description" cols="25" rows="10"></textarea></p> <p>Votre photo : <input type="file" name="photo" /></p> <p><input type="submit" name="Submit" value="Ok" /></p> </form>
Par ailleurs, la photo ne senvoie pas ...

Pouvez vous de nouveau me renseigner ? merci d'avance
Johan

par Johan » 30 janv. 2006, 00:55

Merci beaucoup, je vais essayé !

par Cyrano » 30 janv. 2006, 00:50

Ton champ pour enregistrer une fichier doit être un <inptup< type="file" et non type="text" : ça va créer un champ avec un bouton [Parcourir] permettant à l'internaute de chercher le fichier image qu'il veut envoyer.

Il faudra en outre ajouter dans la balise <form> l'attribut enctype avec la valeur multipart/form-data sinon le fichier ne sera pas transféré.

Coté PHP, tu récupèreras les données du fichiers dans la super-globale $_FILES qui est un tableau associatif contenant des informations dont tu auras besoin pour effectuer les traitements.

Le reste est dans le tuto.

par Johan » 30 janv. 2006, 00:44

Voici mon formulaire ...

Code : Tout sélectionner

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> <input type="hidden" name="action" value="inserer" /> <p>Votre nom : <input type="text" name="nom" /></p> <p>Votre email : <input type="text" name="email" /></p> <p>Titre de la vente : <input type="text" name="titre" /></p> <p>Votre prix : <input type="text" name="prix" /></p> <p>Votre telephone : <input type="text" name="telephone" /></p> <p>Description : <textarea name="description" cols="25" rows="10"></textarea></p> <p>Votre photo : <input type="text" name="photo" /></p> <p><input type="submit" name="Submit" value="Ok" /></p> </form>
En fait, je voudrai pouvoir associer ce formulaire avec le tutorial d'upload de fichier (présent ici : http://www.phpfrance.com/tutoriaux/inde ... e-fichiers)

Donc par conséquent que l'utilisateur entre toutes ces informations et qu'il finis par ajouter son img ... où le nom de l'img s'enregistre dans le champ "photo" de ma BDD puisque pour afficher les images ds les annonces j'utilise ce code suivant

Code : Tout sélectionner

<img width=100 src="photo/<?php print ($val["photo"]);?>"><br><a href="photo/<?php print ($val["photo"]);?>" target="_blank">Taille réelle</a>

par Cyrano » 30 janv. 2006, 00:37

Non, pas très clair : quelle partie ne fonctionne pas. D'autre part, à travers ta question transparait l'idée d'enregistrer l'image elle-même dans la base ce qui n'est pas la solution la plus facile loin s'en faut. Il y a un tuto sur l'upload de fichier sur le site, regarde là.

Sommairement, tu récupères les données du formulaire et tu fais ton traitement de fichier avant d'enregistrer le fichier lui-même dans un répertoire et les informations sur ce fichier dans la base de données.