Remplir une base

Eléphant du PHP | 440 Messages

18 déc. 2009, 11:13

Bonjour,

j'ai un formulaire qui doit remplir une base. Il fonctionne presque bien ! Pour une raison qui m'échappe à la place du nom, j'ai le mdp et à la place du prénom, j'ai l'Enseigne.

Question subsidiaire, le champ file ne fonctionne pas.

Voici les codes si vous pouvez m'aider :
<form method="POST" action="add.php" enctype="multipart/form-data">
  <div align="left"> 
    <select name="titre" cols="4"><option>M.</option>
<option>Mme</option>
<option>Mlle</option></select>
    <br>
    <input type="text" name="nom" size="50" value="nom" >
    <br>
    <input type="text" name="email" size="50" value="e-mail">
    <br>
    <input type="text" name="login" size="50" value="login" >
    <br>
    <input type="text" name="mdp" size="50" value="mdp" >
    <br>
    <input type="text" name="prenom" size="50" value="prenom" >
    <br>
    <input type="text" name="adresse" size="50" value="adresse">
    <br>
    <input type="text" name="adresse2" size="50" value="adresse2">
    <br>
    <input type="text" name="cp" size="10" value="cp">
    <br>
    <input type="text" name="ville" size="50" value="ville">
    <br>
    <input type="text" name="tel" size="15" value="tél">
    <br>
    <input type="text" name="mob" size="15" value="mob">
    <br>
    <input type="text" name="fax" size="15" value="fax">
    <br>
    <input type="text" name="web" size="50" value="url du site">
    <br>
    <select name="activite" cols="50">
      <option>Accompagnement de PME</option>
<option>Affaires internationales</option>
<option>Agence de communication</option>
<option>Agence de presse</option>
<option>Agence de voyages</option>
<option>Agro-alimentaire</option>
<option>Archivage </option>
<option>Artistique  </option>
<option>Assistance commerciale</option>
<option>Assurances</option>
<option>Automobile</option>
<option>Avocat </option>
<option>Boutique </option>
<option>BTP</option>
<option>Bureau d'études techniques</option>
<option>Cadeaux</option>
<option>Cinéma</option>
<option>Climatisation</option>
<option>Coaching</option>
<option>Communication</option>
<option>Conciergerie d'entreprise</option>
<option>Créations graphiques</option>
<option>Cuisine</option>
<option>Décoration </option>
<option>Design</option>
<option>Ecrivain public</option>
<option>Editions</option>
<option>Emballage</option>
<option>Emploi</option>
<option>Energies Renouvelables</option>
<option>Enseignement privé</option>
<option>Environnement</option>
<option>Evénementiel</option>
<option>Expertise comptable</option>
<option>Finance</option>
<option>Fiscalité </option>
<option>Formation</option>
<option>Galerie d'art</option>
<option>Habillement</option>
<option>Hôtellerie-Restauration</option>
<option>Humanitaire</option>
<option>Hygiène</option>
<option>Immobilier</option>
<option>Import-Export</option>
<option>Imprimerie </option>
<option>Informatique</option>
<option>Investigations</option>
<option>Isolation</option>
<option>Joaillerie de luxe</option>
<option>Location de bateaux</option>
<option>Location de véhicules </option>
<option>Loisirs</option>
<option>Management</option>
<option>Marketing</option>
<option>Mobilier</option>
<option>Mobilier urbain</option>
<option>Mode</option>
<option>Nettoyage </option>
<option>Nouvelles énergies</option>
<option>Papeterie</option>
<option>Photographie</option>
<option>Piscines</option>
<option>Placements, patrimoine</option>
<option>Prêts professionnels</option>
<option>Prêt-à-porter</option>
<option>Promoteur, Constructeur</option>
<option>Reconnaissance vocale</option>
<option>Recouvrement de créances</option>
<option>Recrutement</option>
<option>Relation presse / Relations publiques</option>
<option>Remise en forme</option>
<option>Rénovation & traitement des sols</option>
<option>Ressources humaines</option>
<option>Restauration</option>
<option>Santé, beauté</option>
<option>Secrétariat</option>
<option>Sécurité</option>
<option>Services à la personne</option>
<option>Services aux entreprises</option>
<option>Sophrologie</option>
<option>Soutien scolaire</option>
<option>Sports</option>
<option>Stores</option>
<option>Télécommunications</option>
<option>Tendances</option>
<option>Tourisme</option>
<option>Traduction</option>
<option>Traiteur</option>
<option>Transport</option>
<option>Vidéosurveillance</option>
<option>Vins & spiritueux</option>
<option>Vote électronique</option>
<option>Web agency</option>
<option>Yacht</option></select>
    <br>
    <input type="text" name="Enseigne" size="50" value="enseigne">
    <br>
    <textarea name="presentation" cols="50" br="br">presentation</textarea>
    <br>
    <input type="file" name="photo" size="20" value="photo">
    <br>
    <input type="submit" value="Envoyer" name="envoyer">
</div>
</form>
<?php
// On commence par récupérer les champs
if(isset($_POST['titre']))      $prenom=$_POST['titre'];
else      $titre="";

