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 :

Gérer un questionnaire csv avec une question par page [PHP 5.4]


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 8
    Points : 6
    Points
    6
    Par défaut Gérer un questionnaire csv avec une question par page
    Bonjour,

    Je développe une application de contrôle de production. Je dispose de plusieurs checklist en fichiers csv pour contrôler des pièces. Chaque fichier csv est constitué par des lignes de contrôle à effectuer. Le nombre de contrôle est variable et évolutif.

    Je souhaite charger chaque ligne dans un tableau pour en faire un formulaire html et récupérer la réponse du type checkbox, txt, file... J'ai créé l'appli qui charge tout le fichier de question mais pour plus de clarté je souhaite afficher les questions une par une (une question par page) et ajouter un timer pour passer à la question suivante.

    J'ai beau tourner le problème dans tous les sens je ne parviens pas au résultat souhaité.
    Voici le code que j'ai actuellement, le problème c'est que j'ai bien une question par tableau mais tout sort sur la meme page.
    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
     
    <?php
    if (($handle = fopen("Gammes/test_HT.csv", "r")) !== FALSE) {
        $data = fgetcsv($handle, 1000, ";");// lance le 1er fgetcsv pour ne pas afficher les titres de colonne par la suite
        while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
            $num = count($data);
            ?>
            <form action="resultats.php" method="POST" enctype="multipart/form-data">
                <?php
                echo "<b>Sequence essai Test HT</b>";
                echo "<table border='1'>\n";
                        echo "<td><b>Num</b></td><td><b>Controle</b></td><td><b>Comment</b></td><td><b>Critère</b></td><td><b>Type réponse</b></td><td><b>Réponse</b></td>";
                        echo "<tr>\n";
                        for ($c=0; $c < $num; $c++) {
                            echo "<td>".$data[$c]."</td>\n";
                        }
                        echo "</tr>\n";
                echo "</table>";
                ?>
                <br/>
                <input type="submit" value="Suivant">
            </form>
            <?php
        }
        fclose($handle);
    }
    ?>

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Utiliser un CSV va amener à faire du bricolage, soit en relisant du début à chaque question, soit en le stockant en tableau.

    Une base de donnée serait une approche plus sérieuse.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 8
    Points : 6
    Points
    6
    Par défaut Maintenance
    J'avais envisagé cette solution mais la base de donnée est plus difficile à mettre à jour en cas de changement des questions. Mais si il le faut j'y passerai. Cependant comment le BD va t'elle permettre de passer en une question par page?

  4. #4
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    J'ai écouté votre conseil et supprimé mes fichiers pour tout stocker en BDD. Les requêtes sont effectivement plus facile à gérer pour charger les questions une par une(moins de bricolage c'est vrai) et enregistrer les réponses.

    Voici le code qui traite les réponse et passe à la question suivante :

    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
    <?php
    session_start();
    require_once('include/configuration.php');
    require_once('include/fonctions.inc.php');
    $page=page_setup();
    echo $page;
    ?>
    <h1>Resultats</h1>
    <?php
     
    echo "N° OF : ".$_SESSION['Machof']."<br/>";
    echo "La gamme traitée est : ".$_SESSION['gamme_en_cours']."<br/>";
     
    //Test des variables passees en POST
    if (isset($_POST) && !empty($_POST)) 
    {
    	$tabRep=array_values($_POST);// pour obtenir les valeurs du POST dans un tableau indexé, on a qu'une valeur en $tabRep[0]
    	$sql="INSERT INTO resultats (id, num_of, une_sequence, question, reponse) ";
    	$sql.="VALUES ('','".$_SESSION['Machof']."','".$_SESSION['gamme_en_cours']."','".$_SESSION['question_en_cours']."','$tabRep[0]')";
    	$req= mysql_query($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
     
    	// Enregistrement dans la table OF du QC number quand il sera saisie dans la dernière phase Finition
    	if (isset($_POST['QC'])) 
    	{
    		echo "Le QC number saisie pour cette machine est : ".$_POST['QC'];
    		$sql="UPDATE of SET QC='".$_POST['QC']."' ";
    		$req= mysql_query($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
    	}
     
    	echo "<br/>Le contrôle a été enregistré dans la BDD";
     
    }
    elseif (isset($_FILES['photo'])) 
    {
    		// Transfert de la photo sur le serveur avec un nouveau nom du type OF_Gamme_Question.jpg
    		$nomOrigine = $_FILES['photo']['name'];
    		$elementsChemin = pathinfo($nomOrigine);
    		$extensionFichier = $elementsChemin['extension'];
    		$extensionsAutorisees = array("jpeg", "jpg", "gif");
    		if (!(in_array($extensionFichier, $extensionsAutorisees))) 
    		{
    			echo "Le fichier n'a pas l'extension attendue";
    		} 
    		else 
    		{    
    			// Copie dans le repertoire du script avec un nom
    			// incluant l'heure a la seconde pres 
    			$repertoireDestination = dirname(__FILE__)."/".PHOTOS;
    			//$nomDestination = "fichier_du_".date("YmdHis").".".$extensionFichier;
    			$nomDestination = $_SESSION['Machof']."_G_".$_SESSION['gamme_en_cours']."_Q_".$_SESSION['question_en_cours'].".".$extensionFichier;
     
    			if (move_uploaded_file($_FILES["photo"]["tmp_name"], $repertoireDestination.$nomDestination)) 
    			{
    				echo "Le fichier temporaire ".$_FILES["photo"]["tmp_name"]." a été déplacé vers ".$repertoireDestination.$nomDestination;
    			} 
    			else 
    			{
    				echo "Le fichier n'a pas été uploadé (trop gros ?) ou "."Le déplacement du fichier temporaire a échoué"." vérifiez l'existence du répertoire ".$repertoireDestination;
    			}
    		}
    		// Enregistrement du nom de la photo dans la BDD
    		$sql="INSERT INTO resultats (id, num_of, une_sequence, question, reponse) ";
    		$sql.="VALUES ('','".$_SESSION['Machof']."','".$_SESSION['gamme_en_cours']."','".$_SESSION['question_en_cours']."','$nomDestination')";
    		$req= mysql_query($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
     
    }  
    else 
    {
    	echo "Des fichiers n'ont pas été validées ou déclarées.";
    }
     
    // Incrémentation du compteur de question et enregistrement dans la BDD
    if ($_SESSION['question_en_cours']<$_SESSION['nbQuestGamme'])
    {
    	$_SESSION['question_en_cours']=$_SESSION['question_en_cours']+1;
    	$sql="UPDATE of SET question_en_cours='".$_SESSION['question_en_cours']."' ";
    	$req= mysql_query($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
    	// On passe à la question suivante
    	?>
    	<br/>
    	<a href="essai.php">Continuer</a><br/>
    	<a href="rapport_pdf.php">Imprimer le rapport d'essai</a><br/>
    	<?php
    }
    else
    {
    	// Alors on passe à la gamme suivante
    	if ($_SESSION['cptSeq_essais']<$_SESSION['nbSeq_essais']-1)
    	{
     
    		// On incremente le compteur pour passer à la gamme suivante
    		$_SESSION['cptSeq_essais']=$_SESSION['cptSeq_essais']+1;
    		echo "<br/>Gamme=".$_SESSION['cptSeq_essais']." sur ".$_SESSION['nbSeq_essais'];
    		$_SESSION['gamme_en_cours']=$_SESSION['seq_essais'][$_SESSION['cptSeq_essais']];
    		$sql="UPDATE of SET gamme_en_cours='".$_SESSION['gamme_en_cours']."', question_en_cours='".$_SESSION['question_en_cours']."' ";
    		$req= mysql_query($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
    		// On réinitialise le compteur de question à 1
    		$_SESSION['question_en_cours']=1;
    		// On recalcul ne nombre de question pour mettre à jour la variable de session $_SESSION['nbQuestGamme']
    		compteQuestions();
    		?>
    		<br/>
    		<a href="essai.php">Continuer</a><br/>
    		<a href="rapport_pdf.php">Imprimer le rapport d'essai</a><br/>
    		<?php
    	}
    	else
    	{
    		// l'essai est terminé
    		echo "<br/>L'essai est terminé.";
    		$sql="UPDATE of SET gamme_en_cours='Terminé', question_en_cours='Terminé' ";
    		$req= mysql_query($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
    		// affiche le formulaire test avis de modif (radio oui-non)
    		$am=avisModif();
    		echo $am;
    	}
    }	
     
    // affichage pied de page CSS
    $pied=pied_HTML();
    echo $pied;
    ?>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Afficher une liste de livres avec une rupture par auteur
    Par Ericx_25 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 12/03/2007, 22h02
  2. plantage avec une division par 0
    Par wauant dans le forum Windows Vista
    Réponses: 2
    Dernier message: 04/07/2006, 08h04
  3. Tout nouveau, j'arrive avec une question ^^
    Par petitedouceur dans le forum C++
    Réponses: 25
    Dernier message: 06/11/2005, 00h48
  4. Problème mémoire avec une dll par chargement dynamique
    Par widze19 dans le forum C++Builder
    Réponses: 6
    Dernier message: 15/12/2003, 13h20
  5. probleme avec une division par zéro
    Par jcharleszoxi dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/03/2003, 18h14

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