Export CSV vers FTP via PHP & SQL [Résolu/Fermé]

Signaler
Messages postés
73
Date d'inscription
lundi 22 janvier 2018
Statut
Membre
Dernière intervention
24 février 2018
-
Messages postés
73
Date d'inscription
lundi 22 janvier 2018
Statut
Membre
Dernière intervention
24 février 2018
-
Bonjour,

J'ai essayé de faire un PHP avec du SQL pour exporter le résultat d'une requête dans un fichier CSV sur mon FTP.

Pouvez vous m'aider svp ? (Le téléchargement vers le FTP ne fonctionne pas)

Voici mon PHP.

//Données pour la connexion à la base de données
$nom_du_serveur ="*************";
$nom_de_la_base ="*************";
$nom_utilisateur ="*************";
$passe ="*************";
 
//Connexion à la base de données
mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe");
mysql_select_db("$nom_de_la_base") OR die( "ERREUR de connexion : " . mysql_error () );

// Données de connection au serveur ftp
$ftp_server="*************";
$ftp_user_name="*************";
$ftp_user_pass="*************";
$serveur_file='/Pomme.csv'; // Fichier à télécharger sur FTP

// Création de la connexion
$conn_id = ftp_connect($ftp_server);

// Authentification avec nom de compte et mot de passe
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// Vérification de la connexion
if ((!$conn_id) || (!$login_result)) {
echo "<p>La connexion FTP a échoué!";
echo "<p>Tentative de connexion à $ftp_server avec $ftp_user_name";
die;
} else {
echo "<p>Connecté à $ftp_server, avec $ftp_user_name";
}

//Requête 
$sql = mysql_query ("SELECT * FROM matable WHERE date >  DATE_SUB(CURRENT_TIME(), INTERVAL 70 MINUTE) ORDER BY ID");

// On enregistre le fichier
file_put_contents("Pomme.csv", $contenu);

/* On télécharge le fichier $serveur_file*/
$download = ftp_get($conn_id, $monmicro_file, $serveur_file, FTP_ASCII);

// Vérification de téléchargement
if (!$download) {
echo "<p>Le téléchargement Ftp a échoué!";
} else {
echo "<p>Téléchargement de $serveur_file du serveur $ftp_server vers $monmicro_file réussi!";
}
// Fermeture de la connexion FTP.
ftp_quit($conn_id);

// On ferme la connexion à mysql
mysql_close();
?>

2 réponses

Messages postés
2370
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
10 mars 2020
432
Salut,

La variable $monmicro_file n'est pas définie dans le code de ton message.

Pense à activer l'affichage des erreurs PHP et/ou consulter le journal d'erreur de ton serveur web afin de trouver l'éventuel message d'erreur FTP et cibler plus précisément la cause du problème.

As tu vérifier que php ai bien les droits en écritures sur le dossier où tu souhaites récupérer le fichier csv (le dossier défini pour le chemin du fichier $monmicro_file) ?

Bonne journée,
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 76687 internautes nous ont dit merci ce mois-ci

Messages postés
13315
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
26 novembre 2020
747 >
Messages postés
73
Date d'inscription
lundi 22 janvier 2018
Statut
Membre
Dernière intervention
24 février 2018

as-tu envisagé d'utiliser
ftp_put
?
quand tu écris "mon PHP" et "mon FTP", moi je lis qu'il s'agit du même serveur.
peut-être devrais-tu t'exprimer (également dans tes commentaires) du point de vue du programme PHP. peut-être souhaites-tu qu'il envoie un fichier vers un autre serveur FTP, pas qu'il télécharge un fichier (vers lui-même).
Messages postés
73
Date d'inscription
lundi 22 janvier 2018
Statut
Membre
Dernière intervention
24 février 2018

Oui j'ai essayé ftp_put mais j'ai le même message d'erreur.
J'ai un PHP sur mon FTP et je veux que la requete SQL dans le PHP exporte le résultat en CSV sur la racine de mon FTP.
Messages postés
13315
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
26 novembre 2020
747 >
Messages postés
73
Date d'inscription
lundi 22 janvier 2018
Statut
Membre
Dernière intervention
24 février 2018

