Page 1 sur 2
insertion de photo dans une table
Posté : 17 juil. 2005, 23:30
par Topaze
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
Posté : 17 juil. 2005, 23:48
par ouckileou
si ta photo fait 5 octets oui c'est normal
sinon, il faudrait voir le dit script d'insertion pour pouvoir t'aider

Posté : 31 juil. 2005, 12:50
par Topaze
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();
?>
Posté : 31 juil. 2005, 12:56
par ouckileou
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 ?
Posté : 31 juil. 2005, 13:02
par Cyrano
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 ???
image dans une table
Posté : 31 juil. 2005, 13:12
par Topaze
Voici mon imput:
<input name="photo" type="file">
Quand à la remarque de cyrano est ce qu'il faut supprimer la requête?
Re: image dans une table
Posté : 31 juil. 2005, 13:17
par Cyrano
... 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...
image
Posté : 31 juil. 2005, 13:33
par Topaze
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
Posté : 31 juil. 2005, 14:00
par ouckileou
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 :
$_POST['photo'] permet de récupérer la valeur de :
je pense qu'il serait bien de voir le formulaire qui va avec ton script
Posté : 31 juil. 2005, 14:14
par Topaze
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>
Posté : 31 juil. 2005, 14:51
par ouckileou
donc déjà ce que je pensais : pas de champ texte nommé "photo", donc tu ne récupéreras pas de $_POST['photo']
Posté : 31 juil. 2005, 15:11
par Topaze
Si je comprends bien je remplace dans <input name="photo" type="file"> type="file" par type="text"
Posté : 31 juil. 2005, 15:15
par Cyrano

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...
Posté : 31 juil. 2005, 15:29
par Topaze
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.
Posté : 31 juil. 2005, 15:41
par Cyrano
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.