IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

PHP et FPDF, ajouter des variables


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Octobre 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de base de données

    Informations forums :
    Inscription : Octobre 2015
    Messages : 14
    Points : 3
    Points
    3
    Par défaut PHP et FPDF, ajouter des variables
    Bonjour à tous,

    Voila j'énonce mon problème.

    Je parcours le web depuis des heures en cherchant la solution à mon problème.

    Je souhaite, comme le sujet l'indique, inclure les variables de mon fichier veri_order.php dans mon fichier pdf.php (qui lance automatiquement FPDF.php)

    Malheureusement seul cette ligne apparait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $pdf->Cell(40,10,'hello world');
    La ligne fait apparaitre une cellule avec une bordure mais la variable est passée sous silence

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $pdf->Cell(60,10,$user, 0,1,'C');
    J'aimerais comprendre pourquoi, et comment je pourrais faire pour que cela fonctionne. (En effet, j'ai beaucoup de variables à entrer dans mon pdf)

    Je vous joins ci-après les codes

    pdf.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php
    require('fpdf.php');
    $pdf=new FPDF();
    $pdf->AddPage();
    $pdf->SetFont('Arial','B',16);
    $pdf->Cell(40,10,'hello world');
    $pdf->Cell(60,10,$user, 0,1,'C');
    $pdf->Output("test.pdf");
    ?>
    veri_order.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
     
    <html>
    <head>
    <meta charset="utf-">
    <title>ULAC</title>
        <link rel="stylesheet" href="style_order.css" media="screen" type="text/css" />
        <link rel="SHORTCUT ICON" href="u.ico"/>
    </head>
     
    <body>
     
            <div id="content">
     
                <p><a href='index.php'><span>Log off</span></a></p>
                <p><a href='order.php'><span>New order</span></a></p>
                <p><a href='pdf.php'><span>Generate PDFdoc</span></a></p>
     
                <?php
     
                session_start();
     
                $datetime = date("Y-m-d H-i-s");
     
                    if (empty($_SESSION['username']))
                    {
                        header('location:index.php');
                    }
                    else
                    {
                        if(isset($_GET['deconnexion']))
                    {
                       if($_GET['deconnexion']==true)
                       { 
                          session_destroy();
                          header("location:index.php");
                       }
                    }
                    else if($_SESSION['username'] !== ""){
                        $user = $_SESSION['username'];
                        // afficher un message
                        /*echo "<br>Confirmation de commande<br><br>";*/
                    }
     
                    }  
     
     
     
                ?>
    </div>
     
    <div id="box_confirmation_commande">
     
        <div>
     
        <h3>CONFIRMATION DE COMMANDE</h3>
                        <p></p>
     
        </div>
     
     
     
     
    <?php
     
    if(isset($_POST['list_mat'])){
     
    foreach ($choix as $_POST['list_mat'])
    {
    echo "Choix utilisateur : ",$choix,"<br>";
    }
    }
     
       try
    {
        $bdd = new PDO('mysql:host=mon_serveur;dbname=nom_BDD;charset=utf8', 'nom_table', '');
    }
    catch(Exception $e)
    {
            die('Erreur : '.$e->getMessage());
    }
     
    echo 'Récapitulatif:<br><br>'; 
     
        $req = $bdd->prepare('INSERT INTO commande(modele, reference, commentaire, utilisateur, date) VALUES(?, ?, ?, ?, NOW())');
        $req->execute(array(
     
        $_POST['modele'],
        $_POST['reference'],
        $_POST['commentaire'],
        $user,
     
            ));
     
     
    echo $datetime.'<br>'.$_POST['modele'].'<br>'.$_POST['reference'].'<br>'.$_POST['commentaire'].'<br>'.'Commande effectuée par '.$user.'<br><br>'.'Merci pour votre commande!';
     
     
     
    ?>
     
            </div>
     
     
    </body>
    </html>
    D'avance je vous remercie pour votre aide.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                <p><a href='pdf.php'><span>Generate PDFdoc</span></a></p>
    $user n'est pas transmis au fichier pdf.php.

    2-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo 'Récapitulatif:<br><br>'; 
     
        $req = $bdd->prepare('INSERT INTO commande(modele, reference, commentaire, utilisateur, date) VALUES(?, ?, ?, ?, NOW())');
    Tu fais l'INSERT au moment du "récapitulatif" ??

    Qui plus est, bien APRES l'affichage des liens...


    Revois la LOGIQUE de ton code.

  3. #3
    Candidat au Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Octobre 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de base de données

    Informations forums :
    Inscription : Octobre 2015
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Salut Jreaux62,

    Merci pour ces remarques, mais comme tu peux en conclure suite à la lecture de mon code, je suis un novice ne la matière.

    Pourrais tu m'éclairer d'avantage?

    Merci d'avance

  4. #4
    Invité
    Invité(e)
    Par défaut
    De quoi veux-tu générer le PDF ?
    De la Commande, je suppose.

    1. Alors, il faut au moins faire le traitement PHP (dont la requête SQL "INSERT ...") AVANT d'afficher les liens.
      (plus généralement, on fait le traitement PHP avant tout affichage HTML)
    2. Il faut aussi récupérer l'index (id auto-incrémenté) de la ligne qui vient d'être insérée en BDD : avec lastInsertId().
    3. Puis, dans le lien <a>, transmettre en variable cet id au fichier pdf.php, pour lui indiquer quelle commande traiter.
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
                  <p><a href='pdf.php?id_commande=<?php echo $id_commande; ?>'><span>Generate PDFdoc</span></a></p>
    4. Dans pdf.php, on récupère cet id qui permet de récupérer (via une requête SQL) les données de la ligne à traiter.
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      <?php $id_commande = $_GET['id_commande']; ?>
    5. Puis, via une requête SQL "SELECT.... WHERE id = ?", on récupère les données de la ligne à traiter.
    Dernière modification par Invité ; 18/08/2019 à 13h00.

  5. #5
    Candidat au Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Octobre 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de base de données

    Informations forums :
    Inscription : Octobre 2015
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Merci pour ces réponse.

    Mais je t'avoue que cela est un peu du petit chinois pour moi.

    J'ai modifié ceci dans veri_order.php:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <p><a href='pdf.php?id_commande=<?php echo $id_commande; ?>'><span>Generate PDFdoc</span></a></p>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    echo 'Récapitulatif:<br><br>';	
     
    	$req = $bdd->prepare('INSERT INTO commande(modele, reference, commentaire, utilisateur, date) VALUES(?, ?, ?, ?, NOW())');
    	$req->execute(array(
     
    	$_POST['modele'],
    	$_POST['reference'],
    	$_POST['commentaire'],
    	$user,
     
    		));
     
    	$id_commande= $bdd->lastInsertId();
     
    echo $datetime.'<br>'.$_POST['modele'].'<br>'.$_POST['reference'].'<br>'.$_POST['commentaire'].'<br>'.'Commande effectuée par '.$user.'<br><br>'.'Merci pour votre commande!';
    Et dans pdf.php:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    session_start();
    require('fpdf.php'); 
    $id_commande = $_GET['id'];
    $pdf=new FPDF();
    $pdf->AddPage();
    $pdf->SetFont('Arial','B',16);
    $pdf->Cell(40,10,'hello world');
    $pdf->Cell(60,10,$_SESSION['username'], 0,1,'C');
    $pdf->Cell(60,10,$_POST['modele'], 0,1,'C');
    $pdf->Output();
    ?>
    Peux tu me dire si je suis sur la bonne voie et ce qui doit être encore être fait pour que cela fonctionne?

    Dois-je faire une connexion à ma base de donnée dans pdf.php?

    Actuellement seule est retranscrite la variable de session $_SESSION['username'].

    Encore merci pour le temps consacré.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Il manque la requête SQL "SELECT.... WHERE id = ?", pour récupèrer les données de la ligne à traiter.


    J'ai du mal à comprendre...
    Tu fais un "système de commandes", alors que tu ne connais pas les BASES du PHP ?...
    Et écrire des requêtes INSERT/UPDATE/SELECT/... fait partie du B-A-BA.

    A LIRE + FAIRE LES EXERCICES :


  7. #7
    Candidat au Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Octobre 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de base de données

    Informations forums :
    Inscription : Octobre 2015
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Je te remercie pour l'aide déjà apporté, c'est super!

    Toutefois, je ne suis pas programmeur et je n'ai malheureusement pas assez de temps afin de m'y consacrer comme le ferait un developpeur amateur.

    Je sais que je demande beaucoup à la communauté, mais c'est le dernier "frein" que j'ai dans ce projet afin de le concrétiser.

    Je sais également que le but d'un forum d'entre-aide est de partager les connaissances et non de donner les réponses toutes faites.

    Comme tu dis, mes connaissances sont bien trop faibles dans le domaine et c'est bien pour cela que je viens vous consulter afin que vous me fassiez profiter de votre expérience.

    Si l'un d'entre vous a l'âme charitable de me donner un gros coup de pouce, je ne le remercierai jamais assez.

  8. #8
    Candidat au Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Octobre 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de base de données

    Informations forums :
    Inscription : Octobre 2015
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Voila ou j'en suis:

    veri_order.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <?php
    session_start();
    $bdd = new PDO('mysql:host=nom_serveur;dbname=nom_database;charset=utf8', 'root', '');
    $id_commande = $bdd->lastInsertId();
    $id_commande = $_GET['id'];
    require('fpdf.php'); 
    $pdf=new FPDF();
    $pdf->AddPage();
    $pdf->SetFont('Arial','B',16);
    $pdf->Cell(40,10,'hello world');
    $pdf->Cell(40,10,$_SESSION['username'], 0,1,'C');
    $pdf->Cell(40,10,$_GET['id'], 0,1,'C');
    $pdf->Cell(40,10,$id_commande, 0,1,'C');
    $pdf->Cell(40,10,'lol', 0,1,'C');
    $pdf->Output();
    ?>
    Ces deux lignes sont la pour voir ce qui est approprié pour l'affichage (vu que je n'ai aucune idée de comment faire)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $pdf->Cell(40,10,$_GET['id'], 0,1,'C');
    $pdf->Cell(40,10,$id_commande, 0,1,'C');
    et le code de veri_order.ph

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    $req = $bdd->prepare('INSERT INTO commande(modele, reference, commentaire, utilisateur, date) VALUES(?, ?, ?, ?, NOW())');
    	$req->execute(array(
     
    	$_POST['modele'],
    	$_POST['reference'],
    	$_POST['commentaire'],
    	$user,
     
    		));
     
    	$id_commande = $bdd->lastInsertId();
     
    echo $datetime.'<br>'.$_POST['modele'].'<br>'.$_POST['reference'].'<br>'.$_POST['commentaire'].'<br>'.'Commande effectuée par '.$user.'<br><br>'.'Merci pour votre commande!';
     
     
    ?>
     
    		</div>
    			<p><a href='pdf.php?id_commande=<?php echo $id_commande; ?>'><span>Generate PDFdoc</span></a></p>
    Je vois très bien où placer le WHERE, mais c'est dans veri_order.php ou dans pdf.php?

    Par contre je ne sais pas du tout quoi mettre derrière pour que ça marche.

    Merci d'avance pour vos réponses

  9. #9
    Invité
    Invité(e)
    Par défaut
    pdf.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    <?php
    session_start();
    //------------------
    // Connexion à la BDD
    try
    {
        $bdd = new PDO('mysql:host=mon_serveur;dbname=nom_BDD;charset=utf8', 'nom_table', '', [
    		PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    		PDO::ATTR_EMULATE_PREPARES   => false
    		]);
    }
    catch(Exception $e){ die('Erreur : '.$e->getMessage()); }
    //------------------
    // on récupère l id de la commande (passé dans l URL)
    $id_commande = ( !empty($_GET['id']) && is_numeric($_GET['id']) )? $_GET['id'] : 0;
    if( empty($id_commande) )
    {
    	header('location:index.php');	// redirection en cas de mauvais id_commande
    	exit;
    }
    //------------------
    // Requête : infos de commande en BDD
    $sql = "SELECT modele, reference, commentaire, utilisateur, date 
    	FROM commande 
    	WHERE id_commande = ?
    	";
    $req = $bdd->prepare( $sql );
    $req->execute(array(
    	$id_commande
    	));
    $row = $req->fetch(PDO::FETCH_ASSOC); // récupère les infos
    $modele = $row['modele'];
    $reference = $row['reference'];
    $commentaire = $row['commentaire'];
    $utilisateur = $row['utilisateur'];
    $date = $row['date'];
    //------------------
    // FPDF
    require('fpdf.php'); 
    .....

  10. #10
    Invité
    Invité(e)
    Par défaut
    veri_order.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    <?php
    session_start();
    //------------------
    // Connexion à la BDD
    try
    {
        $bdd = new PDO('mysql:host=mon_serveur;dbname=nom_BDD;charset=utf8', 'nom_table', '', [
    		PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    		PDO::ATTR_EMULATE_PREPARES   => false
    		]);
    }
    catch(Exception $e){ die('Erreur : '.$e->getMessage()); }
    //------------------
    $datetime = date("Y-m-d H-i-s");
    //------------------
    if (empty($_SESSION['username']))
    {
    	header('location:index.php');
    } 
    else 
    {
    	if(isset($_GET['deconnexion']))
    	{
    		if($_GET['deconnexion']==true)
    		{ 
    			session_destroy();
    			header("location:index.php");
    		}
    	} 
    	else if($_SESSION['username'] !== "")
    	{
    		$user = $_SESSION['username'];
    	}
    }  
    //------------------
    // INSERTION EN BDD
    $id_commande = 0;
    if( isset($_POST['modele'], $_POST['reference'], $_POST['commentaire']) )
    {
    	$req = $bdd->prepare('INSERT INTO commande(modele, reference, commentaire, utilisateur, date) VALUES(?, ?, ?, ?, NOW())');
    	$req->execute(array(
    		$_POST['modele'],
    		$_POST['reference'],
    		$_POST['commentaire'],
    		$user,
    		));
    	$id_commande = $bdd->lastInsertId(); // dernier index créé
    }
    //------------------
    ?>
    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="UTF-8">
    	<title>ULAC</title>
        <link rel="stylesheet" href="style_order.css" media="screen" type="text/css" />
        <link rel="SHORTCUT ICON" href="u.ico"/>
    </head>
    <body>
     
    	<div id="content">
     
    		<p><a href="index.php"><span>Log off</span></a></p>
    		<p><a href="order.php"><span>New order</span></a></p>
    <?php	if( !empty($id_commande) ){ ?>
    		<p><a href="pdf.php?id_commande=<?php echo $id_commande; ?>"><span>Generate PDFdoc</span></a></p>
    <?php	} ?>
    	</div>
     
    	<div id="box_confirmation_commande">
     
    		<div>
    			<h3>CONFIRMATION DE COMMANDE</h3>
    			<p></p>
    		</div>
    <?php
    //------------------
    if(isset($_POST['list_mat']))
    {
    	foreach ($choix as $_POST['list_mat'])
    	{
    		echo "Choix utilisateur : ",$choix,"<br>";
    	}
    }
    //------------------
    ?>
    			<h3>Récapitulatif</h3>
    <?php
    //------------------
    	echo $datetime.'<br>'.$_POST['modele'].'<br>'.$_POST['reference'].'<br>'.$_POST['commentaire'].'<br>';
    	echo 'Commande effectuée par '.$user.'<br><br>'.'Merci pour votre commande!';
    //------------------
    ?>
     
    	</div>
     
    </body>
    </html>

  11. #11
    Candidat au Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Octobre 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de base de données

    Informations forums :
    Inscription : Octobre 2015
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Je ne te remercierai jamais assez.

    J'ai réimplanté tout dans mes php c'est super tout semble fonctionner, hormis que lorsque je clique sur le lien sensé générer le pdf, je suis redirigé vers index.php et rien n'est généré.

    Est ce normal?

    Merci d'avance pour ce dernier coup de main

    -------------------------------

    Je pense que c'est cette ligne qui agit: (pdf.php)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // on récupère l id de la commande (passé dans l URL)
    $id_commande = ( !empty($_GET['id']) && is_numeric($_GET['id']) )? $_GET['id'] : 0;
    if( empty($id_commande) )
    {
    	header('location:index.php');	// redirection en cas de mauvais id_commande
    	exit;
    Vois-tu le problème?

  12. #12
    Invité
    Invité(e)
    Par défaut
    1- Mea culpa.
    C'est $_GET['id_commande'].

    2- dans la table "commande", tu as bien une colonne "id_commande", auto-increment, PRIMARY Key ?
    Sinon, montre la structure de la table.
    Dernière modification par rawsrc ; 18/08/2019 à 17h34.

  13. #13
    Candidat au Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Octobre 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de base de données

    Informations forums :
    Inscription : Octobre 2015
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Oui en effet c'est cela j'ai modifié, maintenant il ouvre la page mais il m'indique ceci:

    Nom : pdf.png
Affichages : 959
Taille : 97,7 Ko

    Pourquoi cela s'affiche-t-il?

  14. #14
    Candidat au Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Octobre 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de base de données

    Informations forums :
    Inscription : Octobre 2015
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Voici
    Nom : table.png
Affichages : 899
Taille : 147,1 Ko

    Remplacer tout les id_commande par id?

    ou renommé id dans la table par id_commande?

  15. #15
    Invité
    Invité(e)
    Par défaut
    renomme id dans la table par id_commande.

    Au moins, c'est explicite.

  16. #16
    Candidat au Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Octobre 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de base de données

    Informations forums :
    Inscription : Octobre 2015
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Franchement un méga merci pour ton travail. Je ne saurais jamais te remercier.

    Chapeau pour le service et la rapidité.

    Encore merci infiniment, je note le post en résolu.

  17. #17
    Candidat au Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Octobre 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de base de données

    Informations forums :
    Inscription : Octobre 2015
    Messages : 14
    Points : 3
    Points
    3
    Par défaut Encore une petite info :)
    Salut Jreaux62,

    J'ai une dernière petite question dans le cadre de mon projet.

    Si tu as 5 minutes pour m'éclairer cela sera super.

    J'aimerais faire apparaitre la variable $id_commande en rapport avec la commande qui vient d'être passée dans un lien hypertexte (déclarer par la variable $link_pdf) sauf que celle ci est déclarée après. J'ai fait pas mal de manipulation mais rien n'y fait. Le résultat me renvoie toujours 0 ou une lecture impossible du code. Peux tu y jeter un coup d'oeil?

    Veri_order.php


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    <?php
    session_start();
    //------------------
    // Connexion à la BDD
    try
    {
        $bdd = new PDO('mysql:host=;dbname=', '', '', [
    		PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    		PDO::ATTR_EMULATE_PREPARES   => false
    		]);
    }
    catch(Exception $e){ die('Erreur : '.$e->getMessage()); }
    //------------------
    $datetime = date("Y-m-d H-i-s");
    //------------------
    if (empty($_SESSION['username']))
    {
    	header('location:index.php');
    } 
    else 
    {
    	if(isset($_GET['deconnexion']))
    	{
    		if($_GET['deconnexion']==true)
    		{ 
    			session_destroy();
    			header("location:index.php");
    		}
    	} 
    	else if($_SESSION['username'] !== "")
    	{
    		$user = $_SESSION['username'];
    	}
    }  
    //------------------
    // INSERTION EN BDD
     
    $id_commande = 0;
     
    if( isset($_POST['modele'], $_POST['reference'], $_POST['commentaire']) )
    {
     
    	$req = $bdd->prepare('INSERT INTO commande(modele, reference, commentaire, utilisateur, pdf, date) VALUES(?, ?, ?, ?, ?, NOW())');
     
    	$req->execute(array(
     
    		$_POST['modele'],
    		$_POST['reference'],
    		$_POST['commentaire'],
    		$user,
    		$link_pdf = '<a href="order_pdf/ULAC_'.$id_commande.'_purchase_order_'.$_POST['reference'].'.pdf"><span>PDF</span></a>' ,
    		));
    	$id_commande = $bdd->lastInsertId(); // dernier index créé
     
    }
    //------------------
    ?>
    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="UTF-8">
    	<title>ULAC</title>
        <link rel="stylesheet" href="style_order.css" media="screen" type="text/css" />
        <link rel="SHORTCUT ICON" href="u.ico"/>
    </head>
    <body>
     
    	<div id="content">
     
    		<p><a href="index.php"><span>Log off</span></a></p>
    		<p><a href="order.php"><span>New order</span></a></p>
    <?php	if( !empty($id_commande) ){ ?>
    		<p><a href="pdf.php?id_commande=<?php echo $id_commande; ?> "><span>Generate PDFdoc</span> </a></p>
    <?php	} ?>
    	</div>
     
    	<div id="box_confirmation_commande">
     
    		<div>
    			<h3>ORDER SUMMARY</h3>
    			<p></p>
    		</div>
    <?php
    //------------------
    if(isset($_POST['list_mat']))
    {
    	foreach ($choix as $_POST['list_mat'])
    	{
    		echo "Choix utilisateur : ",$choix,"<br>";
    	}
    }
    //------------------
    ?>
    			Your order:<br><br>
    <?php
    //------------------
    	echo 'Order reference: '.$id_commande.'<br>'.'Date of the order: '.$datetime.'<br>'.'Model: '.$_POST['modele'].'<br>'.'Your reference: '.$_POST['reference'].'<br>'.'Client name: '.$_POST['commentaire'].'<br>';
    	echo 'Order made by '.$user.'<br><br>'.'Thank you for your order!';
    //------------------
    ?>	
     
    	</div>
     
    </body>
    </html>
    Merci d'avance

  18. #18
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $id_commande = 0;
     //......
    		$link_pdf = '<a href="order_pdf/ULAC_'.$id_commande.'_purchase_order_'.$_POST['reference'].'.pdf"><span>PDF</span></a>' ,
    		));
    	$id_commande = $bdd->lastInsertId(); // dernier index créé
    Euhh, tu es sûr de ne pas voir le problème ?...

  19. #19
    Candidat au Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Octobre 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de base de données

    Informations forums :
    Inscription : Octobre 2015
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Si si

    Je me doute, la variable est déclarée après.

    J’avais bien compris, mais le problème c’est qu’en agençant différemment, plus rien ne fonctionne

    As tu une idée de comme faire?

    Vu que le code déclare la variable $id_commande comme équivalente à 0 juste avant l’insertion mysql si je déclare juste après qu’elle équivaut au dernière id enregistré plus rien ne fonctionnera!

    Un petit indice? Ou un code complet lol

  20. #20
    Invité
    Invité(e)
    Par défaut
    OK. Là, c'est quand même du grand n'importe quoi.

    1- on n'enregistre pas un lien <a> comme ça, dans la BDD...
    • TOUT ce qui a besoin d'être enregistré en BDD, c'est le chemin/nom du fichier.
    • Ensuite, le lien <a> sera construit au moment de l'affichage

    2- Selon ce principe, et sachant que le id_commande fait partie du nom du fichier, il va falloir s'y prendre en 2 temps :
    • d'abord un INSERT pour les autre paramètres,
    • ensuite on récupère l'id_commande avec lastInsertId
    • enfin un UPDATE pour le chemin/nom du fichier

    En pratique, ça donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    //------------------
    // INSERTION EN BDD
    $id_commande = 0;
    if( isset($_POST['modele'], $_POST['reference'], $_POST['commentaire']) )
    {
    	// ---------
    	// 1- INSERT
    	$sql_insert = "INSERT INTO commande 
    		(modele, reference, commentaire, utilisateur, pdf, date) 
    		VALUES 
    		(:modele, :reference, :commentaire, :utilisateur, NOW())";
    	$req_insert = $bdd->prepare( $sql_insert );
    	$req_insert->execute(array(
    		':modele' => $_POST['modele'],
    		':reference' => $_POST['reference'],
    		':commentaire' => $_POST['commentaire'],
    		':utilisateur' => $user
    		));
    	// ---------
    	// 2- récupération de id_commande créé
    	$id_commande = $bdd->lastInsertId(); // dernier index créé
    	// ---------
    	// 3- UPDATE pour le chemin/nom du fichier PDF
    	$sql_update = "UPDATE commande SET
    		pdf = :pdf
    		WHERE id_commande = :id_commande";
    	$req_update = $bdd->prepare( $sql_update );
    	$req_update->execute(array(
    		':pdf' => 'order_pdf/ULAC_'.$id_commande.'_purchase_order_'.$_POST['reference'].'.pdf',
    		':id_commande' => $id_commande
    		));
    	// ---------
    }
    //------------------
    N.B. Perso, je préfère les "placeholders nommés".
    C'est plus clair et facile à déboguer.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [NetBeans IDE for PHP] Affichage du contenu des variables
    Par Beho Double dans le forum NetBeans
    Réponses: 0
    Dernier message: 09/12/2008, 17h40
  2. PHP 5 et déclarations des variables
    Par staive dans le forum Langage
    Réponses: 7
    Dernier message: 18/03/2008, 11h31
  3. Ajouter des variables supplémentaires pour une acp
    Par fafabzh6 dans le forum SAS STAT
    Réponses: 7
    Dernier message: 31/01/2008, 17h31
  4. [PHP-JS] comment recupérer des variables javascript dans un fichier php
    Par domino_dj dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 21/02/2007, 12h46
  5. Ajouter des variables au PATH
    Par Feustine dans le forum Langage
    Réponses: 5
    Dernier message: 16/08/2005, 14h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo