Bonjour.
Je rencontre un problème lors de l'insertion des données dans des tables liées.
En effet, j'ai fait un script php pour insérer directement des données (en csv) à partir de mon bureau, il fonctionne.
Cependant, dès que je mets la relation entre les tables, celles qui reçoivent les clés étrangères refusent des données que j'insère via mon script php. Que peux-je faire?
Dès que j'enlève la jointure( les clés étrangères), les données y seront insérées sans soucis.
J'ai essayé d'insérer les données avant de faire les jointures, elles sont insérées, mais la jointure ne marche pas sur les tables qu'ont déjà de données.

Aidez moi!
Envoi du code, que l'on puisse jeter un coup d’œil sur ton problème ?
Merci Tintin75,
Ci-dessous, le code pour l'insertion de données dans les tables, j'utilise le même script pour toutes les tables de la base. Je modifie juste le nom et les variables et ça marche, mais une fois les clés étrangères sont insérées dans les tables, le script ne marchera plus sur les tables qui reçoivent les clés.

Par ailleurs, j'ai une autre variable appélée" premium boolean('true',false') dans table "personnel" dans ma base de donnée"disu", je ne sais pas comment je peux l'intégrer dans mon script lors de l'insertion et qu'il renvoie "true" si le personnel est "premium" false sinon.

Un autre problème,lors de l'insertion des données, le script insère aussi l'entête des colonnes du fichier CSV, ces ces entetes sont pareils que les noms des attributs de la table(je ne veux pas les dupliquer).
Alors, je veux inserer les données sans tenir compte de la première ligne qui correspond(les entêtes du fichier CSV).

NB: le php et html sont tous dans un même fichier appelé"CsvPeronInfos.php"

Désolé, je suis un débutant, le code n'est pas beau du tout, pour le moment je cherche ce qui fonctionne. Après l'amélioration viendra au fil du temps.
Merci

--------------------------------------------------------------------------------
<?php
$conn = mysqli_connect("localhost", "root", "root", "disu");


if (isset($_POST["import"])) {

$fileName = $_FILES["file"]["tmp_name"];


if ($_FILES["file"]["size"] > 0) {

$file = fopen($fileName, "a+");
while (($data = fgetcsv($file, 1000, ",")) !== FALSE)
{

$i = 0;

foreach($data as $i => $valeur){

echo $i[0].$i[1].'<br />';
$values=explode(';', $valeur,9);
$nom=$values[0];
$prenom=$values[1];
$mail=$values[2];
$entite=$values[3];
$cuid=$values[4];
$tel_fixe=$values[5];
$tel_mobile=$values[6];
$cuid_md=$values[7];
$mail_md=$values[8];




$sqlInsert = "INSERT into personnel(nom,prenom,mail,entite,cuid,tel_fixe,tel_mobile,cuid_md,mail_md)
values ('" . $nom . "','" . $prenom. "','" .$mail . "','" . $entite . "','" . $cuid. "','" . $tel_fixe . "','" . $tel_mobile . "','" . $cuid_md . "','" . $mail_md . "')";

$result = mysqli_query($conn, $sqlInsert);
if (!empty($result)) {

$type = "success";
$message = "Les données CSV sont intégrées à la base avec succès!";
} else {
$type = "error";
$message = "Problem in Importing CSV Data";
}


}



}

fclose($file);
var_dump($file);
}
}
?>
--------------------------------------------------------------------------------------------------------
<!DOCTYPE html>
<html>

<head>
<!-- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -->

<script src="jquery-3.2.1.min.js"></script>

<style>
body {
font-family: Arial;
width: 550px;
}

.outer-scontainer {
background: #F0F0F0;
border: #e0dfdf 1px solid;
padding: 20px;
border-radius: 2px;
}

.input-row {
margin-top: 0px;
margin-bottom: 20px;
}

.btn-submit {
background: #333;
border: #1d1d1d 1px solid;
color: #f0f0f0;
font-size: 0.9em;
width: 100px;
border-radius: 2px;
cursor: pointer;
}

.outer-scontainer table {
border-collapse: collapse;
width: 100%;
}

.outer-scontainer th {
border: 1px solid #dddddd;
padding: 8px;
text-align: left;
}

.outer-scontainer td {
border: 1px solid #dddddd;
padding: 8px;
text-align: left;
}

#response {
padding: 10px;
margin-bottom: 10px;
border-radius: 2px;
display:none;
}

.success {
background: #c7efd9;
border: #bbe2cd 1px solid;
}

.error {
background: #fbcfcf;
border: #f3c6c7 1px solid;
}

div#response.display-block {
display: block;
}
</style>
<script type="text/javascript">
$(document).ready(function() {
$("#frmCSVImport").on("submit", function () {

$("#response").attr("class", "");
$("#response").html("");
var fileType = ".csv";
var regex = new RegExp("([a-zA-Z0-9\s_\\.\-:])+(" + fileType + ")$");

if (!regex.test($("#file").val().toLowerCase())) {
$("#response").addClass("error");
$("#response").addClass("display-block");
$("#response").html("Invalid File. Upload : <b>" + fileType + "</b> Files.");
return false;
}
return true;
});
});
</script>
</head>

<body>
<h2>Importer un fichier CSV à ma base</h2>

<div id="response" class="<?php if(!empty($type)) { echo $type . " display-block"; } ?>"><?php if(!empty($message)) { echo $message; } ?></div>
<div class="outer-scontainer">
<div class="row">

<form class="form-horizontal" action="" method="post"
name="frmCSVImport" id="frmCSVImport" enctype="multipart/form-data">
<div class="input-row">
<label class="col-md-4 control-label">Selectionner le CSV
</label> <input type="file" name="file"
id="file" accept=".csv">
<button type="submit" id="submit" name="import"
class="btn-submit">Import</button>
<br />

</div>

</form>

</div>
<?php
/* where mail LIKE '%@orange%'*/
$sqlSelect = "SELECT * FROM personnel";
$result = mysqli_query($conn, $sqlSelect);

if (mysqli_num_rows($result) > 0) {
?>
<table id='TablePersonnel'>
<thead>
<tr>
<th>nom</th>
<th>prenom</th>
<th>mail</th>
<th>entite</th>
<th>cuid</th>
<th>tel_fixe</th>
<th>tel_mobile</th>
<th>cuid_md</th>
<th>mail_md</th>



</tr>
</thead>
<?php

while ($row = mysqli_fetch_array($result)) {
?>

<tbody>
<tr>

<td><?php echo $row['nom']; ?></td>
<td><?php echo $row['prenom']; ?></td>
<td><?php echo $row['mail']; ?></td>
<td><?php echo $row['entite']; ?></td>
<td><?php echo $row['cuid']; ?></td>
<td><?php echo $row['tel_fixe']; ?></td>
<td><?php echo $row['tel_mobile']; ?></td>
<td><?php echo $row['cuid_md']; ?></td>
<td><?php echo $row['mail_md']; ?></td>

</tr>
<?php
}
?>
</tbody>
</table>
<?php } ?>
</div>

</body>

</html>
----------------------------
Modifié par nkm (16 Jul 2018 - 18:07)
Hello nkm !

Même remarque que dans ton précédent post : utilise les balises pour mettre en forme ton code. C'est bien plus agréable à lire ensuite.