if(isset($_POST['nom']))      $nom=$_POST['nom'];
else      $nom="";

if(isset($_POST['email']))      $email=$_POST['email'];
else      $email="";

if(isset($_POST['login']))      $nom=$_POST['login'];
else      $login="";

if(isset($_POST['mdp']))      $nom=$_POST['mdp'];
else      $mdp="";

if(isset($_POST['prenom']))      $prenom=$_POST['prenom'];
else      $prenom="";

if(isset($_POST['adresse']))      $prenom=$_POST['adresse'];
else      $adresse="";

if(isset($_POST['adresse2']))      $prenom=$_POST['adresse2'];
else      $adresse2="";

if(isset($_POST['cp']))      $prenom=$_POST['cp'];
else      $cp="";

if(isset($_POST['ville']))      $prenom=$_POST['ville'];
else      $ville="";

if(isset($_POST['tel']))      $prenom=$_POST['tel'];
else      $tel="";

if(isset($_POST['mob']))      $prenom=$_POST['mob'];
else      $mob="";

if(isset($_POST['fax']))      $prenom=$_POST['fax'];
else      $fax="";

if(isset($_POST['web']))      $url=$_POST['web'];
else      $web="";

if(isset($_POST['activite']))      $prenom=$_POST['activite'];
else      $activite="";

if(isset($_POST['presentation']))      $prenom=$_POST['presentation'];
else      $presentation="";

if(isset($_POST['Enseigne']))      $prenom=$_POST['Enseigne'];
else      $Enseigne="";

if(isset($_POST['photo']))      $prenom=$_POST['photo'];
else      $photo="";

       // connexion à la base
$db = mysql_connect('', '', '')  or die('Erreur de connexion '.mysql_error());
// sélection de la base  

    mysql_select_db('',$db)  or die('Erreur de selection '.mysql_error());
    
    // on écrit la requête sql
    $sql = "INSERT INTO infos_tbl(titre, nom, email, login, mdp, prenom, adresse, adresse2, cp, ville, tel, mob, fax, web, activite, presentation, Enseigne, photo) VALUES('$titre','$nom','$email','$login', '$mdp', '$prenom','$adresse','$adresse2','$cp','$ville','$tel','$mob','$fax','$web','$activite','$presentation', '$Enseigne', '$photo')";
    
    // on insère les informations du formulaire dans la table
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

    // on affiche le résultat pour le visiteur
    echo 'Vos infos on été modifiées.';

    mysql_close();  // on ferme la connexion
?> 
Merci pour votre aide.
Débutant complet en php/mysql. Merci pour votre aide.

Eléphanteau du PHP | 10 Messages

18 déc. 2009, 23:44

Bonsoir,

Tu utilises ta variable "$prenom" plusieurs fois dans ton code ce qui fais que tu écrases ce qu'elle contient (un copié/collé trop rapide ? ^^)

Pour ton champ file il faut utiliser la super globale $_FILES et non $_POST, $_POST ne te ramènera que le nom de ton fichier (la chaine de caractères contenue dans l'attribut "value" de ton champ file)


Bonne soirée ! :)

Eléphant du PHP | 440 Messages

21 déc. 2009, 10:28

voilà ce qui se passe quand on va trop vite ... la première partie du problème est résolu.

J'ai remplacé $_POST par $_FILES, je reçois "array" dans la base !!
Débutant complet en php/mysql. Merci pour votre aide.

Eléphanteau du PHP | 10 Messages

21 déc. 2009, 13:14

C'est parce que $_FILES est un tableau :
Array
        (
            [name] => Le nom du fichier
            [type] => le type mime du fichier
            [tmp_name] => le chemin vers où a été uploadé le fichier (temporaire)
            [error] => code erreur
            [size] => la taille du fichier
        )
Plus d'infos http://www.php.net/manual/fr/reserved.v ... .files.php

Eléphant du PHP | 440 Messages

21 déc. 2009, 15:03

C'est parce que $_FILES est un tableau :
Array
        (
            [name] => Le nom du fichier
            [type] => le type mime du fichier
            [tmp_name] => le chemin vers où a été uploadé le fichier (temporaire)
            [error] => code erreur
            [size] => la taille du fichier
        )
Plus d'infos http://www.php.net/manual/fr/reserved.v ... .files.php
Merci pour le lien, mais franchement, j'ai rien compris !!
Le code que tu m'indiques je dois le marquer où ? Je dois renseigner tous les champs ? Le chemin ... vers où ça ?
Débutant complet en php/mysql. Merci pour votre aide.

Mammouth du PHP | 672 Messages

21 déc. 2009, 15:20

Merci pour le lien, mais franchement, j'ai rien compris !!
Le code que tu m'indiques je dois le marquer où ? Je dois renseigner tous les champs ? Le chemin ... vers où ça ?
Dans la page qu'il te donne, il y a un lien vers Chargements de fichiers par méthode POST, qui est plus clair.

Côté client : je remplis mon formulaire, en remplissant le champ "file". J'envoie le formulaire (et le fichier).
Côté serveur : je stocke le fichier envoyé dans un répertoire temporaire. La variable $_FILES contient les informations nécessaires pour le traitement :
- Le nom original du fichier
- Le nom temporaire
- La taille
- Le type MIME

Eléphant du PHP | 440 Messages

21 déc. 2009, 15:48

j'ai modifié le fichier php ainsi
if(isset($_FILES['photo']))      $photo=$_FILES['photo'];
else      $photo="";
$uploaddir = 'www/uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

echo '<pre>';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
    echo "Le fichier est valide, et a été téléchargé
           avec succès. Voici plus d'informations :\n";
} else {
    echo "Attaque potentielle par téléchargement de fichiers.
          Voici plus d'informations :\n";
}

echo 'Voici quelques informations de débogage :';
print_r($_FILES);

echo '</pre>';
et le formulaire

Code : Tout sélectionner

<input type="hidden" name="MAX_FILE_SIZE" value="30000" /><input type="file" name="photo" size="20" value="photo">
Mais je n'ai toujours rien de mieux que "array" dans ma base et strictement rien dans le répertoire "upload" créé.

Et voici ce qui s'affiche à l'écran

Code : Tout sélectionner

Attaque potentielle par téléchargement de fichiers. Voici plus d'informations : Voici quelques informations de débogage :Array ( [photo] => Array ( [name] => n3.jpg [type] => [tmp_name] => [error] => 2 [size] => 0 ) ) Vos infos on été modifiées.
Débutant complet en php/mysql. Merci pour votre aide.

Mammouth du PHP | 672 Messages

21 déc. 2009, 16:02

Tu devrais essayer d'afficher les erreurs :
echo $_FILES['userfile']['error'];
Tu trouveras ICI la signification des différents messages...

Eléphanteau du PHP | 10 Messages

21 déc. 2009, 17:13

Tu devrais essayer avec $_FILES['photo'] plutot que $_FILES['userfile'] (photo étant le nom de ton champ d'upload)

Les copié/collé c'est bien mais faut bien vérifié ^^

Eléphant du PHP | 440 Messages

22 déc. 2009, 12:01

J'ai remplacé ['userfile'] par ['photo'], mais j'en suis au même point !
if(isset($_FILES['photo']))      $photo=$_FILES['photo'];
else      $photo="";
$uploaddir = 'www/uploads/';
$uploadfile = $uploaddir . basename($_FILES['photo']['name']);

echo '<pre>';
if (move_uploaded_file($_FILES['photo']['tmp_name'], $uploadfile)) {
    echo "Le fichier est valide, et a été téléchargé
           avec succès. Voici plus d'informations :\n";
} else {
    echo "Attaque potentielle par téléchargement de fichiers.
          Voici plus d'informations :\n";
}
Débutant complet en php/mysql. Merci pour votre aide.

Mammouth du PHP | 672 Messages

22 déc. 2009, 12:09

Mets ça au début de ton script, c'est un début pour identifier le problème...
// On commence par regarder le contenu de $_FILES pour debuggage
// A faire avant tout traitement...
if (empty($_FILES)) {
   echo 'Rien !';
}
else {
   echo '<pre>';
   var_dump($_FILES);
   echo '</pre>';
}

Eléphant du PHP | 440 Messages

22 déc. 2009, 12:24

Voici ce que j'obtiens

Code : Tout sélectionner

array(1) { ["photo"]=> array(5) { ["name"]=> string(6) "n3.jpg" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(2) ["size"]=> int(0) } } Attaque potentielle par téléchargement de fichiers. Voici plus d'informations : Voici quelques informations de débogage :Array ( [photo] => Array ( [name] => n3.jpg [type] => [tmp_name] => [error] => 2 [size] => 0 ) ) Vos infos on été modifiées.
Débutant complet en php/mysql. Merci pour votre aide.

Mammouth du PHP | 672 Messages

22 déc. 2009, 12:45

Voici ce que j'obtiens

Code : Tout sélectionner

array(1) { ["photo"]=> array(5) { ["name"]=> string(6) "n3.jpg" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(2) ["size"]=> int(0) } }
Code erreur => 2.
Explication du manuel PHP :
UPLOAD_ERR_FORM_SIZE
Valeur : 2. Le fichier téléchargé excède la taille de MAX_FILE_SIZE, qui a été spécifiée dans le formulaire HTML.
Tu envoies un fichier trop volumineux !

Eléphant du PHP | 440 Messages

22 déc. 2009, 12:51

le fichier téléchargé fait 76 ko pour 3000 autorisé dans le formulaire !
Débutant complet en php/mysql. Merci pour votre aide.

Mammouth du PHP | 672 Messages

22 déc. 2009, 15:26

le fichier téléchargé fait 76 ko pour 3000 autorisé dans le formulaire !
Je ne vois pas de ligne limitant la taille à 3000 dans ton formulaire (premier post).

Tu peux essayer avec un fichier de moins de 20 ko ?
Sinon, tu as un truc de ce genre, dans ton formulaire ?
<input type="hidden" name="MAX_FILE_SIZE" value="500000" />