load data en indiquant le nom du fichier

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : load data en indiquant le nom du fichier

par zeus » 16 mai 2008, 15:40

Modération :
Puisque ta question est résolue, j'ajoute le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.

Tu peux réaliser cette opération toi-même
en cliquant sur le bouton Image qui s'affiche en haut à gauche de ce sujet
si tu as posté le 1er message en tant que membre (inscrit et identifié).

Alors... inscris-toi !!! ;)

par lydie2001 » 16 mai 2008, 15:37

Parfait ça marche, merci beaucoup,merci pour votre aide :D

par zeus » 16 mai 2008, 15:20

Pour t'aider, il faut que tu commences à lire les conseils qu'on te donne.

$fichier = $_POST['nom_fichier']; // ici, l'attribut "name" du champ input doit etre "nom_fichier" => <input type="text" name="nom_fichier" />
Lit le commentaire et compare ton input au mien

EDIT
Je viens de me rendre compte qu'il y a un soucis avec le bbcode.
Voilà le commentaire qui devrait se trouver après le code que je cite juste au dessus :

Code : Tout sélectionner

// ici, l'attribut "name" du champ input doit etre "nom_fichier" => <input type="text" name="nom_fichier" />

par lydie2001 » 16 mai 2008, 15:17

es que quelqu'un a une idée, j'abondonne :cry:

par lydie2001 » 16 mai 2008, 14:51

Voiçi mon formulaire et mon code php. quand je tappe le nom du fichier texte qui se trouve dans le meme répertoire que les deux fichiers html et php.
j'ai ce message: Le fichier n'existe pas. :?:

Code : Tout sélectionner

<html> <head> <title>insertion de donn�es en PHP :: partie 1</title> </head> <body> <form name="insertion" action="insere.php" method="POST"> <table border="0" align="center" cellspacing="2" cellpadding="2"> <tr align="center"> <td>fichier</td> <td><input type="text" fichier="nom_fichier"></td> </tr> <tr align="center"> <td colspan="2"><input type="submit" value="ins�rer"></td> </tr> </table> </form> </body> </html>
le fichier insere.php

Code : Tout sélectionner

[php] //connection au serveur $cnx = mysql_connect( "localhost", "root", "" ) ; //s�lection de la base de donn�es: $db = mysql_select_db( "bd_Multiplets" ) ; $fichier = $_POST['nom_fichier']; if (file_exists($fichier)) { $sql = "LOAD DATA LOCAL INFILE '/var/www/html/interface/essai/". $fichier ."' REPLACE INTO TABLE `client`" ; $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ; } else { echo "Le fichier $fichier n'existe pas."; } [/php]

par zeus » 16 mai 2008, 14:31

:?

Eh bien, reprenons en détails.

Tu pars de cette requete :
$sql = "LOAD DATA LOCAL INFILE '/tahiti/gran/Desktop/fichier.txt' REPLACE INTO TABLE `client` "
Tu veux que le nom du fichier soit saisissable via un formulaire. Il faut donc que le nom devienne dynamique, via l'utilisation d'une variable.
Ta requête deviens donc
$sql = "LOAD DATA LOCAL INFILE '/tahiti/gran/Desktop/". $fichier ."' REPLACE INTO TABLE `client`"
NOTE : dans cet exemple, les fichiers devront être dans "/tahiti/gran/Desktop/"

Ensuite, tu veux que $fichier contienne le nom saisi dans le formulaire.
Il faut donc que tu récupères dans $_POST ou $_GET, tu dépends de ton formulaire, la valeur saisie par l'internaute et que tu la places dans la variable $fichier.
$fichier = $_POST['nom_fichier']; // ici, l'attribut "name" du champ input doit etre "nom_fichier" => <input type="text" name="nom_fichier" />
En prenant ce que je viens de t'apporter, en plus du code que tu viens de nous montrer, tu disposes de toutes les informations nécessaires ;)

par lydie2001 » 16 mai 2008, 14:19

oui j'ai jeté un coup d'oeuil, mais ce n'ai pas exactement ce que je cherche .
Je sais faire un upload avec un bouton parcourir et telecharger le fichier ,mais ce que je recherche c'est que l'utilisateur tappe lui méme le nom du fichier à telcharger dans un formulaire ,je ne sais pas comment modifier ma requete
$sql ="LOAD DATA LOCAL INFILE '/tahiti/gran/Desktop/filename.txt' REPLACE INTO TABLE `client`"
je veux garder le meme chemin d'accés mais laisser le choix à l'utilisateur de choisir le nom du fichier

