par
Luckylestidien » 14 juin 2018, 22:43
Bonsoir,
Cette page PHP me permet d'importer une nouvelle promotion d'étudiants dans deux tables distinctes (etudiant et promotion), tout marche parfaitement, mais il arrive que le foreach va 1 trop loin, j'ai donc une ligne vide qui s'affiche dans ma base de donnée avec un numéro étudiant puisque lui est auto-incrémenté. J'ai cherché pendant un bon moment sur le web, je mesuis pas mal creusé la tête à créer un compteur... Mais je suis arrivé à rien. Je voudrais donc savoir si certains d'entre vous ont déjà eu ce problème et pour m'aider à la régler?
Merci d'avance
?php
include('./structure/header.php');
echo "<title> Enseignant </title>";
include('./menu.php');
include('./script/verifenseignant.php')
?>
<div class="col-md-4 col-lg-4 offset-md-4 offset-lg-4">
</br></br>
</br></br>
<?php
if (isset($_FILES['file'])) {
try {
$pdo = new PDO('mysql:host=localhost;dbname=stidwakj_Stage;charset=utf8','stidwakj_Root', 'RootRootRoot', [PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'']);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (Exception $e) {
die('Erreur : '.$e->getMessage());
}
//UPLOAD DU FICHIER CSV, vérification et insertion en BASE
if (isset($_FILES["file"]["type"]) != "application/vnd.ms-excel") {
die("Ce n'est pas un fichier de type .csv");
} elseif (is_uploaded_file($_FILES['file']['tmp_name'])) {
$req = $pdo->prepare('INSERT INTO ETUDIANT (numetudiant, login, nom, prenom, ddn, mail, telephone) VALUES(?, ?, ?, ?, ?, ?, ?)');
$file = new SplFileObject($_FILES['file']['tmp_name']);
$file->setFlags(SplFileObject::READ_CSV | SplFileObject::SKIP_EMPTY);
$file->setCsvControl(';', '"', '"');
foreach ($file as $row) {
$prenom=substr($row[1],0,1);
$nom=substr($row[0],0,5);
$login1=$prenom.''.$nom;
include ('./script/connexion.php');
$requete = "SELECT max(numetudiant) maxi FROM ETUDIANT" ;
$result = $connexion -> query($requete);
echo $requete;
$ligne = $result -> fetch();
$req->execute([$row[0], $login1, $row[0], $row[1], $row[2], $row[3], $row[4]]);
include ('./script/connexion.php');
$requete = "INSERT INTO PROMOTION(annee, numetudiant) VALUES('".$_POST['anne']."','".$numetu."')";
echo $requete;
$sql = $connexion -> exec($requete);
}
$req->closeCursor();
echo "La promotion des nouveaux étudiants a bien été ajouté!";
} else {
echo "ATTENTION!!La promotion des nouveaux étudiants n'a pas été ajouté!";
}
}
?>
<!--Insertion balise form qui permet de récuéper le chemin du fichier qui contient la nouvelle promotion d'étudiants-->
<form enctype="multipart/form-data" action="" method="POST">
<div class="form-group">
<input name="file" type="file" />
<!-- Bouton qui envoye le fichier dans la base de donnée-->
<p><input type="submit" value="Envoyez le fichier"/></p>
<!--Balise input qui permet de récupérer l'année choisie précédement en cachant la valeur-->
<input type='hidden' name="anne" type="file" value ='<?php echo $annee=substr($_POST['annee'],0,4); ?>'/>
</div>
</form>
<?php include('./structure/footer.php'); ?>
Bonsoir,
Cette page PHP me permet d'importer une nouvelle promotion d'étudiants dans deux tables distinctes (etudiant et promotion), tout marche parfaitement, mais il arrive que le foreach va 1 trop loin, j'ai donc une ligne vide qui s'affiche dans ma base de donnée avec un numéro étudiant puisque lui est auto-incrémenté. J'ai cherché pendant un bon moment sur le web, je mesuis pas mal creusé la tête à créer un compteur... Mais je suis arrivé à rien. Je voudrais donc savoir si certains d'entre vous ont déjà eu ce problème et pour m'aider à la régler?
Merci d'avance
[PHP]?php
include('./structure/header.php');
echo "<title> Enseignant </title>";
include('./menu.php');
include('./script/verifenseignant.php')
?>
<div class="col-md-4 col-lg-4 offset-md-4 offset-lg-4">
</br></br>
</br></br>
<?php
if (isset($_FILES['file'])) {
try {
$pdo = new PDO('mysql:host=localhost;dbname=stidwakj_Stage;charset=utf8','stidwakj_Root', 'RootRootRoot', [PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'']);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (Exception $e) {
die('Erreur : '.$e->getMessage());
}
//UPLOAD DU FICHIER CSV, vérification et insertion en BASE
if (isset($_FILES["file"]["type"]) != "application/vnd.ms-excel") {
die("Ce n'est pas un fichier de type .csv");
} elseif (is_uploaded_file($_FILES['file']['tmp_name'])) {
$req = $pdo->prepare('INSERT INTO ETUDIANT (numetudiant, login, nom, prenom, ddn, mail, telephone) VALUES(?, ?, ?, ?, ?, ?, ?)');
$file = new SplFileObject($_FILES['file']['tmp_name']);
$file->setFlags(SplFileObject::READ_CSV | SplFileObject::SKIP_EMPTY);
$file->setCsvControl(';', '"', '"');
foreach ($file as $row) {
$prenom=substr($row[1],0,1);
$nom=substr($row[0],0,5);
$login1=$prenom.''.$nom;
include ('./script/connexion.php');
$requete = "SELECT max(numetudiant) maxi FROM ETUDIANT" ;
$result = $connexion -> query($requete);
echo $requete;
$ligne = $result -> fetch();
$req->execute([$row[0], $login1, $row[0], $row[1], $row[2], $row[3], $row[4]]);
include ('./script/connexion.php');
$requete = "INSERT INTO PROMOTION(annee, numetudiant) VALUES('".$_POST['anne']."','".$numetu."')";
echo $requete;
$sql = $connexion -> exec($requete);
}
$req->closeCursor();
echo "La promotion des nouveaux étudiants a bien été ajouté!";
} else {
echo "ATTENTION!!La promotion des nouveaux étudiants n'a pas été ajouté!";
}
}
?>
<!--Insertion balise form qui permet de récuéper le chemin du fichier qui contient la nouvelle promotion d'étudiants-->
<form enctype="multipart/form-data" action="" method="POST">
<div class="form-group">
<input name="file" type="file" />
<!-- Bouton qui envoye le fichier dans la base de donnée-->
<p><input type="submit" value="Envoyez le fichier"/></p>
<!--Balise input qui permet de récupérer l'année choisie précédement en cachant la valeur-->
<input type='hidden' name="anne" type="file" value ='<?php echo $annee=substr($_POST['annee'],0,4); ?>'/>
</div>
</form>
<?php include('./structure/footer.php'); ?>[/PHP]