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

Langage PHP Discussion :

Système d'upload de pdf relié à un ID d'utilisateur


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2019
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2019
    Messages : 83
    Points : 13
    Points
    13
    Par défaut Système d'upload de pdf relié à un ID d'utilisateur
    Bonjour,

    Etant débutant et actuellement en train de coder une plateforme d'administration d'utilisateurs, se présentant sous forme de tableau avec liste d'utilisateurs, j'ai rajouter un bouton upload situé dans la même ligne que chacun de mes utilisateurs qui me redirige bien vers une url relié à l'id de l'user (upload.php?id=37 par exemple) sauf que je stock mes CV dans une BDD différente de mes utilisateurs et je n'arrive pas à relier l'id de ma BDD user au pdf qui est stocker dans une autre BDD nommée CV et je ne peux donc pas mettre un bouton CV dans mon tableau pour visualiser chaque CV relié à chaque utilisateurs comme j'aimerais le faire..

    Code php : 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
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    <?php
    session_start(); // AU TOUT DEBUT du fichier
    // ----------------------
    // Connexion BDD
    include('include_db.php');
    // ----------------------
      if (empty($_SESSION['Prenom'])) {
          header('Location: index.php');
      }
    //Récupérer l'id dans l'url
    $id = $_GET['id'];
     
    //Extraire les données lié à l'id
    $sql = "SELECT * FROM BDD WHERE Id=:Id";
    $query = $db->prepare($sql);
    $query->execute(array(':Id' => $id));
     
    while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
        $lastname = $row['Nom'];
        $name = $row['Prenom'];
    }
    $statusMsg = '';
     
    // File upload path
    if (!empty($_FILES['uploaded_file'])) {
        $targetDir = "cv/";
        $fileName = basename($_FILES["uploaded_file"]["name"]);
        $targetFilePath = $targetDir . $fileName;
        $fileType = pathinfo($targetFilePath, PATHINFO_EXTENSION);
     
        if (isset($_POST["submit"]) && !empty($_FILES["uploaded_file"]["name"])) {
            // Allow certain file formats
            $allowTypes = array('pdf','docx', 'png');
            if (in_array($fileType, $allowTypes)) {
                // Upload file to server
                if (move_uploaded_file($_FILES["uploaded_file"]["tmp_name"], $targetFilePath)) {
                    // Insert image file name into database
                    $insert = $db->query("INSERT into CV (id, file_name, uploaded_on) VALUES ('".$fileName."', NOW())");
                    if ($insert) {
                        $statusMsg = "The file ".$fileName. " has been uploaded successfully.";
                    } else {
                        $statusMsg = "File upload failed, please try again.";
                    }
                } else {
                    $statusMsg = "Sorry, there was an error uploading your file.";
                }
            } else {
                $statusMsg = 'Sorry, only JPG, JPEG, PNG, GIF, & PDF files are allowed to upload.';
            }
        } else {
            $statusMsg = 'Please select a file to upload.';
        }
        echo $statusMsg;
    }
    /*if (!empty($_FILES['uploaded_file'])) {
        $file = rand(1000, 100000)."-".$_FILES['uploaded_file']['name'];
        $file_loc = $_FILES['uploaded_file']['tmp_name'];
        $file_size = $_FILES['uploaded_file']['size'];
        $file_type = $_FILES['uploaded_file']['type'];
        $path = "cv/";
        $path = $path . basename($_FILES['uploaded_file']['name']);
        if (move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $path)) {
            echo "Le CV ".  basename($_FILES['uploaded_file']['name']).
        " a bien été mis en ligne";
            $upload_query = $db->query('INSERT INTO CV VALUES('$file','$file_type','$file_size')');
            $upload_query->execute($upload_query);
            header('Location: list.php');
        } else {
            header('Location: error_upload.php');
        }
    }*/
    ?>
    <!DOCTYPE html>
    <html>
    <head>
    	<title>PA - Ajout par fichier CSV</title>
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
      <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
        <link rel="stylesheet" href="css/add_csv.css">
      <meta name="viewport" content="width=device-width, initial-scale=1">
    	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
    	<link rel="icon" href="https://www.proactiveacademy.fr/wp-content/uploads/2018/01/cropped-favicon-32x32.png" sizes="32x32" />
      <link rel="stylesheet" href="//use.fontawesome.com/releases/v5.0.7/css/all.css">
    </head>
    <body class="d-flex flex-column justify-content-center">
      <div id="page-content">
        <nav class="navbar navbar-expand-md bg-dark navbar-dark">
          <a class="navbar-brand"><img src="http://www.proactiveacademy.fr/wp-content/uploads/2018/01/p-proactive-1.png" class="img-fluid" alt="Responsive image"></a>
          <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#collapsibleNavbar">
            <span class="navbar-toggler-icon"></span>
          </button>
          <div class="collapse navbar-collapse" id="collapsibleNavbar">
            <ul class="navbar-nav mx-auto">
              <li class="nav-item">
                <a class="nav-link" href="list.php"><i class="fas fa-address-book"></i></a>
              </li>
              <li class="nav-item">
                <a class="nav-link" href="add_csv.php"><i class="fas fa-users"></i></a>
              </li>
              <li class="nav-item">
                <a class="nav-link" href="logout.php"><i class="fas fa-sign-out-alt"></i></a>
              </li>
            </ul>
          </div>
                  <span class="navbar-text right-align" style="text-align: right;">Bienvenue, <?php echo $_SESSION['Prenom']?></span>
        </nav>
    	<main class="flex-fill justify-content-center align-items-center">
        <div class="container-fluid register align-self-center h-100">
                    <div class="jumbotron jumbotron-fluid align-self-center h-100 justify-content-center align-items-center text-center" style="width:100%;border-top-style:solid;border-top-color:grey;margin-top:2%;padding: 8%;border-bottom-style:solid;border-bottom-color:grey;">
                      <div class="form">
                        <form enctype="multipart/form-data" action="upload.php" method="POST">
                            <h1 class="display 4">Ajouter un CV pour <?php echo "$name "; echo "$lastname";?></h1><br/><br/>
                            <div class="custom-file" id="customFile" lang="fr">
                              <input type="file" name="uploaded_file" id="file" class="custom-file-input"/>
                      <label class="custom-file-label" for="exampleInputFile">
                         Choisir un fichier
                      </label>
                    </div><br/><br/>
                    <script>$('.custom-file-input').on('change', function() {
                     let fileName = $(this).val().split('\\').pop();
                     $(this).next('.custom-file-label').addClass("selected").html(fileName);
                  });</script><br/>
                        <input type="submit" class="btnRegister btn btn-dark btn-sm"  value="Ajouter à la base de donnée" name="submit"/>
                      </div>
                  </div>
                </form>
              </div>
    	</main>
    </body>
    <div class="footer">
          <div class="footer-copyright text-center py-3"><hr class="my-4" style="margin: auto;width: 40%;"></br><p class="text-muted">© <?php echo date("Y"); ?> Codé par Ethan</small></p></div>
    </div>
    </div>
    </html>

    Je vous remercie,
    Ethan

  2. #2
    Invité
    Invité(e)
    Par défaut
    C'est sans doute que la question est mal posée, ou les éléments insuffisants.

    Un "Up" n'ajoute rien.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2019
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2019
    Messages : 83
    Points : 13
    Points
    13
    Par défaut
    Oui, sûrement, connaissant à peu près ton niveau si même toi tu n'as pas compris ma demande c'est qu'il doit y avoir un soucis ahah

    Du coup, j'ai une table "CV" qui contient 3 colonnes, une pour le nom du fichier, une pour la date d'upload ainsi qu'une pour son id hors j'ai un tableau avec un bouton éditer pour chaque utilisateur, comme précédemment tu m'avais indiquer de faire sur notre ancienne discussion, qui redirige par exemple vers upload.php?id=?, sauf que vu que j'utilise une table différente pour les utilisateurs présents dans la base de donnée en gros une table BDD avec les utilisateurs et l'autre CV pour les CV que je veux relié à chaque utilisateur sauf que je n'arrive pas à trouver comment mettre en relation le CV et la personne pour que je puisse faire une colonne CV dans mon tableau et ainsi afficher simplement chaque CV pour chaque ID d'utilisateur..

    Est-ce plus clair?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par StrangerThings Voir le message
    ...j'ai une table "CV" qui contient 3 colonnes, une pour le nom du fichier, une pour la date d'upload ainsi qu'une pour son id.
    1- Il manque une colonne, pour l'id de l'utilisateur associé au CV.
    Sinon, comment veux-tu relier un utilisateur à son CV ?


    2- Au cas où un utilisateur peut avoir plusieurs CV, alors il faut une 3ème table dite "relationnelle", comportant (au moins) 2 colonnes :
    • id_utilisateur
    • id_cv

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2019
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2019
    Messages : 83
    Points : 13
    Points
    13
    Par défaut
    Ah oui ! Pas bête en rajoutant la colonne id_cv je pourrais insérer dedans le GET de l'id de l'url c'est bien ça? Pour ensuite l'afficher dans mon tableau facilement..

    Sinon au niveau du nombre de CV par personne, l'utilisateur aura 1 cv qu'on pourra prévisualiser directement depuis le tableau en cliquant sur un bouton VISUALISER qui sera effectif après la résolution de ce problème, mais du coup je voulais juste écraser le pdf précédent au moment d'un second upload pour un utilisateur, as-tu une idée de comment faire s'il te plaît car déjà qu'avec deux tables je suis perdu si on en rajoute une de plus.. ahah

    Je te remercie énormément

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2019
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2019
    Messages : 83
    Points : 13
    Points
    13
    Par défaut
    Bon du coup j'ai tenter un petit tricks, sauf que mon upload ne marche plus quand je rajoute id_cv pourtant mon GET contient bien l'id de l'url, je ne vois pas ce qui coince?
    l'id_cv est bien en INT dans la base de donnée, je l'ai rajouter directement à la base de donnée "CV" ..

    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
        <?php
        var_dump($_GET);
        $statusMsg = '';
     
        if (!empty($_FILES['uploaded_file'])) {
            $targetDir = "cv/";
            $fileName = basename($_FILES["uploaded_file"]["name"]);
            $targetFilePath = $targetDir . $fileName;
            $fileType = pathinfo($targetFilePath, PATHINFO_EXTENSION);
     
            if (isset($_POST["submit"]) && !empty($_FILES["uploaded_file"]["name"])) {
                // Allow certain file formats
                $allowTypes = array('pdf','docx');
                if (in_array($fileType, $allowTypes)) {
                    // Upload file to server
                    if (move_uploaded_file($_FILES["uploaded_file"]["tmp_name"], $targetFilePath)) {
                        // Insert image file name into database
                        $insert = $db->query("INSERT into CV (file_name, uploaded_on, id_cv) VALUES ('".$fileName."', NOW(), '".$id."')");
                        if ($insert) {
                            $statusMsg = "<div class=\"alert alert-success text-center\" role=\"alert\"><b>Parfait ! </b>Votre fichier ".$fileName. " a bien été upload</div>";
                        } else {
                            $statusMsg = "<div class=\"alert alert-danger text-center\" role=\"alert\"><b>Erreur ! </b>Votre fichier n'a pas pu être upload</div>";
                        }
                    } else {
                        $statusMsg = "<div class=\"alert alert-danger text-center\" role=\"alert\"><b>Erreur ! </b>Votre fichier n'a pas pu être upload</div>";
                    }
                } else {
                    $statusMsg = "<div class=\"alert alert-danger text-center\" role=\"alert\"><b>Attention ! </b>Uniquement les .pdf et .docx sont autorisés !</div>";
                }
            } else {
                $statusMsg = "<div class=\"alert alert-danger text-center\" role=\"alert\"><b>Erreur ! </b>Veuillez choisir un fichier !</div>";
            }
            echo $statusMsg;
        }
        ?>

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bon.

    PRENDS un PAPIER et un CRAYON.

    On ne code pas "au petit bonheur la chance" !
    Il faut REFLECHIR, afin de ne PAS se tromper dans la CONCEPTION.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                        $insert = $db->query("INSERT into CV (file_name, uploaded_on, id_cv) VALUES ('".$fileName."', NOW(), '".$id."')");
    Ici, tu mets "id_cv".
    Tu es sûr de toi ?

    D'autre part, je ne t'ai pas déjà dit de faire une requête préparée ?

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2019
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2019
    Messages : 83
    Points : 13
    Points
    13
    Par défaut
    Tout d'abord, merci d'avoir pris le temps de répondre jreaux, ensuite, pour la requête préparée, je modifierais ça demain sans soucis mais je ne pense pas que cela change grand chose malheureusement car avant de rajouter le inset into id_cv, tout fonctionnait correctement.

    Ensuite, j'avais en tête de récupérer l'id de mon adresse pour que l'image ai le même id pour ensuite afficher dans le tableau grâce à ça, je ne vois pas quoi faire et ou est ma grosse erreur ? Pourrais-tu m'éclairer?

    Merci beaucoup !

  9. #9
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 372
    Points : 5 734
    Points
    5 734
    Billets dans le blog
    1
    Par défaut
    La discussion est au point mort depuis plusieurs jours. Si tu veux faire avancer les choses, donne tous les éléments : code html, code php et structure des tables.
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  10. #10
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2019
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2019
    Messages : 83
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    La discussion est au point mort depuis plusieurs jours. Si tu veux faire avancer les choses, donne tous les éléments : code html, code php et structure des tables.
    Je n'ai pas relancer le sujet car j'ai quasi trouver la solution, j'upload bien le pdf et je le renomme en l'id que je GET dans l'url de la page sauf que je n'arrive pas à rajouter l'extension après ..

    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
    106
    107
    108
    109
    <?php
    session_start(); // AU TOUT DEBUT du fichier
    // ----------------------
    // Connexion BDD
    include('include_db.php');
    // ----------------------
      if (empty($_SESSION['Prenom'])) {
          header('Location: index.php');
      }
      //Récupérer l'id dans l'url
      if (!empty($_GET['id'])) {
          $id = $_GET['id'];
      }
    ?>
    <!DOCTYPE html>
    <html>
    <head>
    	<title>PA - Ajout par fichier CSV</title>
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
      <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
        <link rel="stylesheet" href="css/add_csv.css">
      <meta name="viewport" content="width=device-width, initial-scale=1">
    	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
    	<link rel="icon" href="https://www.proactiveacademy.fr/wp-content/uploads/2018/01/cropped-favicon-32x32.png" sizes="32x32" />
      <link rel="stylesheet" href="//use.fontawesome.com/releases/v5.0.7/css/all.css">
    </head>
    <body class="d-flex flex-column justify-content-center">
      <div id="page-content">
        <nav class="navbar navbar-expand-md bg-dark navbar-dark">
          <a class="navbar-brand"><img src="http://www.proactiveacademy.fr/wp-content/uploads/2018/01/p-proactive-1.png" class="img-fluid" alt="Responsive image"></a>
          <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#collapsibleNavbar">
            <span class="navbar-toggler-icon"></span>
          </button>
          <div class="collapse navbar-collapse" id="collapsibleNavbar">
            <ul class="navbar-nav mx-auto">
              <li class="nav-item">
                <a class="nav-link" href="list.php"><i class="fas fa-address-book"></i></a>
              </li>
              <li class="nav-item">
                <a class="nav-link" href="add_csv.php"><i class="fas fa-users"></i></a>
              </li>
              <li class="nav-item">
                <a class="nav-link" href="logout.php"><i class="fas fa-sign-out-alt"></i></a>
              </li>
            </ul>
          </div>
                  <span class="navbar-text right-align" style="text-align: right;">Bienvenue, <?php echo $_SESSION['Prenom']?></span>
        </nav>
        <?php
        $statusMsg = '';
     
        // File upload path
        if (!empty($_FILES['uploaded_file'])) {
            /*$targetDir = "cv/";
            $fileName = basename($_FILES["uploaded_file"]["name"]);
            $targetFilePath = $targetDir . $fileName;
            $fileType = pathinfo($targetFilePath, PATHINFO_EXTENSION);*/
            $target_dir = "cv/";
            $newFileName = $target_dir .$_POST['id'].'.'. pathinfo($_FILES["uploaded_file"]["name"], PATHINFO_EXTENSION); //get the file extension and append it to the new file name
            $uploadOk = 1;
            $imageFileType = pathinfo($_FILES["uploaded_file"]["name"], PATHINFO_EXTENSION);
     
            if (isset($_POST["submit"]) && !empty($_FILES["uploaded_file"]["name"])) {
                // Allow certain file formats
                if (move_uploaded_file($_FILES["uploaded_file"]["tmp_name"], $newFileName)) {
                    // Insert image file name into database
                    $req2=$db->prepare("INSERT INTO CV (file_name, uploaded_on) VALUES(?, ?)");
                    $req2->execute(array($_POST['id'], date('Y-m-d H:i:s')));
                    if ($req2) {
                        $statusMsg = "<div class=\"alert alert-success text-center\" role=\"alert\"><b>Parfait ! </b>Votre fichier a bien été upload</div>";
                    } else {
                        $statusMsg = "<div class=\"alert alert-danger text-center\" role=\"alert\"><b>Erreur ! </b>Votre fichier n'a pas pu être upload</div>";
                    }
                    echo $statusMsg;
                }
            }
        }
    ?>
    	<main class="flex-fill justify-content-center align-items-center">
        <div class="container-fluid register align-self-center h-100">
                    <div class="jumbotron jumbotron-fluid align-self-center h-100 justify-content-center align-items-center text-center" style="width:100%;border-top-style:solid;border-top-color:grey;margin-top:2%;padding: 8%;border-bottom-style:solid;border-bottom-color:grey;">
                      <div class="form">
                        <form enctype="multipart/form-data" action="upload.php" method="POST">
                              <input type="hidden" name="id" value="<?php echo $_GET['id']; ?>">
                            <h1 class="display 4">Ajouter un CV pour cet utilisateur</h1><br/><br/>
                            <div class="custom-file" id="customFile" lang="fr">
                              <input type="file" name="uploaded_file" id="file" class="custom-file-input"/>
                      <label class="custom-file-label" for="exampleInputFile">
                         Choisir un fichier
                      </label>
                    </div><br/><br/>
                    <script>$('.custom-file-input').on('change', function() {
                     let fileName = $(this).val().split('\\').pop();
                     $(this).next('.custom-file-label').addClass("selected").html(fileName);
                  });</script><br/>
                        <input type="submit" class="btnRegister btn btn-dark btn-sm"  value="Ajouter à la base de donnée" name="submit"/>
                      </div>
                  </div>
                </form>
              </div>
    	</main>
    </body>
    <div class="footer">
          <div class="footer-copyright text-center py-3"><hr class="my-4" style="margin: auto;width: 40%;"></br><p class="text-muted">© <?php echo date("Y"); ?> Codé par Ethan</small></p></div>
    </div>
    </div>
    </html>
    Mes deux tables sont :
    - BDD :
    Qui contient toutes les données qui seront affichés dans le tableau tel que Nom, Prénom, Sexe etc des utilisateurs recensés dans la BDD.

    - CV:
    Qui contient 3 colonnes: id, file_name, uploaded_on, id_cv.

    J'aimerais faire en sorte de faire une colonne dans ma liste des utilisateurs ou je pourrais relier chaque id à un PDF upload.
    Comme si chaque utilisateur avait son CV propre à lui même si vous comprenez ce que je veux dire ?

    Actuellement je fais une technique du pauvre qui consiste à renommer le fichier en l'ID de l'utilisateur puis j'ai mis un bouton DL qui est propre à chaque utilisateur qui permet de me rediriger vers par exemple localhost/cv/66.docx
    et le .docx est rajouté à la main du coup si le fichier upload est au format PDF, cela ne fonctionnera pas ce qui n'est pas du tout optimisé..

    Merci

  11. #11
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 372
    Points : 5 734
    Points
    5 734
    Billets dans le blog
    1
    Par défaut
    J'ai regardé un peu ton code.

    Tu ne donnes pas tout, vu que nulle part, je n'ai vu de lien pour uploader un cv (donc on voit pas ton souci avec l'extension).

    Je ne vois pas le pb pour rajouter une colonne.

    A mon avis, dans une des tables, il faut utiliser une jointure pour faire le lien entre les users et leur cv...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

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

    1- id, id_cv, id utilisateur... ?

    Comment veux-tu qu'on te conseille ou corrige, alors qu'on ne sait pas trop qui correspond à quoi... ?
    Mets des nom de variables explicites.
    Sinon, c'est source de confusion.

    2- Quant à l'extension, il faut évidemment récupérer celle du fichier !


    De plus, tu ne devrais autoriser QUE les PDF.

  13. #13
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2019
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2019
    Messages : 83
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    J'ai regardé un peu ton code.

    Tu ne donnes pas tout, vu que nulle part, je n'ai vu de lien pour uploader un cv (donc on voit pas ton souci avec l'extension).

    Je ne vois pas le pb pour rajouter une colonne.

    A mon avis, dans une des tables, il faut utiliser une jointure pour faire le lien entre les users et leur cv...
    Je suis désolé je te montre un peu la page ou j'affiche tout les données pour que tu comprennes mieux la disposition des informations etc..

    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
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    <?php
    session_start(); // AU TOUT DEBUT du fichier
    // ----------------------
    // Connexion BDD
    include('include_db.php');
    // ----------------------
    if (empty($_SESSION['Prenom'])) {
        header('Location: index.php');
    }
    // ----------------------
    // REQUETE : Construction
    $sql_requete = "SELECT * FROM BDD";
    $sql_params = array();
    // ----------------------
    // Traitement : Recherche ?
    if (!empty($_POST['Search'])) {
        $search = str_replace(' ', '', $_POST['Search']);
        if (is_numeric($search)) { // nombres
            $sql_requete .= " WHERE Telephone LIKE ? OR CodePostale LIKE ?";
            $sql_params = array('%'. $search . '%' , '%' . $search . '%');
        } else { // chaine
            $sql_requete .= " WHERE Prenom LIKE ? OR Nom LIKE ? OR Ville LIKE ? OR Email LIKE ? OR Adresse LIKE ?";
            $sql_params = array( '%' . $search . '%' , '%' . $search . '%', '%' . $search . '%', '%' . $search . '%', '%' . $search . '%');
        }
    }
    // ----------------------
    // Supprimer des utilisateurs
    if (!empty($_POST["delete"])) {
        $ids = implode(",", (array)$_POST["delete"]);
        $final = $db->prepare("DELETE  FROM `BDD` WHERE Id IN ($ids)");
        $final->execute();
    }
    // ----------------------
    // Requête : TOUT
    $requete_total = $db->prepare($sql_requete);
    $requete_total->execute($sql_params);
    $elem_total = $requete_total->rowCount();
    // ----------------------
    // Pagination
    $elem_page = 10;
    $page_total = ceil($elem_total/ $elem_page);
    if (!empty($_GET['page']) && $_GET['page'] > 0) {
        $pageCourante = intval($_GET['page']);
    } else {
        $pageCourante = 1;
    }
    if ($pageCourante>$page_total) {
        $pageCourante = $page_total;
    }
    $depart_page = ($pageCourante-1) * $elem_page;
    // ----------------------
    // Requête : pour cette page
    $sql_requete_page = $sql_requete . " LIMIT ".$depart_page." , ".$elem_page." ";
    $requete_page = $db->prepare($sql_requete_page);
    $requete_page->execute($sql_params);
    // ----------------------
    ?>
    <!DOCTYPE html>
    <html>
    <head>
    	<title>PA - Liste des utilisateurs</title>
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
      <link rel="stylesheet" href="css/list.css">
      <meta name="viewport" content="width=device-width, initial-scale=1">
    	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
    	<link rel="icon" href="https://www.proactiveacademy.fr/wp-content/uploads/2018/01/cropped-favicon-32x32.png" sizes="32x32" />
      <link rel="stylesheet" href="//use.fontawesome.com/releases/v5.0.7/css/all.css">
    </head>
    <body class="d-flex flex-column justify-content-center">
      <div id="page-content">
        <nav class="navbar navbar-expand-md bg-dark navbar-dark">
          <a class="navbar-brand"><img src="http://www.proactiveacademy.fr/wp-content/uploads/2018/01/p-proactive-1.png" class="img-fluid" alt="Responsive image"></a>
          <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#collapsibleNavbar">
            <span class="navbar-toggler-icon"></span>
          </button>
          <div class="collapse navbar-collapse" id="collapsibleNavbar">
            <ul class="navbar-nav mx-auto">
              <li class="nav-item">
                <a class="nav-link" href="add.php"><i class="fas fa-user-plus"></i></a>
              </li>
              <li class="nav-item">
                <a class="nav-link" href="add_csv.php"><i class="fas fa-users"></i></a>
              </li>
              <li class="nav-item">
                <a class="nav-link" href="logout.php"><i class="fas fa-sign-out-alt"></i></a>
              </li>
            </ul>
          </div>
                  <span class="navbar-text right-align" style="text-align: right;">Bienvenue, <?php echo $_SESSION['Prenom']?></span>
        </nav>
    	</header>
      <?php
      if (!empty($_POST["delete"])) {
          echo "<div class=\"alert alert-success \"><center><strong>Parfait !</strong><class=\"alert-link\"> Les ou les utilisateurs ont bien été supprimés</a>.</center></div>";
      }
        ?>
    	<main class="flex-fill justify-content-center align-items-center">
            <div class="main"></br></br>
                <div class="container-fluid"><br/><br/>
                  <div class="options">
                    <div class="form-group has-search">
                      <span class="fa fa-search form-control-feedback"></span>
                    <form method="post" action="list.php">
                    <div class="searchbar"><input type="text" class="form-control" value="Rechercher un utilisateur" name="Search" onclick="this.value='';"></div></form>
                    <form method="post" action="list.php">
                      <input type="submit" class="btn btn-danger" style="width: 130px;" value="Supprimer" name="supprimer">
                    </div>
                  </div>
                <div class="row h-1">
                    <div class="col-sm-13 mx-auto">
                  <table class="table table-striped table-responsive table-hover" id="myTable">
                  <thead class="thead-dark" style="width:10%;">
                    <tr>
                        <th style="width:2%;" id="Choix"></th>
                        <th id="Nom" class="selection" data-tri="1" data-type="num">NOM</th>
                        <th id="Prenom">PRÉNOM</th>
                        <th id="Sexe">SEXE</th>
                        <th id="Telephone" >TELEPHONE</th>
                        <th id="E-mail">EMAIL</th>
                        <th id="Code-Postale" scope="col">CODE POSTALE</th>
                        <th id="Adresse" scope="col">ADRESSE</th>
                        <th id="Ville" scope="col">VILLE</th>
                        <th id="QPV" scope="col">QPV</th>
                        <th id="DernierDiplome" scope="col">DERNIER DIPLÔME</th>
                        <th id="Formationvise" scope="col">FORMATION VISEE</th>
                        <th id="Specialitee" scope="col">SPECIALITEE</th>
                        <th id="Niveau" scope="col">NIVEAU DE FORMATION VISE</th>
                        <th id="Metier" scope="col">METIER</th>
                        <th id="Contratvise" scope="col">CONTRAT VISE</th>
                        <th id="Rythme" scope="col">RYTHME D'ALTERNANCE</th>
                        <th id="Structure" scope="col">STRUCTURE</th>
                        <th id="CV" style="width:6%" scope="col">UPLOAD</th>
                        <th style="width:7%;" id="Edit" scope="col">MODIFICATION</th>
                        <th id="CV" style="width:5%" scope="col">CV</th>
     
                    </tr>
                  </thead>
                  <tbody>
    <?php		while ($donne = $requete_page->fetch()) { ?>
    				<tr>
    					<td class="w-25"><input type="checkbox" name="delete[]" value="<?php echo $donne['Id']; ?>" /></td>
    					<td class="w-25"><?php echo $donne['Nom']; ?></td>
    					<td class="w-25"><?php echo $donne['Prenom']; ?></td>
    					<td><?php echo $donne['Sexe']; ?></td>
    					<td><?php echo $donne['Telephone']; ?></td>
    					<td><?php echo $donne['Email']; ?></td>
    					<td><?php echo $donne['CodePostale']; ?></td>
              <td><?php echo $donne['Adresse']; ?></td>
              <td><?php echo $donne['Ville']; ?></td>
    					<td><?php echo $donne['QPV']; ?></td>
              <td><?php echo $donne['Dernierdiplome']; ?></td>
              <td><?php echo $donne['Formationvise']; ?></td>
              <td><?php echo $donne['Specialitee']; ?></td>
              <td><?php echo $donne['Niveau']; ?></td>
              <td><?php echo $donne['Metier']; ?></td>
              <td><?php echo $donne['Contratvise']; ?></td>
              <td><?php echo $donne['Rythme']; ?></td>
              <td><?php echo $donne['Structure']; ?></td>
              <td class="w-25"><a class="btnEdit btn btn-primary btn-sm" href="upload.php?id=<?php echo $donne['Id']; ?>">Upload</a></td>
    					<td><a class="btnEdit btn btn-primary btn-sm" href="edit.php?id=<?php echo $donne['Id']; ?>">Editer</a></td>
              <td><a class="btnEdit btn btn-primary btn-sm" href="cv/<?php echo $donne['Id']; echo ".docx";?>">DL</a></td>
    				</tr>
            <?php		} ?>
                          </tbody>
                          </table>
                          &nbsp;
     
                    <ul class="pagination justify-content-center">
                      <li class="page-item">
            <?php		for ($i=1; $i<=$page_total; $i++) { ?>
            			 <li class="page-item"><a class="page-link" href="list.php?page=<?php echo $i; ?>"><?php echo "$i"; ?></a>
            <?php		}?>
            </li>
            </ul>
    			  </div>
          </div>
          </div>
            </div>
          </div>
          </form>
        </div>
    	</main>
      <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
    </body>
    <div class="footer">
          <div class="footer-copyright text-center py-3"><hr class="my-4" style="margin: auto;width: 40%;"></br><p class="text-muted">© <?php echo date("Y"); ?> Codé par Ethan</small></p></div>
    </div>
    </div>
    </html>
    Et voici un screen de mes colonnes présente dans chaque table pour que vous compreniez un peu mieux :

    Nom : Capture d’écran 2019-09-10 à 10.57.30.png
