Page 1 sur 1

Upload de fichiers vers une base

Posté : 13 juin 2007, 19:20
par HHH
salut tt le monde, je suis débutante en php, j ecris ce bout de code pour joindre un fichier, de tel façon que lorsque je clique sur le boutton "ok" le fichier choisi (par parcourir) s'enregistre dans ma base.
est ce qui'il y a qq 1 qui peut m'aider a définir le code de boutton ok pour faire cette opération svp?



voila mon code

Code : Tout sélectionner

<table width="683" height="152" border="1" id="tab2" class="tableau_gris"> <tr> <td height="112" class="Style1">Fichier Attaché:</td> <td><input NAME="fic" type="file" size="50"></td> </tr> <tr><input type="submit" value=" ok"></tr> </table>

Posté : 13 juin 2007, 19:31
par Cyrano
Modération :
HHH, afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ

En outre, merci d'utiliser un titre clair et qui correspond bien à ta demande.
Les titres contenant "HELP", "Aidez-moi !" n'apportent rien à la compréhension de ton problème.
Par ailleurs, nous savons déjà par ton message que tu as besoin d'aide. Comme tu as posté en "invité", j'ai modifié le titre.

Merci de prendre le temps de lire les règlements.

Posté : 13 juin 2007, 19:33
par iclo
Il faut pour cela mettre en place un code php de traitement de l'upload.

Il y a un poste qui expliquant la marche à suivre dans la FAQ.

Posté : 13 juin 2007, 19:33
par Cyrano
Ton bouton, il est déjà en place : où est le problème ?? Si tu nous mettais le code complet de ton formulaire, ce serait plus utile, d'autre part, tu pourrais nous préciser ce que tu obtiens exactement (message d'erreur, autre...).

Posté : 13 juin 2007, 20:32
par iclo
Je peux me tromper mais j'ai l'impression qu'en fait HHH s'attend à ce que le traitement doivent être définit dans le code du bouton, mais ça va se jouer du côté du serveur.
Le lien vers le sujet de la FAQ en question : http://www.phpfrance.com/forums/voir_sujet-545.php

Posté : 14 juin 2007, 11:03
par Invité
désolée si j'été pas claire et merci pour vos réponses et pour vos essai d'aide, en fait ma demande consiste a ajouter au boutton "ok" un code pour que le fichier uploder sera enregistrer dans ma base de données.
cen fait j'essay de faire une application d'envoie et de reception des mails avec attachements, donc dans le cas d'envoi, apres avoir uploder le fichier par

Code : Tout sélectionner

<input NAME="fic" type="file" size="50">
je cherche le valider par le boutton " ok"

Code : Tout sélectionner

<input type="submit" value="ok">
ainsi ce fichier sera mis dans ma base de données .
j'espère bien que je suis plus claire.[/quote]

Posté : 14 juin 2007, 13:00
par iclo
Pas vraiment plus clair, honnêtement.

Comme je te l'ai dit plus haut, il va te falloir un script de traitement en php, appelé lors de la validation du formulaire.
Regarde le sujet de la faq que je t'ai conseillé, et si tu as problème poste nous ton code ici.

Posté : 16 juin 2007, 19:17
par hannouta
voila j'ai réussi en une partie , mais mon problem toujours existant cette fois avec ce code d'erreur

Code : Tout sélectionner

Warning: fopen(Photo 050.jpg): failed to open stream: No such file or directory in c:\program files\easyphp1-8\www ...

Code : Tout sélectionner

Warning: filesize(): Stat failed for Photo 050.jpg (errno=2 - No such file or directory) in c:\program files\easyphp1-8\www\...

Code : Tout sélectionner

Warning: fread(): supplied argument is not a valid stream resource in c:\program files\easyphp1-8\www

Code : Tout sélectionner

Warning: fclose(): supplied argument is not a valid stream resource in c:\program files\easyphp1-8\www\
ces code d'erreur pour ces lignes :

Code : Tout sélectionner

$fp = fopen($file, "rb"); $attachment = fread($fp, filesize($file)); fclose($fp);
mon code correspondant a l'attachement des fichiers est le suivant :

Code : Tout sélectionner

<td height="112" class="Style1">Fichier Attaché:</td> <td><form action="fich.php" method="post" enctype="multipart/form-data" name="form1"> <p> <input type="hidden" name="MAX_FILE_SIZE" value="1000000"> <input type="file" name="fich" > </p> <p> <input type="submit" name="Submit" value="Attacher"> </p> </form></td>

Posté : 16 juin 2007, 21:29
par Sékiltoyai
Tu as quoi dans $file ?
Et où est le code qui traite de l'upload de fichier ? Parce que là il y a un gros vide entre le code php que tu nous mets et le code html...

Posté : 16 juin 2007, 22:57
par hannouta
voila tout mon code
1/ la page recup.php

