Upload de fichier
Dernière réponse : dans Programmation
Bonjours
je suis a la recherche d'un script qui me permet de faire de l upload de fichier
avec une insertion dans une basse de donnée
j'ai deja une base que sur 1 fichier mais le reste je ne sais pas faire
merci de votre aide
je suis a la recherche d'un script qui me permet de faire de l upload de fichier
avec une insertion dans une basse de donnée
j'ai deja une base que sur 1 fichier mais le reste je ne sais pas faire
merci de votre aide
Autres pages sur : upload fichier
Lassé par la pub ? Créez un compte
Désoler, je pensait l'avoir mis dans le titre
je fait de la programmation en php
et je suis héberger chez 1&1
ce qui se passe dans le passer j'avais besoin d'uploader que 1 seul fichier
maintenant que l'activité a augmenter, j''ai besoin d'uploader entre 1 et 10 fichier
je sais qu'avec le php c'est limité a 2Mo donc, je pense qu'il faire le code en php pour qu'il upload les fichier 1 par 1 (si je ne me trompe pas)
de plus le nom du fichier je veut qu'il soit inséré dans un table sql
je vous fait voir le code qui fonctionne parfaitement MAIS pour qu'un fichier
je fait de la programmation en php
et je suis héberger chez 1&1
ce qui se passe dans le passer j'avais besoin d'uploader que 1 seul fichier
maintenant que l'activité a augmenter, j''ai besoin d'uploader entre 1 et 10 fichier
je sais qu'avec le php c'est limité a 2Mo donc, je pense qu'il faire le code en php pour qu'il upload les fichier 1 par 1 (si je ne me trompe pas)
de plus le nom du fichier je veut qu'il soit inséré dans un table sql
je vous fait voir le code qui fonctionne parfaitement MAIS pour qu'un fichier
<?php
// je vérifie que le champs dl diag est remplis
if(!empty($_FILES[dl_diag]))
{
// vérification du l'extention de fichier
$ext = array('.pdf', '.PDF');
$ext_fichier = strtolower(substr(@$_FILES['dl_diag']['name'], -4));
// transfere du fichier sur le serveur
if(in_array($ext_fichier, $ext))
{
move_uploaded_file($_FILES['dl_diag']['tmp_name'], '../diag/'.$_FILES['dl_diag']['name']);
// insersion dans la base de donnée
$id_agence = $_POST['nom_agence'];
$date_diag = $_POST['date_diag'];
$nom = $_POST['nom_client'];
$prenom = $_POST['prenom_client'];
$dl_diag = addslashes($_FILES['dl_diag']['name']);
// Insertion dans la base de donnée
include('connection.inc.php');
$connexion = mysql_connect($bdd_host, $bdd_user, $bdd_passe) or die('<br/>Connexion au serveur impossible.<br/>Contactez le webmaster si le problème n\'est pas résolu.<br/>');
$choix_base = mysql_select_db($bdd_base, $connexion) or die('<br/>Sélection de la base de donnée echouée.<br/>Contactez le webmaster si le problème n\'est pas résolu.<br/>');
$requete = "INSERT INTO diag VALUES ('', '$id_agence', '$date_diag', '$nom', '$prenom', '$dl_diag')";
$resultat = mysql_query($requete) or die('<br/>Exécution de la requête impossible.<br/>Contactez le webmaster si le problème n\'est pas résolu.<br/>');
mysql_close($connexion);
// extraire le mail
include('connection.inc.php');
$connexion = mysql_connect($bdd_host, $bdd_user, $bdd_passe) or die('<br/>Connexion au serveur impossible.<br/>Contactez le webmaster si le problème n\'est pas résolu.<br/>');
$choix_base = mysql_select_db($bdd_base, $connexion) or die('<br/>Sélection de la base de donnée echouée.<br/>Contactez le webmaster si le problème n\'est pas résolu.<br/>');
$requete = "SELECT email FROM membre WHERE id = $id_agence";
$resultat = mysql_query($requete) or die('<br/>Exécution de la requête impossible.<br/>Contactez le webmaster si le problème n\'est pas résolu.<br/>');
// On fait une boucle pour lister tout ce que contient la table :
while($val = mysql_fetch_array($resultat))
{
$mail_destinataire = $val['email'];
$sujet = "Nouveau diagnostique disponible";
$message = "Bonjour,\r Suite à votre demande, nous avons le plaisir de vous envoyé le diagnostique de Monsieur, Madame $nom . \r\n
Vous pouvez télécharger votre diagnostique en vous connectant sur votre espace-client \r\n ou en cliquant sur ce lien: \r\n
http://www.*****.com/diag/$dl_diag ";
$head = "From: no_reply@*****com\n";
$head .= "Content-type: text/html; charset= iso-8859-1\n";
mail($mail_destinataire, $sujet, $message, $head);
}
// Déconnexion de MySQL
mysql_close($connexion);
$valid='Votre document est transfere, et le mail à été envoyé';
} else {
$error='ECHEC lors du transfère.';
}
}
?>
Malheureusement, la solution n'est pas en PHP.
Le souci de la limitation se fait sur l'envoi du formulaire, qui intervient avant le traitement en PHP.
La solution envisageable est de faire des envois en ajax, mais ça risque de poser des problèmes de compatibilité avec certains navigateurs et ça demande de repenser complètement le principe de traitement des fichiers.
Le souci de la limitation se fait sur l'envoi du formulaire, qui intervient avant le traitement en PHP.
La solution envisageable est de faire des envois en ajax, mais ça risque de poser des problèmes de compatibilité avec certains navigateurs et ça demande de repenser complètement le principe de traitement des fichiers.
Ca sert à créer un tableau de données envoyées.
si tu fais un var_dump($_POST), tu obtiendras:
array('exemple' => array());
Et ça n'a encore rien à voir avec le traitement fait par le php qui est effectué une fois que tout le contenu du formulaire a été envoyé au serveur.
Pour rappel: le PHP s'exécute côté serveur, pas lors de la transmission http.
si tu fais un var_dump($_POST), tu obtiendras:
array('exemple' => array());
Et ça n'a encore rien à voir avec le traitement fait par le php qui est effectué une fois que tout le contenu du formulaire a été envoyé au serveur.
Pour rappel: le PHP s'exécute côté serveur, pas lors de la transmission http.
Non OmaR, désolé de te contredire.
Les limites qui sont dans le php.ini concerne le formulaire (poids maximal d'un champ file et poids maximal du formulaire) et ces limites sont appliquées lors de l'envoi du formulaire, pas lors du traitement par php.
La seule façon d'essayer de passer outre est d'avoir effectivement plusieurs champs de type file et de faire les uploads un à un avec de l'ajax sitôt qu'un champ est rempli (sur le onchange ?)
Les limites qui sont dans le php.ini concerne le formulaire (poids maximal d'un champ file et poids maximal du formulaire) et ces limites sont appliquées lors de l'envoi du formulaire, pas lors du traitement par php.
La seule façon d'essayer de passer outre est d'avoir effectivement plusieurs champs de type file et de faire les uploads un à un avec de l'ajax sitôt qu'un champ est rempli (sur le onchange ?)
Hmm, je n'ai pas du tout lire. J'ai seulement lu qu'il voulait passer de 1 à 10 input file, je n'ai pas fait attention au problème de poids.
Et je t'avoue que je ne connais pas tous les problèmes de poids d'ailleurs. Je ne savais même pas qu'il y avait une limite par formulaire, seulement par champ pour moi, enfin bon, tant pis alors
Et je t'avoue que je ne connais pas tous les problèmes de poids d'ailleurs. Je ne savais même pas qu'il y avait une limite par formulaire, seulement par champ pour moi, enfin bon, tant pis alors
Ok, je me suis inspiré d'un tuto sur le site developper.com
ce que je suis en train d'essayer de faire c'est ce type de programation, mais
rien ne passe.
ps il ne faut pas s'inquiete du poid car les fichier envoyer sont tres légé
ce que je suis en train d'essayer de faire c'est ce type de programation, mais
rien ne passe.
$repertoire = "/diag/";
Foreach($_FILES as $fichier)
{
move_uploaded_file(($_FILES['fichier']['tmp_name'], '../diag/'.$_FILES['fichier']['name']));
}
ps il ne faut pas s'inquiete du poid car les fichier envoyer sont tres légé
ok, j'ai enfin trouver la solution pour uploader mes fichier, par contre là, j'ai une autre problématique,
lorsce que je veut mettre dans la base de donnée le nom des fichiers cela me les marque bien, mais avec une faute
exemple sur un fichier qui s apple test.pdf cela me marque test_pdf
je ne comrpend pas, pourtant j'ai l'impression que j'ai bien codé
je vous fait tt voir
lorsce que je veut mettre dans la base de donnée le nom des fichiers cela me les marque bien, mais avec une faute
exemple sur un fichier qui s apple test.pdf cela me marque test_pdf
je ne comrpend pas, pourtant j'ai l'impression que j'ai bien codé
je vous fait tt voir
<?php
// verifier que le bouton ok est bien cliquer
if (isset($_POST['ok']) && $_POST['ok'] == 'ok')
{
// verification que les champs sont bien remplis
if (isset($_POST['date_diag']) && isset($_POST['nom_client']) && isset($_POST['dossier']) && isset($_POST['pour']))
{
$date_diag = $_POST['date_diag'];
$nom = $_POST['nom_client'];
$dossier = $_POST['dossier'];
$pour = $_POST['pour'];
$id_agence = $_POST['nom_agence'];
// Insertion dans la base de donnée
include('../connection.inc.php');
$connexion = mysql_connect($bdd_host, $bdd_user, $bdd_passe) or die('<br/>Connexion au serveur impossible.<br/>Contactez le webmaster si le problème n\'est pas résolu.<br/>');
$choix_base = mysql_select_db($bdd_base, $connexion) or die('<br/>Sélection de la base de donnée echouée.<br/>Contactez le webmaster si le problème n\'est pas résolu.<br/>');
$requete = "INSERT INTO diag VALUES ('', '$id_agence', '$date_diag', '$nom', '$dossier', '$pour')";
$resultat = mysql_query($requete) or die('<br/>Exécution de la requête impossible.<br/>Contactez le webmaster si le problème n\'est pas résolu.<br/>');
mysql_close($connexion);
// insersion des donnée du client pour le diag
// faire une boucle pour le transfere des fichier et insertion dans la base de donnée.
foreach($_FILES as $fichier => $download)
{
move_uploaded_file($fichier['tmp_name'], '../diag/'.$fichier['name']);
// traitement d'ajout dans la base de donnée
$values = array();
include('../connection.inc.php');
$connexion = mysql_connect($bdd_host, $bdd_user, $bdd_passe) or die('<br/>Connexion au serveur impossible.<br/>Contactez le webmaster si le problème n\'est pas résolu.<br/>');
$choix_base = mysql_select_db($bdd_base, $connexion) or die('<br/>Sélection de la base de donnée echouée.<br/>Contactez le webmaster si le problème n\'est pas résolu.<br/>');
$values[] = "('".mysql_real_escape_string($dossier)."', '".mysql_real_escape_string($fichier['name'])."')";
mysql_query("INSERT INTO download (dossier, fichier) VALUES ".implode(',', $values));
}
foreach($_FILES as $fichier)
print $fichier['name'] . "<br/>";
echo $fichier;
}
}
?>
Problème étrange, je n'avais jamais vu ça, je vais me renseigner.
Par contre, une petite question:
Pourquoi fais tu
Tu ne te serts jamais de $download...
Tu peux très bien te limiter à:
Et un autre détail, moins anecdotique:
Tu inclues connection.inc.php je ne sais combien de fois (une fois pour la première insertion et pour chaque fichier) et chaque fois tu relances la connexion ? C'est un peu énorme.
Garde ta première inclusion et ne fais le mysql_close() qu'à la fin de ton if.
Surtout que je suis étonné que tu n'ais pas une erreur avec les includes successif, des include_once() me choqueraient moins.
Par contre, une petite question:
Pourquoi fais tu
foreach($_FILES as $fichier => $download)
Tu ne te serts jamais de $download...
Tu peux très bien te limiter à:
foreach($_FILES as $fichier)
Et un autre détail, moins anecdotique:
Tu inclues connection.inc.php je ne sais combien de fois (une fois pour la première insertion et pour chaque fichier) et chaque fois tu relances la connexion ? C'est un peu énorme.
Garde ta première inclusion et ne fais le mysql_close() qu'à la fin de ton if.
Surtout que je suis étonné que tu n'ais pas une erreur avec les includes successif, des include_once() me choqueraient moins.
Apres une nuit de prise de tête, et je te remercie ce bout de code qui m'a fait avancer sont mon problème.
tout fonctionne correctement.
par contre une chose que je ne comprend pas et que je voudrai résoudre, c'est que j'ai une double insertion dans la Base de donnée.
<?php
// verifier que le bouton ok est bien cliquer
if (isset($_POST['ok']) && $_POST['ok'] == 'ok')
{
// verification que les champs sont bien remplis
if (isset($_POST['date_diag']) && isset($_POST['nom_client']) && isset($_POST['dossier']) && isset($_POST['pour']))
{
$date_diag = $_POST['date_diag'];
$nom = $_POST['nom_client'];
$dossier = $_POST['dossier'];
$pour = $_POST['pour'];
$id_agence = $_POST['nom_agence'];
// Insertion dans la base de donnée
include('../connection.inc.php');
$connexion = mysql_connect($bdd_host, $bdd_user, $bdd_passe) or die('<br/>Connexion au serveur impossible.<br/>Contactez le webmaster si le problème n\'est pas résolu.<br/>');
$choix_base = mysql_select_db($bdd_base, $connexion) or die('<br/>Sélection de la base de donnée echouée.<br/>Contactez le webmaster si le problème n\'est pas résolu.<br/>');
$requete = "INSERT INTO diag VALUES ('', '$id_agence', '$date_diag', '$nom', '$dossier', '$pour')";
$resultat = mysql_query($requete) or die('<br/>Exécution de la requête impossible.<br/>Contactez le webmaster si le problème n\'est pas résolu.<br/>');
// insersion des donnée du client pour le diag
// faire une boucle pour le transfere des fichier et insertion dans la base de donnée.
foreach($_FILES as $fichier)
{
move_uploaded_file($fichier['tmp_name'], '../diag/'.$fichier['name']);
// traitement d'ajout dans la base de donnée
$values[] = "('".mysql_real_escape_string($dossier)."', '".mysql_real_escape_string($fichier['name'])."')";
mysql_query("INSERT INTO download (dossier, fichier) VALUES ".implode(',', $values));
}
foreach($_FILES as $fichier)
print $fichier['name'] . "<br/>";
echo $fichier;
mysql_close($connexion);
}
}
?>
Lassé par la pub ? Créez un compte
- Contenus similaires :
Tags :
- ForumUpload fichier audio php
- ForumUpload fichier
- ForumUpload de fichier
- ForumUpload un fichier java
- ForumUpload un fichier audio sur un site
- ForumCode upload fichier php
- solutionsUpload de fichier ne marche pas php
- ForumPhp upload fichier sur ftp
- ForumUpload fichier gmail
- ForumUpload fichier txt php
- Voir plus