Affichages : 259
Taille : 900,1 Ko

  14. #14
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2019
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2019
    Messages : 83
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Bonjour,

    id, id_cv, id utilisateur... ?

    Comment veux-tu qu'on te conseille ou corrige, alors qu'on ne sait pas trop qui correspond à quoi... ?
    Mets des nom de variables explicites.
    Sinon, c'est source de confusion.
    Oui on m'avait conseiller de rajouter une colonne id_cv pour les CV alors qu'il a déjà un id, je l'ai rajouter du coup..?

  15. #15
    Invité
    Invité(e)
    Par défaut
    Bah...
    Si toi-même tu ne sais pas ce que tu fais...

    [Édit] Sérieux ?
    • La table s'appelle "BDD" ?
    • Avec Id (avec majuscule) ?

    Et id_cv, d'après toi, ça se réfère à quoi ?

    Bref : ne t'étonne pas.....

  16. #16
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2019
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2019
    Messages : 83
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Bah...
    Si toi-même tu ne sais pas ce que tu fais...
    Ahah, si mais je voulais relier l'id_cv ou bien même l'id simple si la colonne l'id_cv est inutile à l'id de mon utilisateur enfête mais je n'ai aucune idée que comment faire malheureusement :/

  17. #17
    Invité
    Invité(e)
    Par défaut
    Déjà, change les noms !

    • Table BDD -> t_users
    • Id -> id_user

    • Table CV -> t_cvs
    • id -> id_cv
    • id_cv -> id_user

    Tu y verras plus clair.

    + Évite :
    • les majuscules
    • de mettre des accents,
    • et les fautes("CodePostale", "specialitee")

  18. #18
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2019
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2019
    Messages : 83
    Points : 13
    Points
    13
    Par défaut
    D'accord je fais ça d'ici 5/10 minutes, j'espère ne pas me tromper dans toutes les modifs à faire côté code du coup lol..
    Au niveau des erreurs c'était un collègue à moi qui avait commencer le projet et qui avait crée la BDD du coup j'ai préféré avancer pour faire en sorte que ce soit fonctionnel avant de modifier ses erreurs..

  19. #19
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 372
    Points : 5 734
    Points
    5 734
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par jreaux62 Voir le message

    + Évite :
    • et les fautes("CodePostale", "specialitee")
    T'as oublié "enfête" au lieu de "en fait"

    Extension = docx ; c'est l'extension des fichiers dans la bdd ? récemment, jreaux62 m'a montré comment convertir en php des fichiers docx en pdf...

    Pour les jointures : https://sql.sh/cours/jointures/inner-join
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  20. #20
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2019
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2019
    Messages : 83
    Points : 13
    Points
    13
    Par défaut
    Mince

    Bah enfête c'est qu'au moment de l'upload je récupère bien le fichier mais le renomme en l'id de l'utilisateur sans l'extension du coup pour faire mes tests j'ai rajouter en echo l'extension
    Je vais checker les jointures, du coup avec ça je peux dire que l'id de chaque CV upload = id GET de ma bdd ??

    Merci

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

Discussions similaires

  1. [Upload] upload fichier pdf sous Firefox 3.0.4
    Par Emilie012 dans le forum Langage
    Réponses: 9
    Dernier message: 17/11/2008, 22h50
  2. [Upload] uploader des pdf
    Par darontankian dans le forum Langage
    Réponses: 7
    Dernier message: 09/10/2008, 17h34
  3. [Upload] upload fichier pdf
    Par urbalk dans le forum Langage
    Réponses: 12
    Dernier message: 04/07/2008, 16h37
  4. [FPDF] Convertir des fichiers word uploadés en pdf
    Par swissmade dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 02/08/2007, 11h02
  5. [Word] Convertir des fichiers word uploadés en pdf
    Par philippe2 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 07/12/2006, 14h34

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