Bonjour tout le monde,

J'essaie en vain de construire une variable qui alimenterait une requête SQL, mais ça bloque à ce niveau :
 
$table = "TABLE_" . $_SESSION["fis_ref"]; // on définie la table de données à exporter


La variable de session contiendrait, ici, "VEP" et $table contiendrait alors "TABLE_VEP", cette dernière étant définie dans config.php.
Est-ce possible ? Sinon, il faut que je revois le nom des tables directement dans MySQL.

Voici le code détaillé :

export.php

<?php
require('config.php');

// Initialiser la session
session_start();

// Vérifiez si l'utilisateur est connecté, sinon redirigez-le vers la page de connexion
if(!isset($_SESSION["username"]))
{
    header("Location: login.php");
    exit(); 
}

/// EXPORT DES DONNÉES
if(isset($_POST['data_exported']))
{
    $table = "TABLE_" . $_SESSION["fis_ref"]; // on définie la table de données à exporter

    $sql_date = "SELECT date FROM " . $table . "";
    $result_date = mysqli_query($mysqli, $sql_date);
    $row = mysqli_fetch_array($result_date);


config.php

define('TABLE_VEP', '0_sellsy_ventes');


Réponse MySQL

Fatal error: Uncaught exception 'mysqli_sql_exception' with message 'La table 'test.table_vep' n'existe pas' in ...export.php on line 20
( ! ) mysqli_sql_exception: La table 'test.table_vep' n'existe pas in ... export.php on line 20
Modérateur
Bonjour,

L'erreur dit que la table "table_vep" n'existe pas dans la base "test".

As-tu créé cette table dans la base "test" ?

Amicalement,
parsimonhi a écrit :
Bonjour,

L'erreur dit que la table "table_vep" n'existe pas dans la base "test".

As-tu créé cette table dans la base "test" ?

Amicalement,


Merci parsimonhi,
La table est bien créée dans le fichier config.php
define('TABLE_VEP', '0_sellsy_ventes');

D'ailleurs, si je remplace la variable dans la requête par la valeur du define(), ça fonctionne :

$sql_date = "SELECT date FROM " . TABLE_VEP . "";
Salut,

Quand tu fais :
 $sql_date = "SELECT date FROM " . $table . "";


Php transforme ça en
"SELECT date FROM TABLE_VET" et du coup MySQL te dit que TABLE_VEP n'existe pas )

Si j'ai bien compris ce que tu veux faire c'est un espèce de pivot avec ton define , je crois qu'il faut que tu utilises la fonction constant : https://www.php.net/manual/fr/function.constant.php , ce qui doit donner un truc du genre :

$table = constant("TABLE_" . $_SESSION["fis_ref"]);

Modifié par Mathieuu (28 Sep 2022 - 16:15)
Meilleure solution
Mathieuu a écrit :
Salut,
Si j'ai bien compris ce que tu veux faire c'est un espèce de pivot avec ton define , je crois qu'il faut que tu utilises la fonction constant : https://www.php.net/manual/fr/function.constant.php , ce qui doit donner un truc du genre :

$table = constant("TABLE_" . $_SESSION["fis_ref"]);


Mathieuu, c'est exactement ça et ta solution est juste NICKEL !!
Merci beaucoup !!
Modifié par Umable (28 Sep 2022 - 16:21)