par Cyrano » 16 mai 2008, 13:49

As-tu vu dans le forum FAQ le tuto sur LOAD DATA INFILE ?

par lydie2001 » 16 mai 2008, 13:46

es que quelqu'un sais comment la faire cette requete :?: :lol:

par lydie2001 » 16 mai 2008, 12:14

Mon probléme c'est que je ne saia pas comment formuler la requete :(

Code : Tout sélectionner

[php] $filename = $_POST["filename"]; if (file_exists($filename)) { echo "Le fichier $filename existe."; } else { echo "Le fichier $filename n'existe pas."; } [/php] // la requete????????????

par zeus » 16 mai 2008, 12:00

Pour continuer, je vais te donner l'algorithme à suivre dans le script exécuter à la soumission du formulaire
  1. Récupérer le nom du fichier
  2. Vérifier que fichier existe
  3. Construire ta requête en donnant le nom du fichier
  4. Exécuter la requête
Je tiens tout de même à te prévenir que si tu mets ce script dans un site public, tu ouvres une énorme faille de sécurité.
Mais j'ai dans l'idée que c'est un petit script pour toi, en local ...

par lydie2001 » 16 mai 2008, 11:48

J'avoue que je suis débutante en php, je crois que c'est la premiére requette qui sera interprété ,mais je ne sias pas comment faire pour charger les données d'un fichier texte (en local) dans ma base en spécifant seulement le nom du fichier via un formulaire.
Voici le code du formulaire

Code : Tout sélectionner

<html> <head> <title>ile fichier à inserer</title> </head> <body> <form name="insertion" action="insere.php" method="POST"> <table border="0" align="center" cellspacing="2" cellpadding="2"> <tr align="center"> <td>fichier</td> <td><input type="text" fichier="fichier"></td> </tr> <td colspan="2"><input type="submit" value="ins�rer"></td> </tr> </table> </form> </body> </html>
et le code php

Code : Tout sélectionner

<?php //connection au serveur $cnx = mysql_connect( "localhost", "root", "" ) ; //s�lection de la base de donn�es: $db = mysql_select_db( "bd_Multiplets" ) ; $fichier = $_POST["fichier"]; //cr�ation de la requ�te SQL: $sql ="LOAD DATA LOCAL INFILE '/tahiti/gran/Desktop/fichier .txt'' REPLACE INTO TABLE `client`"; //ex�cution de la requ�te SQL: $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ; //affichage des r�sultats, pour savoir si l'insertion a march�e: if($requete) { echo("L'insertion a �t� correctement effectu�e") ; } else { echo("L'insertion a echoue") ; } ?> Merci pour votre aide

par zeus » 16 mai 2008, 11:38

Pour répondre à ta question, je vais essayer de te faire comprendre le fonctionnement de ton script.

Tu as un script PHP qui doit exécuter une requête SQL.
En premier, ton script PHP va générer une chaine de caractère en remplaçant les variables par leur contenu.
Ensuite, cette chaine générée va être envoyée au SGBD qui va l'exécuter.

A ton avis, quelle est la chaine que va voir le SGBD, ton 1er exemple ou ton second ?

Sinon, un peu hors sujet, mais est-ce que tu sais que l'utilisateur qui va tenter de créer le fichier "/tahiti/gran/Desktop/fichier txt" est l'utilisateur mysql ... et donc qu'il va falloir faire attention à tes droits sur le répertoire "/tahiti/gran/Desktop/" ?

load data en indiquant le nom du fichier

par lydie2001 » 16 mai 2008, 11:00

Bonjour,

Je voudrais inserer mes données dans ma base via un load data en donnant le nom du fichier dans un formulaire, c'est à dire au lieu d'écrire ma requette de la sorte:
LOAD DATA LOCAL INFILE '/tahiti/gran/Desktop/fichier txt"' REPLACE INTO TABLE `client`

Je voudrais que lr nom du fichier soit entré au clavier via un formulaire et j'aurais:
LOAD DATA LOCAL INFILE '/tahiti/gran/Desktop/". $fichier ."' REPLACE INTO TABLE `client`

Mais j'avoue je ne sias pas si c'est faisable, ou existe il une autre maniére de faire?

Merci