Afficher la donnée entrée à partir d'un fichier

maria - 29 sept. 2023 à 22:52
jordane45 Messages postés 38157 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 4 mai 2024 - 30 sept. 2023 à 20:21

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

A voir également:

1 réponse

jordane45 Messages postés 38157 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 4 mai 2024 4 655
30 sept. 2023 à 00:11

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


0

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
 

$sql = "SELECT ARCFORMA, ARCERROR, ARREFEPETI, ARFVALOR, ARCBICPART, ARCTATCC, ARCTADET, ARNREGIS, ARCVALOR, ARVVALORES, ARNNOMINAL FROM plan_ar";
    $stmt = $conn->prepare($sql);
    $stmt->execute();

Je veux que le fichier entre soit dans un tableau en sortie et j'arrive pas a le faire 

0
jordane45 Messages postés 38157 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 4 mai 2024 4 655 > maria
30 sept. 2023 à 17:21

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

0
maria > jordane45 Messages postés 38157 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 4 mai 2024
30 sept. 2023 à 19:41

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 

$sql = "SELECT ARCFORMA, ARCERROR, ARREFEPETI, ARFVALOR, ARCBICPART, ARCTATCC, ARCTADET, ARNREGIS, ARCVALOR, ARVVALORES, ARNNOMINAL FROM plan_ar ORDER BY id DESC LIMIT 1";
            $stmt = $conn->prepare($sql);
            $stmt->execute();
0
jordane45 Messages postés 38157 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 4 mai 2024 4 655 > maria
30 sept. 2023 à 20:21

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.

0