je comprends de moins en moins ce que tu essaies de faire.
ton programme PHP et ton serveur FTP sont-ils sur deux ordinateurs différents?
Messages postés
73
Date d'inscription
lundi 22 janvier 2018
Statut
Membre
Dernière intervention
24 février 2018

Non mon PHP est en ligne sur mon FTP.
J'ai une base de donnée en ligne et je veux que ma requete génère un CSV sur mon disque ftp (sur la racine)
Messages postés
13315
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
26 novembre 2020
747 >
Messages postés
73
Date d'inscription
lundi 22 janvier 2018
Statut
Membre
Dernière intervention
24 février 2018

alors il suffit de préciser le bon premier paramètre en appelant file_put_contents, de façon à ce que le fichier soit créé à la racine de ton disque ftp. il est inutile d'utiliser les fonctions ftp.
Messages postés
73
Date d'inscription
lundi 22 janvier 2018
Statut
Membre
Dernière intervention
24 février 2018

J'ai essayé un nouveau code PHP.

J'ai un problème à la ligne 225 :
$req=$bdd->query('SELECT * FROM matable WHERE date > DATE_SUB(CURRENT_TIME(), INTERVAL 70 MINUTE) ORDER BY ID') or die (print_r($bdd->errorInfo()));

Pouvez vous m'aider svp ?



<?

//Données pour la connexion à la base de données
$nom_du_serveur ="*************";
$nom_de_la_base ="*************";
$nom_utilisateur ="*************";
$passe ="*************";

//Connexion à la base de données
mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe");
mysql_select_db("$nom_de_la_base") OR die( "ERREUR de connexion : " . mysql_error () );

// Données de connection au serveur ftp
$ftp_server="*************";
$ftp_user_name="*************";
$ftp_user_pass="*************";

// Création de la connexion
$conn_id = ftp_connect($ftp_server);

// Authentification avec nom de compte et mot de passe
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// L'action "c" permet d'ouvrir ou de créer, s'il y a lieu, le fichier et place le curseur en début de fichier
$monfichier = fopen('pomme.csv', 'c+');

// Tronquer le fichier à la taille zéro.
// Est équivalant à écraser le fichier
ftruncate($monfichier,0);

if($monfichier!=false)
{
// Récupérer les données de la table
$req=$bdd->query('SELECT * FROM matable WHERE date > DATE_SUB(CURRENT_TIME(), INTERVAL 70 MINUTE) ORDER BY ID') or die (print_r($bdd->errorInfo()));

// Boucle pour lire toutes les entrées retournées par la requête SQL et les écrire dans le fichier CSV
while($donnees=$req->fetch())
{
// Écrire la ligne dans le fichier
fputcsv($monfichier,$donnees);
}

//fermeture du fichier
fclose($monfichier);
}else{
print "Impossible d'ouvrir ou de créer le fichier.";
}

// Fermeture de la connexion FTP.
ftp_quit($conn_id);

// on ferme la connexion à mysql
mysql_close();
?>
Messages postés
13315
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
26 novembre 2020
747
difficile de t'aider si tu ne nous en dit pas plus...
Messages postés
73
Date d'inscription
lundi 22 janvier 2018
Statut
Membre
Dernière intervention
24 février 2018

Merci à tous pour vos indications.
J'ai modifié mon PHP et cela fonctionne.
Je le donne pour aider quelqu'un d'autre au cas ou :)

//Connection Mysql
mysql_connect("*************","*************","*************")or die("Problème avec la base de données");
mysql_select_db("*************")or die ("pas de connection");

$reponse = mysql_query("SELECT * FROM matable WHERE date > DATE_SUB(CURRENT_TIME(), INTERVAL 70 MINUTE) ORDER BY ID"); // Requête SQL

$fp = fopen('Pomme.csv','w');

// On fait une boucle pour lister tout ce que contient la table :
if ($reponse)
{
while ($donnees = mysql_fetch_row($reponse))

{
fputcsv($fp,$donnees);
}

//mysql_close(); // Déconnexion de MySQL
}
else
{
echo 'Pas de champs!!!';
}
?>