Concaténation PHP

Résolu/Fermé
CorentinRoche Messages postés 271 Date d'inscription mercredi 1 juin 2016 Statut Membre Dernière intervention 12 juin 2023 - Modifié le 22 juil. 2020 à 16:12
yg_be Messages postés 23203 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 septembre 2024 - 22 juil. 2020 à 22:28
Bonjour,

Je suis entrain de DEV une app de gestion de facture etc..

A la fin de l’édition de la facture j'ai une ligne <meta> pour télécharger le fichier stocker sur le serveur. je ne comprend pas pourquoi ma concaténation ne fonctionne pas ... et le fichier ne se télécharge pas

C'est la dernière ligne qui me pose soucis :p

$edit_id_client = $_GET['id'] ;

//Récupération des données clients enfonction de l'ID
$sql = 'SELECT * FROM Clients_Particuliers WHERE id =  '. $edit_id_client .''  ;
$datas = array('2');
try{
  $recup_donnees_client = $bdd->prepare($sql);
  $recup_donnees_client->execute($datas);
  $arr_donnees_client  = $recup_donnees_client->fetchAll();
}catch(Exception $e){
  echo "Erreur : ".$e->getMessage();
}


if(!empty($arr_donnees_client)){
    foreach($arr_donnees_client as $donnees_client ){

    $spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load('Facture_VIERGE.xlsx');
    
    $worksheet = $spreadsheet->getActiveSheet();
    
    $worksheet->getCell('B9')->setValue($donnees_client['REF_client']);
    $worksheet->getCell('B10')->setValue($donnees_client['telephone_portable']);
    $worksheet->getCell('B11')->setValue($donnees_client['adresse']);
    
    $writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xlsx');
    $writer->save($donnees_client['REF_client'] .'-000000.xlsx');

  echo "<meta http-equiv='refresh' content='0;url=" . $donnees_client['REF_client'] ."-000000.xlsx/>";

   } 
  }


Le but est de lancer le téléchargement du fichier .xlsx générer et nommée avec : ref_client-00000.xlsx
Merci d'avance

Configuration: Windows / Opera 68.0.3618.173


A voir également:

4 réponses

jordane45 Messages postés 38241 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 septembre 2024 4 689
22 juil. 2020 à 17:58
Bonjour,

Juste pour tester, pourrais tu remplacer ta ligne de code
echo "<meta http-equiv='refresh' content='0;url=" . $donnees_client['REF_client'] ."-000000.xlsx'/>";

par :
//echo "<meta http-equiv='refresh' content='0;url=" . $donnees_client['REF_client'] ."-000000.xlsx'/>";
echo "content='0;url=" . $donnees_client['REF_client'] ."-000000.xlsx'/>";

et nous montrer ce que ça t'affiche ?
Eventuellement,
tu peux aussi, ajouter en dessous
echo "<a href='".$donnees_client['REF_client'] ."-000000.xlsx'>Cliquer ICI pour tester</a>";

et voir si le lien fonctionne...

1
CorentinRoche Messages postés 271 Date d'inscription mercredi 1 juin 2016 Statut Membre Dernière intervention 12 juin 2023 39
22 juil. 2020 à 18:20
Bonjour,

Pour la première ligne proposer voici le résultat :


Pour la deuxième ligne le "Cliquer ici" Fonctionne bien !!

Merci
0
yg_be Messages postés 23203 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 septembre 2024 Ambassadeur 1 536
Modifié le 22 juil. 2020 à 16:39
bonjour, quel est l'html généré?

montre-nous aussi le code html que tu souhaites obtenir.
il me semble que tu as, au minimum, un problème avec les guillemets ou les apostrophes.
0
CorentinRoche Messages postés 271 Date d'inscription mercredi 1 juin 2016 Statut Membre Dernière intervention 12 juin 2023 39
Modifié le 22 juil. 2020 à 16:37
Tout se fait via le PHP

A la fin du code je veux rajouter ça :
echo "<meta http-equiv='refresh' content='0;url=" . $donnees_client['REF_client'] ."-000000.xlsx/>";

Pour que le fichier Excel placer sur le serveur sois télécharger

par la suite je r'ajouterais une redirection vers la page d'accueil

Ci joint le code complet :
<?php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