Code : Tout sélectionner

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Document sans titre</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <form name="form1" method="post" action="donnees.php"> <input type="text" name="id"> <input type="submit" name="Submit" value="ok"> </form> </body> </html>
2/ la page fich.php
<?php
/*define ("MACHINE", "serveur.mondomaine") ;
define ("UTILISATEUR", "mon_nom") ;
define ("BASE", "ma_base") ;
define ("MOT_DE_PASSE", "mon_mot_de_passe") ;*/
define ("TABLE", "fichiers") ;
$fich=$HTTP_POST_FILES['fich']['tmp_name'];
include("connexion.php");
define ("FICHIER", "$fich") ;
$c = @mysql_connect("localhost","root","") ;
if ( $c == 0 ) {
die ("Serveur inaccessible\n") ;
}
if (mysql_select_db("webmail") == false )
die ("Base de donnée inaccessible\n") ;
$titre =$HTTP_POST_FILES['fich']['name'];
$type =$HTTP_POST_FILES['fich']['type'] ;
if (!$r=@fopen($fich, "r")) die("Erreur d'accès au fichier ".FICHIER."\n") ;
$size=$HTTP_POST_FILES['fich']['size'];
$donnees = addslashes(fread($r, $size));
$req= "INSERT INTO ".TABLE." (  Titre, Donnees, Type )".
" VALUES ('$titre','$donnees','$type')";
mysql_query($req) or die("Pas moyen d'ajouter le fichier à la table !!!");
$id= mysql_insert_id();
print "Numéro d'identifiant dans la table: $id<br>\n";
?>
3/la page donnees.php
<?
/*define ("MACHINE", "serveur.mondomaine") ;
define ("UTILISATEUR", "mon_nom") ;
define ("BASE", "ma_base") ;
define ("MOT_DE_PASSE", "mon_mot_de_passe") ;*/
define ("TABLE", "fichiers") ;
include("connexion.php");
$c = @mysql_connect("localhost","root","") ;
if ( $c == 0 ) {
die ("Serveur inaccessible\n") ;
}
if (mysql_select_db("webmail") == false )
die ("Base de donnée inaccessible\n") ;
$id=intval($_POST['id']); // un minimum de securite !
$req= "SELECT Titre, Donnees, Type ".
"FROM ".TABLE." where Id='$id'";
$r = @mysql_query($req ) or die ("Erreur: pas d'accès au fichier");
if(mysql_num_rows($r) == 1) {
$type = @mysql_result($r, 0, "Type");
$donnees = @mysql_result($r, 0, "Donnees");
header("Content-type: $type");
echo $donnees;
}
else {
echo "Erreur, pas trouvée le fichier";
};
$zone_accessible='/usr/ma_zone_accessible/';
$id=intval($_POST['id']); // un minimum de securite !
$req= "SELECT Titre, Donnees ".
"FROM ".TABLE." where Id='$id'";
$r = @mysql_query($req ) or die ("Erreur: pas d'accès au fichier");
if(mysql_num_rows($r) == 1) {
$titre = @mysql_result($r, 0, "Titre");
$donnees = @mysql_result($r, 0, "Donnees");
echo $zone_accessible;
if (!$r=@fopen($zone_accessible.$titre, "w")) die("Erreur: pas pu créer
$titre<br>\n");
fwrite($r,$donnees);
fclose($r);
echo "Fichier '$titre' créé dans $zone_accessible<br>\n";
}
else {
echo "Erreur, pas trouvé le fichier";
};
?>
en plus d'une page de connexion a la base de données qui a la structure suivante :
field==>type==>collation==>attributs==>null==>default==>extra
Id==>int(11)==> ==> ==>no==> ==>auto_increment
Titre==> varchar(50)==>latin... ==> ==>yes==>null==>
Donnees==>longblob==> ==>binary==>yes==> null==>
Type==> varchar(50)==>latin... ==> ==>yes==>null==>

[/quote]

Posté : 24 juin 2007, 22:05
par hannouta
svp, il y a quelqu'un qui peu m'aider la dessus , svp svp :cry: :cry:

Posté : 24 juin 2007, 22:24
par Cyrano
J'imagine qu'en 8 jours, ton code a du évoluer. As-tu de nouvelles informations à apporter ? Nouvelles erreurs ou autres ?

Et si ce n'est pas fait, vire-moi tous les "@" qui préfixent tes appels de fonction : c'est un cache misère et c'est très handicapant pour déboguer. Les erreurs, on ne les masque pas en développement, au contraire, il faut toutes les voir.

Posté : 24 juin 2007, 23:22
par AB
Et si ce n'est pas fait, vire-moi tous les "@" qui préfixent tes appels de fonction : c'est un cache misère et c'est très handicapant pour déboguer. Les erreurs, on ne les masque pas en développement, au contraire, il faut toutes les voir.
Et si mes souvenirs sont bons, Ajoloca disait que c'est également très handicapant au niveau du temps de traitement pour le serveur et qu'il fallait donc éviter d'en mettre dans le code final.