Afficher la donnée entrée à partir d'un fichier
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour, je travaille sur un projet qui un utilisateur sélectionne un fichier plat qui après se stocke dans la table 'fichier' et qui passe par une procédure qui découpe la données en des champs qui vont être ensuite stockes dans 'plan_ar', je veux afficher un tableau de la donnée découpée donc après avoir passe par la procédure.
voici mon code php:
<?php $servername = "localhost"; $username = "root"; $password = "Maria2202@"; $database = "ac"; $importedData = []; if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_FILES["fileToUpload"])) { if ($_FILES["fileToUpload"]["error"] !== UPLOAD_ERR_OK) { echo "Erreur lors du téléchargement du fichier.\n"; exit; } $file_path = $_FILES["fileToUpload"]["tmp_name"]; try { $conn = new PDO("mysql:host=$servername;dbname=$database", $username, $password); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "Connexion à la base de données réussie !\n"; $file = fopen($file_path, "r"); if ($file) { while (($line = fgets($file)) !== false) { $sql = "INSERT INTO `fichier` (`dat`) VALUES (" . $conn->quote($line) . ")"; $stmt = $conn->prepare($sql); $stmt->execute(); } fclose($file); echo "Les données ont été insérées avec succès dans la table fichier.\n"; $sqlCallProcedure = "CALL ImportDataFromFichierToPlanAR()"; $conn->exec($sqlCallProcedure); echo "La procédure a été exécutée avec succès pour transférer les données dans la table plan_AR.\n"; // Sélectionnez les données découpées de la table plan_ar $sql = "SELECT ARCFORMA, ARCERROR, ARREFEPETI, ARFVALOR, ARCBICPART, ARCTATCC, ARCTADET, ARNREGIS, ARCVALOR, ARVVALORES, ARNNOMINAL FROM plan_ar"; $stmt = $conn->prepare($sql); $stmt->execute(); // Commencez à générer le tableau HTML echo "<table border='1'>"; echo "<tr>"; echo "<th>ARCFORMA</th>"; echo "<th>ARCERROR</th>"; echo "<th>ARREFEPETI</th>"; echo "<th>ARFVALOR</th>"; echo "<th>ARCBICPART</th>"; echo "<th>ARCTATCC</th>"; echo "<th>ARCTADET</th>"; echo "<th>ARNREGIS</th>"; echo "<th>ARCVALOR</th>"; echo "<th>ARVVALORES</th>"; echo "<th>ARNNOMINAL</th>"; echo "</tr>"; // Parcourir les résultats de la requête while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { echo "<tr>"; echo "<td>" . $row['ARCFORMA'] . "</td>"; echo "<td>" . $row['ARCERROR'] . "</td>"; echo "<td>" . $row['ARREFEPETI'] . "</td>"; echo "<td>" . $row['ARFVALOR'] . "</td>"; echo "<td>" . $row['ARCBICPART'] . "</td>"; echo "<td>" . $row['ARCTATCC'] . "</td>"; echo "<td>" . $row['ARCTADET'] . "</td>"; echo "<td>" . $row['ARNREGIS'] . "</td>"; echo "<td>" . $row['ARCVALOR'] . "</td>"; echo "<td>" . $row['ARVVALORES'] . "</td>"; echo "<td>" . $row['ARNNOMINAL'] . "</td>"; echo "</tr>"; } echo "</table>"; } else { echo "Erreur lors de l'ouverture du fichier.\n"; } } catch (PDOException $e) { echo "Erreur SQL : " . $e->getMessage() . "\n"; } finally { $conn = null; } } ?>
et voila mon code HTML:
<!DOCTYPE html> <html> <head> <title>PlanAR</title> </head> <body> <h1>AC Plan-AR</h1> <form method="post" action="planAR.php" enctype="multipart/form-data"> <input type="file" name="fileToUpload" accept=".dat"> <input type="submit" value="Importer le fichier" name="submit"> </form> </body> </html>
Merci pour votre aide !!!!
- Afficher la donnée entrée à partir d'un fichier
- Comment réduire la taille d'un fichier - Guide
- Fichier bin - Guide
- Comment ouvrir un fichier epub ? - Guide
- Creer un groupe whatsapp a partir d'un autre groupe - Guide
- Fichier rar - Guide
1 réponse
Bonjour
Tu nous expliques ce que tu veux faire, mais en aucun cas tu nous dis le problème rencontré.......
Commence déjà par appliquer les consignes 2D dans le lien suivant et reviens nous voir ensuite avec le code modifié en nous expliquant exactement le souci.
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
J'essaie d'afficher le fichier dans un tableau après être passer par la procédure et donc découper
exemple: Le fichier entre est celui la
XYZABCD 20230215DE012345 2023-02-10EFGHIJKLMNOP000 JANEDOE 00XYZ98765432100000000000 00000000000000000098765432
Au début il s'insère dans une table 'fichier' tel qu'il est après ca passe par la procédure qui découpe la donnée en utilisant substring ca s'insère dans table plan_ar, je veux afficher la donnée du fichier uniquement mais en utilisant ca m'affiche toute les lignes du fichier
Je veux que le fichier entre soit dans un tableau en sortie et j'arrive pas a le faire
Si tu ne mets pas de WHERE dans ta requête SQL .. normal qu'il t'affiche toutes les lignes de ta table !
Tu peux aussi jouer avec un ORDER BY et un LIMIT afin de n'avoir que le dernier enregistrement..
Merci pour ton aide ca a marche mais y'a des fichiers ou y'a 2 lignes voir plus et du coup quand je fais ca, ca marche pas
Si tu peux avoir plusieurs lignes pour un fichier, dans ce cas, il faut que tu disposes, dans ta table plan_ar d'un champ permettant de pouvoir identifier à quel fichier appartiennent tes lignes
Si un tel champ existe, il te suffit donc d'ajouter un WHERE dans ta requête SQL qui fera référence au fichier.
PS: Tes questions concernent d'avantage les requêtes SQL .. que le langage PHP ( voir même... de l'algo et non de la programmation pure...).
J'hésite à déplacer ta question dans le forum mysql .... quoi qu'il en soit.. à l'avenir.. tâche de placer tes questions sur le forum dans les bonnes rubriques.