insertion de photo dans une table

Eléphant du PHP | 62 Messages

17 juil. 2005, 23:30

salut,

j'ai ce bout de code dans mon formulaire

<tr>
<td><b>Votre Photo</b>ATTENTION : Format en JPG,Taille à respecter : 70 x 70 pixels.</td>
<td><input type='hidden' name='MAX_FILE_SIZE' value='10000'>
<input name='userfile' type='file'><br></td>
</tr>

lorsque je valide mon script d'insertion de données dans ma table j'ai dans le champ photo [blod] 5 octets c'est normal çà sinon aidez moi à le résoudre

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

17 juil. 2005, 23:48

si ta photo fait 5 octets oui c'est normal :lol:

sinon, il faudrait voir le dit script d'insertion pour pouvoir t'aider ;)

Eléphant du PHP | 62 Messages

31 juil. 2005, 12:50

salut,

ok c'est normal que 5octet dans mon champ. Je veux maintenant afficher la photo sur une page. j'ai fait un script pour uploader la photo mais cela ne marche pas. j'ai ce message d'erreur :

Notice: Undefined index: photo in c:\easyphp1-8\www\web\upload.php on line 29

Notice: Undefined index: photo in c:\easyphp1-8\www\web\upload.php on line 37

J'ai matérialisé la ligne d'erreur par (ligne 29)
<?php
 $photo = isset($_POST["photo"])  ?  $_POST["photo"] : ""; 
 $idConnexion = mysql_connect("localhost", "root", "");
  if ($idConnexion) echo "Connexion au serveur réussie";
  else echo "Connexion au serveur ratée";

  $connexionReussie = mysql_select_db("mabase");
  if ($connexionReussie) echo "Connexion à la base réussie";
  else echo "Connexion à la base ratée"; 
   
   	
  $requete = "select photo from table";
  $result = mysql_query($requete);
 
     
               
    if (!$result)
	 {
      echo "Le fichier n'a pas été charger.<br>";
	    
    }
	 else
	 {	 
	 
    $repertoireDestination = "data/"; 
(ligne29): $nomDestination        = $_FILES["photo"]["name"];
    if (eregi(".php", $nomDestination)) {
        $nomDestination .= ".txt";
    }
    
 ligne(37)   if (is_uploaded_file($_FILES["photo"]["tmp_name"])) {
        if (rename($_FILES["photo"]["tmp_name"],
                   $repertoireDestination.$nomDestination)) {
            echo "Le fichier temporaire ".$_FILES["photo"]["tmp_name"].
                 " a été déplacé vers ".$repertoireDestination.$nomDestination;
        } else {
            echo "Le déplacement du fichier temporaire a échoué".
                 " vérifiez l'existence du répertoire ".$repertoireDestination;
       }          
    } else {
       echo "Le fichier n'a pas été uploadé (trop gros ?)";
    } }

  mysql_close();
?> 

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

31 juil. 2005, 12:56

il te dit qu'il ne connait pas cet index

comment s'appelle ton input file dans ton formulaire ? il devrait s'appeler photo
si ce n'est pas le cas c'est pour ça qu'il ne connait pas "photo"

ce qui est bizarre c'est que tu récupères $_POST['photo'] puis $_FILES['photo']

tu es sûr que tu ne t'es pas mélangé entre les deux ?

Mammouth du PHP | 19672 Messages

31 juil. 2005, 13:02

Il y a une incohérence totale dans ton code : tu fais d'un coté une requête dans la base de données pour récupérer une photo, et sans transition tu essayes d'utiliser $_FILES qui provient d'un formulaire alors que tu n'utilises jamais le retour de ta requête SQL : quel est donc le lien entre ces deux parties de code ???
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 62 Messages

31 juil. 2005, 13:12

Voici mon imput:

<input name="photo" type="file">

Quand à la remarque de cyrano est ce qu'il faut supprimer la requête?

Mammouth du PHP | 19672 Messages

31 juil. 2005, 13:17

... est ce qu'il faut supprimer la requête?
J'en sais rien, à quoi sert-elle ? SI elle ne sert à rien, elle n'a rien à faire là, sinon, il manque du code qui en expliquerait la présence...
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 62 Messages

31 juil. 2005, 13:33

