Petit up fil rouge:
j'ai intégré le code de nebjix dans une page test depuis mon csv et cela fonctionne:
voici maintenant la page complète du code comme vous le voyez il s'agit d'un formulaire avec différentes étapes. J'essaye de décortiquer le code avec des commentaires, il est possible que certains ne soient pas bons...:
<?php
use \PFBC\Form;
use \PFBC\Element;
if(isConnected()){
include(CHEMIN_LIB."PFBC/Form.php");
spl_autoload_register(function($classe) {
include CHEMIN_MODELE.$classe.".php";
});
//On teste si dans l'url, il y à bien step et que dataform existe
if(isset($_GET'step']) && isset($_SESSION'datasForm'])) {
$etapeCourante = $_GET'step'];
//Appel du manager pour les libelles :
$manager = new XmlManager(CHEMIN_XML);
//On regarde l'etape :
switch($etapeCourante){
//Si l'etape est la première, on redirige vers index.php?ajoutBateau
case 1: header("Location: index.php?action=ajoutBateau");
break;
case 2:
//On teste si l'etape une est faite, sinon on redirige vers la première etape :
if(!isset($_SESSION'datasForm']"info_annonce"])) {
header("location: index.php?action=ajoutBateau");
}else {
//Validation de la deuxième étape (dimensions) :
if(isset($_POST"dimensions"])){
if(FORM::isValid("dimensions")){
$_SESSION"datasForm"]"dimensions"] = $_POST;
header("location: index.php?action=ajoutBateau&step=3");
}else {
header("location: index.php?action=ajoutBateau&step=2");
}
}else {
//Formulaire pour les dimensions :----------------------------------------------------------------------------------
$formDimensions = new Form("dimensions");
$formDimensions->configure(array("prevent" => array("bootstrap", "jQuery"), "action" =>"index.php?action=ajoutBateau&step=2"));
$formDimensions->addElement(new Element\HTML("<legend>Etape 2 -Dimensions du bateau :</legend>"));
$formDimensions->addElement(new Element\Number("Largeur :", "largeur", array("min" => "0",
"step" => "any",
"placeholder" => "En mètres",
"required" => 1)));
$formDimensions->addElement(new Element\Number("Longueur :", "longueur", array("min" => "0",
"step" => "any",
"placeholder" => "En mètres",
"required" => 1)));
$formDimensions->addElement(new Element\Button('Valider et passer a la prochaine etape',"", array("class" => "btn-success btn-block",
"name" => "dimensions")));
$formDimensions->render();
}
}
break;
case 3:
//On teste si l'etape deux à bien été faite, sinon on redirige :
if(!isset($_SESSION'datasForm']"dimensions"])) {
header("location: index.php?action=ajoutBateau&step=2");
}else{
if(isset($_POST"construction"])){
if(FORM::isValid("construction")){
$_SESSION"datasForm"]"construction"] = $_POST;
header("location: index.php?action=ajoutBateau&step=4");
}else {
header("location: index.php?action=ajoutBateau&step=3");
}
}else {
//Formulaire pour les infos constructions :-------------------------------------------------------------------------
$formConstruction = new Form("construction");
$formConstruction->configure(array("prevent" => array("bootstrap", "jQuery"), "action" =>"index.php?action=ajoutBateau&step=3"));
$formConstruction->addElement(new Element\HTML("<legend>Etape 3 - Informations construction du bateau :</legend>"));
$formConstruction->addElement(new Element\Number("Année de fabrication :", "annee", array("min" => "1900")));
$formConstruction->addElement(new Element\Textbox("Catégorie :", "categorie", array("required" => 1)));
$formConstruction->addElement(new Element\Textbox("Sous catégorie :", "sous_categorie"));
$formConstruction->addElement(new Element\Button('Valider et passer a la prochaine etape',"", array("class" => "btn-success btn-block",
"name" => "construction")));
$formConstruction->render();
}
break;
}
case 4:
//On verifie que l'etape 3 à été faite et que l'on a bien coché "le bateau a un moteur"
if(!isset($_SESSION'datasForm']"construction"])) {
header("location: index.php?action=ajoutBateau&step=3");
}else{
if(isset($_POST"moteur"])){
if(FORM::isValid("moteur")){
$_SESSION"datasForm"]"moteur"] = $_POST;
header("location: index.php?action=ajoutBateau&step=5");
}else {
header("location: index.php?action=ajoutBateau&step=4");
}
}else {
//Formulaire pour le moteur :---------------------------------------------------------------------------------------
$formMoteur = new Form("moteur");
$formMoteur->configure(array("prevent" => array("bootstrap", "jQuery"), "action" =>"index.php?action=ajoutBateau&step=4"));
$formMoteur->addElement(new Element\HTML("<legend>Etape 4 - Moteur :</legend>"));
$formMoteur->addElement(new Element\Number("Nombre :", "nombre", array("min" => "0", "required" => 1)));
$formMoteur->addElement(new Element\Textbox("Essence :", "fuel", array("required" => 1)));
$formMoteur->addElement(new Element\Number("Nombre d'heures :", "heures", array("min" => "0")));
$formMoteur->addElement(new Element\Number("Puissance :", "puissance", array("min" => "0", "placeholder" => "En Chevaux", "required" => 1)));
$formMoteur->addElement(new Element\Textbox("Marque :", "marque_moteur", array("required" => 1)));
$formMoteur->addElement(new Element\Textbox("Propulsion :", "propulsion"));
$formMoteur->addElement(new Element\Textarea("Infos :", "info"));
$formMoteur->addElement(new Element\Button('Valider et passer a la prochaine etape',"", array("class" => "btn-success btn-block",
"name" => "moteur")));
$formMoteur->render();
}
}
break;
case 5:
if(!isset($_SESSION'datasForm']"moteur"])) {
header("location: index.php?action=ajoutBateau&step=3");
}else{
//Validation de la cinquième étape (accomodations) :
if(isset($_POST"accomodations"])){
if(FORM::isValid("accomodations")){
$_SESSION"datasForm"]"accomodations"] = $_POST;
header("location: index.php?action=ajoutBateau&step=6");
}else {
header("location: index.php?action=ajoutBateau&step=5");
}
}else {
//Formulaire pour les accomodations :-------------------------------------------------------------------------------
$formAccomodations = new Form("accomodations");
$formAccomodations->configure(array("prevent" => array("bootstrap", "jQuery"), "action" =>"index.php?action=ajoutBateau&step=5"));
$formAccomodations->addElement(new Element\HTML("<legend>Etape 5 - Accomodations du bateau :</legend>"));
$formAccomodations->addElement(new Element\Number("Nombre de cabines :", "nombre_cabine", array("min" => "0")));
$formAccomodations->addElement(new Element\Number("Nombre de couchette :", "nombre_couchette", array("min" => "0")));
$formAccomodations->addElement(new Element\Number("Nombre de salle de bain :", "nombre_sdb", array("min" => "0")));
$formAccomodations->addElement(new Element\Button('Valider et passer a la prochaine etape',"", array("class" => "btn-success btn-block",
"name" => "accomodations")));
$formAccomodations->render();
}
}
break;
case 6:
if(!isset($_SESSION'datasForm']"accomodations"])){
header("location: index.php?action=ajoutBateau&step=5");
}else {
//Validation de la sixième étape (equipement Electroniques) :
if(isset($_POST"electronique"])){
if(FORM::isValid("electronique")){
if(isset($_POST"electroniques"])) {
$_SESSION"datasForm"]"electronique"] = $_POST;
}else {
$_SESSION"datasForm"]"electronique"] = "";
}
header("location: index.php?action=ajoutBateau&step=7");
}else {
header("location: index.php?action=ajoutBateau&step=6");
}
}else {
//Formulaire pour les equipements electroniques :-------------------------------------------------------------------
$formEquipElec = new Form("electronique");
$formEquipElec->configure(array("prevent" => array("bootstrap", "jQuery"), "action" =>"index.php?action=ajoutBateau&step=6"));
$formEquipElec->addElement(new Element\HTML("<legend>Etape 6 - Equipement electronique du bateau :</legend>"));
$formEquipElec->addElement(new Element\Checkbox("Equipements electroniques :", "electroniques", $manager->getLibelle("electronique")));
$formEquipElec->addElement(new Element\Button('Valider et passer a la prochaine etape',"", array("class" => "btn-success btn-block",
"name" => "electronique")));
$formEquipElec->render();
}
}
break;
case 7:
if(!isset($_SESSION'datasForm']"electronique"])){
header("location: index.php?action=ajoutBateau&step=6");
}else {
//Validation de la sixième étape (equipement Electroniques) :
if(isset($_POST"equipement"])){
if(FORM::isValid("equipement")){
if(isset($_POST"equipements"])) {
$_SESSION"datasForm"]"equipement"] = $_POST;
}else {
$_SESSION"datasForm"]"equipement"] = "";
}
header("location: index.php?action=ajoutBateau&step=8");
}else {
header("location: index.php?action=ajoutBateau&step=7");
}
}else {
//Formulaire pour les equipements :---------------------------------------------------------------------------------
$formEquipements = new Form("equipement");
$formEquipements->configure(array("prevent" => array("bootstrap", "jQuery"), "action" =>"index.php?action=ajoutBateau&step=7"));
$formEquipements->addElement(new Element\HTML("<legend>Etape 7 - Equipement du bateau </legend>"));
$formEquipements->addElement(new Element\Checkbox("Equipements :", "equipements", $manager->getLibelle("equipement")));
$formEquipements->addElement(new Element\Button('Valider et passer a la prochaine etape',"", array("class" => "btn-success btn-block",
"name" => "equipement")));
$formEquipements->render();
}
}
break;
case 8:
if(!isset($_SESSION'datasForm']"equipement"])){
header("location: index.php?action=ajoutBateau&step=7");
}else {
var_dump(isset($_FILES"images"]));
if(isset($_FILES"images"])){
foreach($_FILES"images"]"error"] as $erreure){
if($erreure == 0){
$noError = true;
}else {
$noError = false;
$error = $erreure;
break;
}
}
if($noError){
$ref = $manager->getLastRef() + 1;
//On créé le dossier de ref $ref :
mkdir(CHEMIN_UPLOADED_IMAGES.$ref);
$iNames = 0;
foreach($_FILES"images"]"name"] as $uneImage){
$tmpName = $_FILES"images"]"tmp_name"]$iNames];
$name = preg_replace("# #", "-", strtolower($_SESSION'datasForm']"info_annonce"]"marque"])).preg_replace("# #", "-", strtolower($_SESSION'datasForm']"info_annonce"]"modele"])).$iNames.'.jpg';
move_uploaded_file($tmpName, CHEMIN_UPLOADED_IMAGES.$ref."/".$name);
$_SESSION"datasForm"]"images"]$iNames] = CHEMIN_UPLOADED_IMAGES.$ref."/".$name;
$iNames++;
}
header("location: index.php?action=ajoutBateau&step=9");
}else {
if($erreure != 4){
include(CHEMIN_VUE."errors/files_error.php");
include(CHEMIN_VUE."forms/formulaire_images.php");
}else {
header("location: index.php?action=ajoutBateau&step=9");
}
}
}else {
include(CHEMIN_VUE."forms/formulaire_images.php");
}
}
break;
case "9" :
if(!isset($_POST"validerAnnonce"])) {
$infoAnnonce = $_SESSION'datasForm']"info_annonce"];
$dimensions = $_SESSION'datasForm']"dimensions"];
$construction = $_SESSION'datasForm']"construction"];
$moteur = isset($_SESSION'datasForm']"moteur"]) ? $_SESSION'datasForm']"moteur"] : null;
$accomodations = $_SESSION'datasForm']"accomodations"];
$electronique = !empty($_SESSION'datasForm']"electronique"]"electroniques"]) ? $_SESSION'datasForm']"electronique"] : null ;
$equipement = !empty($_SESSION'datasForm']"equipement"]"equipements"]) ? $_SESSION'datasForm']"equipement"] : null ;
$images = isset($_SESSION'datasForm']"images"])? $_SESSION'datasForm']"images"] : null ;
include(CHEMIN_VUE.'previsualisation_bateau.php');
}else {
//On affiche la notif comme quoi l'annonce a bien été publiée
include(CHEMIN_VUE."notifs/bateau_created.html");
$manager->createAnnonce($_SESSION"datasForm"], $manager->getLastRef() + 1);
//On supprime la variable de session
unset($_SESSION'datasForm']);
}
break;
default:header("Location: index.php?action=ajoutBateau");
break;
}
}
//S'il n'y a pas le parametre step on affiche la première etape (Info sur l'annonce)
else {
//Si le formulaire à été posté :
if(isset($_POST'info_annonce'])){
if(FORM::isValid("info_annonce")) {
$_SESSION"datasForm"]"info_annonce"] = $_POST;
header("location: index.php?action=ajoutBateau&step=2");
}else {
header("location: index.php?action=ajoutBateau");
}
}else {
//Formulaire d'info sur les annonces :------------------------------------------------------------------------------
$formInfoAnnonce = new Form("info_annonce");
$formInfoAnnonce->configure(array("prevent" => array("bootstrap", "jQuery"), "action" => "index.php?action=ajoutBateau"));
$formInfoAnnonce->addElement(new Element\HTML("<legend>Etape 1 - Informations de l'annonce : </legend>"));
$formInfoAnnonce->addElement(new Element\Textbox("Type de bateau :", "type", array("placeholder" => "Bateau moteur, voilier, pneumatique,...",
"required" => 1)));
$formInfoAnnonce->addElement(new Element\Number("Prix du bateau :", "prix_public", array("min" => "0",
"placeholder" => "En euros",
"required" => 1)));
$opt = array("marque 1", "marque 2", "marque 3");
//$opti = array( $marques );
$formInfoAnnonce->addElement(new Element\Radio("Tva :", "tva", array("ht" => "Hors Taxes", "ttc" => "Toutes taxes comprises") , array("required" => 1)));
//debut code CSV
if ($handle = fopen("marques.csv", "a+")); {
// avec un fichier CSV tel que
/*
marque1;
marque2;
marque3;
...
*/
$marques = array();
while ($data = fgetcsv($handle, 0, ';')) {
$champs = count($data);
for($i = 0; $i < $champs; $i++) {
if (isset($data$i]) && $data$i] != "") {
$marques] = $data$i];
}
}
}
fclose($handle);
print_r($marques); // doit retourner "Array ( [0] => marque1 [1] => marque2 [2] => marque3 ... ) "
}
$formInfoAnnonce->addElement(new Element\Select("Marques CSV :", "test", $marques));
// Fin code CSV
$formInfoAnnonce->addElement(new Element\Textarea("Description du bateau :", "descriptifs"));
$formInfoAnnonce->addElement(new Element\Textbox("Marque du bateau :", "marque", array("required" => 1)));
$formInfoAnnonce->addElement(new Element\Textbox("Modèle du bateau :", "modele", array("required" => 1)));
$formInfoAnnonce->addElement(new Element\Textbox("Lieu du bateau :", "visibilite"));
// Test de l'ajout d'un élément SELECT
$formInfoAnnonce->addElement(new Element\Select("Marque TEST :", "marque", array ("option 1","option 2","option 4","option 5","option 6","option 7","option 8","option 9"), array("class" => "btn-success btn-block",
"name" => "info_annonce")));
$formInfoAnnonce->addElement(new Element\YesNo("Vendu avec la place ?", "venduavecplaceport", array("required" => 1) ));
$formInfoAnnonce->addElement(new Element\Button('Valider et passer a la prochaine etape',"", array("class" => "btn-success btn-block",
"name" => "info_annonce")));
$formInfoAnnonce->render();
}
}
}else {
//Si non connecté, on affiche le formulaire de connexion :
include CHEMIN_VUE."forms/formulaire_connexion.html";
}
Cependant je dois avoir mal fait quelque chose car ici ce même code ne trouve plus rien à afficher du fichier csv. cela donne en résultat:
Le code en question se trouve dans les lignes 300, je test un peu plus bas l'ajout d'un élément select en remplissant manuellement, les options cela donne.
Voila je vais essayer de nouveau de trouver le pourquoi du comment. Et par la même occasion essayer de voir si il n'y a pas un moyen de mettre en place des bases de données car j'ai plusieurs modifications de ce type à faire.