$titre_page = "Générer une facture PART"; //titre de la page

//connexion à la bdd
require_once 'bdd.php';
require 'vendor/autoload.php';

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

$edit_id_client = $_GET['id'] ;

//Récupération des données clients enfonction de l'ID
$sql = 'SELECT * FROM Clients_Particuliers WHERE id =  '. $edit_id_client .''  ;
$datas = array('2');
try{
  $recup_donnees_client = $bdd->prepare($sql);
  $recup_donnees_client->execute($datas);
  $arr_donnees_client  = $recup_donnees_client->fetchAll();
}catch(Exception $e){
  echo "Erreur : ".$e->getMessage();
}


if(!empty($arr_donnees_client)){
    foreach($arr_donnees_client as $donnees_client ){

    $spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load('Facture_VIERGE.xlsx');
    
    $worksheet = $spreadsheet->getActiveSheet();
    
    $worksheet->getCell('B9')->setValue($donnees_client['REF_client']);
    $worksheet->getCell('B10')->setValue($donnees_client['telephone_portable']);
    $worksheet->getCell('B11')->setValue($donnees_client['adresse']);
    
    $writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xlsx');
    $writer->save($donnees_client['REF_client'] .'-000000.xlsx');

  echo "<meta http-equiv='refresh' content='0;url=" . $donnees_client['REF_client'] ."-000000.xlsx/>";

   } 
  }

?>

<!DOCTYPE html>
<html lang="fr">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="description" content="au theme template">
    <meta name="author" content="Hau Nguyen">
    <meta name="keywords" content="au theme template">
    <title><?php echo $titre_page; ?></title>
    <link rel="icon" href="images/favicon.ico" />
    <link href="css/font-face.css" rel="stylesheet" media="all">
    <link href="vendor/font-awesome-4.7/css/font-awesome.min.css" rel="stylesheet" media="all">
    <link href="vendor/font-awesome-5/css/fontawesome-all.min.css" rel="stylesheet" media="all">
    <link href="vendor/mdi-font/css/material-design-iconic-font.min.css" rel="stylesheet" media="all">
    <link href="vendor/bootstrap-4.1/bootstrap.min.css" rel="stylesheet" media="all">
    <link href="vendor/animsition/animsition.min.css" rel="stylesheet" media="all">
    <link href="vendor/bootstrap-progressbar/bootstrap-progressbar-3.3.4.min.css" rel="stylesheet" media="all">
    <link href="vendor/wow/animate.css" rel="stylesheet" media="all">
    <link href="vendor/css-hamburgers/hamburgers.min.css" rel="stylesheet" media="all">
    <link href="vendor/slick/slick.css" rel="stylesheet" media="all">
    <link href="vendor/select2/select2.min.css" rel="stylesheet" media="all">
    <link href="vendor/perfect-scrollbar/perfect-scrollbar.css" rel="stylesheet" media="all">
    <link href="css/theme.css" rel="stylesheet" media="all">
</head>

<body class="animsition">
    <div class="page-wrapper">
        
            <?php
                require_once('menu.php')
            ?>

        <div class="page-container">
            <!-- MAIN CONTENT-->
            <div class="main-content">
                <div class="section__content section__content--p30">
                    <div class="container-fluid">
                      <button onclick="window.location.href='clients.php'" type="button" class="btn btn-outline-link btn-sm">
                      <i class="fas fa-angle-double-left"></i> Retour</button>                      
                        <div class="row">

                        </div>
                        <br><br><br><br><br><br><br><br><br><br><br>
                        
                        <?php
                            require_once('copyright.php')
                        ?>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <script src="vendor/jquery-3.2.1.min.js"></script>
    <script src="vendor/bootstrap-4.1/popper.min.js"></script>
    <script src="vendor/bootstrap-4.1/bootstrap.min.js"></script>
    <script src="vendor/slick/slick.min.js"></script>
    <script src="vendor/wow/wow.min.js"></script>
    <script src="vendor/animsition/animsition.min.js"></script>
    <script src="vendor/bootstrap-progressbar/bootstrap-progressbar.min.js"></script>
    <script src="vendor/counter-up/jquery.waypoints.min.js"></script>
    <script src="vendor/counter-up/jquery.counterup.min.js"></script>
    <script src="vendor/circle-progress/circle-progress.min.js"></script>
    <script src="vendor/perfect-scrollbar/perfect-scrollbar.js"></script>
    <script src="vendor/chartjs/Chart.bundle.min.js"></script>
    <script src="vendor/select2/select2.min.js"></script>
    <script src="js/main.js"></script>

</body>
</html>
0
CorentinRoche Messages postés 271 Date d'inscription mercredi 1 juin 2016 Statut Membre Dernière intervention 12 juin 2023 39
Modifié le 22 juil. 2020 à 16:44
Si je remplace la ligne meta par celle ci :
  echo "<meta http-equiv='refresh' content='0;url="000000.xlsx";

Le fichier 000000.xlsx est bien télécharger..

Par contre avec celle ci rien :
  echo "<meta http-equiv='refresh' content='0;url=" . $donnees_client['REF_client'] ."-000000.xlsx";



Le fichier est bien crée sur le serveur pourtant :

0
yg_be Messages postés 23203 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 septembre 2024 1 536
22 juil. 2020 à 16:47
as-tu examiné et comparé le code html généré?
https://support.google.com/surveys/answer/6172725?hl=fr
0
CorentinRoche Messages postés 271 Date d'inscription mercredi 1 juin 2016 Statut Membre Dernière intervention 12 juin 2023 39 > yg_be Messages postés 23203 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 septembre 2024
22 juil. 2020 à 16:50
Voici le résultat il me manque la fin du meta :

0
yg_be Messages postés 23203 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 septembre 2024 1 536 > CorentinRoche Messages postés 271 Date d'inscription mercredi 1 juin 2016 Statut Membre Dernière intervention 12 juin 2023
22 juil. 2020 à 16:55
merci de partager du texte, pas des images.
es-tu certain que ton code php envoie la fin? moi, pas, comme ton code change chaque fois que tu nous le montres.
as-tu comparé les codes html générés dans le cas qui fonctionne et dans le cas qui ne fonctionne pas?
0
CorentinRoche Messages postés 271 Date d'inscription mercredi 1 juin 2016 Statut Membre Dernière intervention 12 juin 2023 39 > yg_be Messages postés 23203 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 septembre 2024
Modifié le 22 juil. 2020 à 17:08
Quand j'ai la ligne de cette façons :
echo "<meta http-equiv='refresh' content='0;url=NathanNARBOT-000000.xlsx'/>";

Cela fonctionne bien est j'ai bien le téléchargement de NathanNARBOT-000000.xlsx qui se lance.

Mais quand j'ai la ligne comme ça :
echo "<meta http-equiv='refresh' content='0;url=" . $donnees_client['REF_client'] ."-000000.xlsx'/>";

Le téléchargement ne se lance pas et j'ai "Cette page ne fonctionne pas" pourtant j'ai bien les lignes :
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
pour afficher les erreurs.

Je ne peux donc pas comparer l'HTML
0
yg_be Messages postés 23203 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 septembre 2024 1 536 > CorentinRoche Messages postés 271 Date d'inscription mercredi 1 juin 2016 Statut Membre Dernière intervention 12 juin 2023
22 juil. 2020 à 22:28
pourquoi ne peux-tu pas comparer l'html?
as-tu fait echo de $donnees_client['REF_client']?
0
NHenry Messages postés 15151 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 4 septembre 2024 333
Modifié le 22 juil. 2020 à 18:32
Question bête pourquoi ne pas utiliser un :
header('location: '. $donnees_client['REF_client'] .'-000000.xlsx');
?

0
CorentinRoche Messages postés 271 Date d'inscription mercredi 1 juin 2016 Statut Membre Dernière intervention 12 juin 2023 39
22 juil. 2020 à 18:35
Bonjour,

Car je souhaite être rediriger vers une autres page donc après la ligne qui me pose soucis je vais faire un
header('location: 'clients.php');   

J'ai besoins d’être sur la même page du-coup...

Merci tout de même du message
0
yg_be Messages postés 23203 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 septembre 2024 1 536 > CorentinRoche Messages postés 271 Date d'inscription mercredi 1 juin 2016 Statut Membre Dernière intervention 12 juin 2023
22 juil. 2020 à 22:26
tu ne pourras pas faire cela.
0