Voici ce que j'avais au départ, et cela me donnait l'erreur suivant:
Notice: Undefined index: photo in c:\easyphp1-8\www\web\upload.php
<?php
    $photo = isset($_POST["photo"])  ?  $_POST["photo"] : "";
    $repertoireDestination = "data/";
    $nomDestination        = $_FILES["photo"]["name"];

    // Pour raison de sécurité nous ajouterons aux fichiers
    // portant une extension .php .php3, l'extension .txt
    if (eregi(".php", $nomDestination)) {
        $nomDestination .= ".txt";
    }
    
    if (is_uploaded_file($_FILES["photo"]["tmp_name"])) {
        if (rename($_FILES["photo"]["tmp_name"],
                   $repertoireDestination.$nomDestination)) {
            echo "Le fichier temporaire ".$_FILES["photo"]["tmp_name"].
                 " a été déplacé vers ".$repertoireDestination.$nomDestination;
        } else {
            echo "Le déplacement du fichier temporaire a échoué".
                 " vérifiez l'existence du répertoire ".$repertoireDestination;
       }          
    } else {
       echo "Le fichier n'a pas été uploadé (trop gros ?)";
    }
?>
Et c'est pour régler ce problème que j'ai voulu faire une requete sur le champ photo de ma base

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

31 juil. 2005, 14:00

est-ce que tu arrives bien sur ce script en soumettant un formulaire avec un champ de type "file" qui s'appelle "photo" ?
si tu ne le fais pas, c'est normal qu'il ne connaisse pas "photo"

à quoi correspond la variable $_POST['photo'] que tu récupères au début ?

soyons clair :

$_FILES['photo'] permet de récupérer un fichier les infos qui vont avec de :

Code : Tout sélectionner

<iinput type="file" name="photo">
$_POST['photo'] permet de récupérer la valeur de :

Code : Tout sélectionner

<input type="text" name="photo">
je pense qu'il serait bien de voir le formulaire qui va avec ton script

Eléphant du PHP | 62 Messages

31 juil. 2005, 14:14

voici mon formaire réduit:

Code : Tout sélectionner

<html> <head> </head> <body> <FORM action="testvalide.php" method="POST" enctype="multipart/form-data" > <font face='Verdana,Arial,sans-serif'color='#023161'> <table border="0" summary=""> <tr> <td>Pseudo</td> <td><input type="text" name="pseudo" maxlength="6" value=""/><br></td> </tr> <tr> <td>Mot de passe</td> <td><input type="password" name="motdepasse" maxlength="6"value=""/><br></td> </tr> <tr> <td> <font face='Verdana,Arial,sans-serif' size='3' color='#023161'><b>Votre Photo</b></font> <font face='Verdana,Arial,sans-serif'color='#023161'>ATTENTION : Format en JPG,Taille à respecter : 70 x 70 pixels.</font> <br> <br> <input type="hidden" name="MAX_FILE_SIZE" value="100000"> <input name="photo" type="file"> </td> <tr> <td><INPUT TYPE="submit" VALUE="Envoyer " name="Envoyer"> </td> <td><INPUT type="reset" value="Annuler"><br></td> </tr> </table> </FORM> </body> </html>

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

31 juil. 2005, 14:51

donc déjà ce que je pensais : pas de champ texte nommé "photo", donc tu ne récupéreras pas de $_POST['photo']

Eléphant du PHP | 62 Messages

31 juil. 2005, 15:11

Si je comprends bien je remplace dans <input name="photo" type="file"> type="file" par type="text"

Mammouth du PHP | 19672 Messages

31 juil. 2005, 15:15

:shock: Dis moi Topaze, est-ce qu'il t'arrive de réfléchir avant de dire une énormité ? Ou alors tu n'y connais non seulement pas grand chose en PHP, ce qui n'est en rien blâmable, mais tes connaissances en HTML frisent également le zéro ???

Comment feras-tu choisir un fichier image à l'internaute avec un champ texte ?

Tu dois utiliser un champ de type "file", mais tu le récupères avec la super-globale $_FILES et non $_POST.

Un peu de logique élémentaire serait à mon avis une base primordiale...
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 62 Messages

31 juil. 2005, 15:29

Et oui je suis débutant en php. On m'a donné une réponse et je cherche à comprendre en posant la question. Cela n'a rien à voir avec mes connaissance en html. Je pense sans me tromper que le forum est fait pour aider des personnes comme moi qui ne maitrisent pas la programmation. Car si je suis sur le forum c'est pour apprendre sinon je ne serai pas là. Un peu de retenu dans vos propos SVP.

Mammouth du PHP | 19672 Messages

31 juil. 2005, 15:41

Le problème n'est même pas là: je suis toujours surpris de voir des gens se lancer dans la programmation avec un évident manque de logique. Commencer avec quelque tutos serait peut-être une option à envisager avant de te lancer dans des scripts. Tu as toute une série de tutoriels structurés sur phpdebutant par exemple, à mon avis, tu gagnerais un temps considérable à le suivre l'un après l'autre.

Note bien que je ne te chasse pas, ce n'est pas le propos, mais une question à la fois, il va te falloir un temps considérable pour parcourir bien peu de chemin.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: