Upload de fichiers vers une base

HHH
Invité n'ayant pas de compte PHPfrance

13 juin 2007, 19:20

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>

Mammouth du PHP | 19672 Messages

13 juin 2007, 19:31

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ViPHP
ViPHP | 2144 Messages

13 juin 2007, 19:33

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.

Mammouth du PHP | 19672 Messages

13 juin 2007, 19:33

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...).
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ViPHP
ViPHP | 2144 Messages

13 juin 2007, 20:32

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

Invité
Invité n'ayant pas de compte PHPfrance

14 juin 2007, 11:03

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]

ViPHP
ViPHP | 2144 Messages

14 juin 2007, 13:00

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.

Eléphanteau du PHP | 15 Messages

16 juin 2007, 19:17

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>

ViPHP
ViPHP | 5924 Messages

16 juin 2007, 21:29

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...

Eléphanteau du PHP | 15 Messages

16 juin 2007, 22:57

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]

Eléphanteau du PHP | 15 Messages

24 juin 2007, 22:05

svp, il y a quelqu'un qui peu m'aider la dessus , svp svp :cry: :cry:

Mammouth du PHP | 19672 Messages

24 juin 2007, 22:24

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ViPHP
AB
ViPHP | 5818 Messages

24 juin 2007, 23:22

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.