Bonjour,

Je ne suis pas certain de devoir poster cela ici ou dans la section PDO...

Je cherche à "contrôler" une insertion dans la base de donnée -> J'ai une table compétence_personnel dans laquelle j'insert l'id_Personnel, l'id_Competence, le niveau, et si le salarié en question est en formation ou non. Jusque là ok. - Le soucis c'est que j'aimerais qu'il ne soit pas possible d'insérer une deuxième fois la même compétence pour le même salarié. Exemple : J'insert l'id_Personnel 119, que j'associe à l'id_Competence 19, je refais la même manipulation, c'est-à-dire je ré-insert les mêmes données sauf que je souhaite retourner une erreur du style "compétence déjà acquise / pas possible". Je bloque à ce niveau, j'ai testé plusieurs choses différentes.

l'id_Competence ($idComp), et l'id_Personnel($idSal1) sont "générés" dans un input type="hidden" avec de l'ajax. Apparemment quand je var_dump($request['id_Competence']) et var_dump($request['Personnel']) ça me retourne "null".

Mon code atm :

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
 
 
if(isset($_POST['idSal1']) && isset($_POST['titreComp']) && isset($_POST['niveau']) && isset($_POST['formation']) && isset($_POST['nomSal']) && isset($_POST['idComp'])) {
 
    $idSal1 = htmlspecialchars($_POST['idSal1']);
    $idComp = htmlspecialchars($_POST['idComp']);
    $niveau = htmlspecialchars($_POST['niveau']);
    $formation = htmlspecialchars($_POST['formation']);
    $test = false;
    $maRequete = $db->query("SELECT * FROM competence_personnel WHERE id_Personnel = '".$idSal1."'");
 
    if(!empty($_POST['idSal1']) && !empty($_POST['idComp']) && $_POST['niveau'] != "" && $_POST['formation'] != "" ) {
 
        while($request = $maRequete->fetch() && $test == false) {
 
            if($request['id_Competence'] != $idComp && $request['id_Personnel'] != $idSal1) {
                var_dump($request['id_Competence']);
                var_dump($idComp);
                $test = true;
                echo '4';
            }
        }
 
        if($test == true) {
 
            $insert = $db->prepare('INSERT INTO competence_personnel (id_Personnel, id_Competence, niveau, formation) 
                                        VALUES(:id_Personnel, :id_Competence, :niveau, :formation)');
            $insert->execute(array(
                'id_Personnel'=>$idSal1,
                'id_Competence'=>$idComp,
                'niveau'=>$niveau,
                'formation'=>$formation
                ));
            echo "<script>alert(\"Vos données ont été enregistrées\")</script>";   
        }
 
        else {
 
            echo "<script>alert(\"Compétence déjà acquise\")</script>";    
        }
    }
 
    else {
 
        echo "<script>alert(\"Le formulaire n'est pas complet\")</script>";    
    }
}
 
 
?>
Si quelqu'un a une idée pour me mettre sur la voie :-)

Merci!