Page 1 sur 1

probleme pour passer d'un fichier à un autre

Posté : 08 oct. 2013, 11:47
par JVL
Bonjour à tous,

Aujourd'hui je travaille sur une requete insert into(elle semble fonctionner dans phpmyadmin).

A priori le problème vient de mon "execute", ou plutôt de la concaténation (pourtant j'ai utiliser tout les ressources que moogli à pu poster !)
<?
require_once('../inc/connection.php'); // connection à la bdd.

$project = $_POST['add_select_projet'];
$addduree = $_POST['add_duree'];
$cate = $_POST['add_categorie'];
$comm = $_POST['commentaire'];
$name = $_POST['name'];
$date = $_POST['add_date'];
			   
$add = $connection->prepare('INSERT INTO `glpi_suivi_travail`(`Projet_suivi`, `Name_suivi`, `Date_suivi`, `Categorie_suivi`, `Duree_suivi`, `Commentaire`) VALUES (:projet,:name,:date_,:cate,:duree,:comm)');
														try {			
$ajout_travail = $add->execute(array(
									'projet' => '\'$project\'',
									'name' => '\'$name\'',
									'date_' => '\'2013-10-09\'',
									'cate' => '\'$cate\'',
									'duree' => '\'$addduree\'',
									'comm' => '\'$comm\''
										));?>
Après il me reste à ajouter str_to_date dans la requète, j'éssaye pour le moment avec une date en brut(pour pas trop me compliquer la vie :) )

Merci d'avance pour l'aide apporté !

Cordialement JVL.

Re: soucis de concaténation

Posté : 08 oct. 2013, 11:57
par computarelier
Salut,

Est ce que tu as un message d'erreur ? Car j'ai l'impression que le problème peut venir d'ailleurs : regarde ce pauvre petit "try" tout seul abandonné et malheureux... :'(

Re: soucis de concaténation

Posté : 08 oct. 2013, 11:59
par JVL
Pardon j'avait oublier une ligne du code !

Et non je n'ai pas de message d'erreur ! ni d'enregistrement dans la bdd ! ...
<?
require_once('../inc/connection.php'); // connection à la bdd.

$project = $_POST['add_select_projet'];
$addduree = $_POST['add_duree'];
$cate = $_POST['add_categorie'];
$comm = $_POST['commentaire'];
$name = $_POST['name'];
$date = $_POST['add_date'];
			   
$add = $connection->prepare('INSERT INTO `glpi_suivi_travail`(`Projet_suivi`, `Name_suivi`, `Date_suivi`, `Categorie_suivi`, `Duree_suivi`, `Commentaire`) VALUES (:projet,:name,:date_,:cate,:duree,:comm)');
														try {			
$ajout_travail = $add->execute(array(
									'projet' => '\'$project\'',
									'name' => '\'$name\'',
									'date_' => '\'2013-10-09\'',
									'cate' => '\'$cate\'',
									'duree' => '\'$addduree\'',
									'comm' => '\'$comm\''
										));
if( $ajout_travail ) {     echo "Enregistrement réussi";   }   } catch( Exception $e ){  echo '    Erreur de requète : ', $e->getMessage(); } ?>

Re: soucis de concaténation

Posté : 08 oct. 2013, 13:13
par xTG
As-tu un affichage ? (erreur ou réussi)
Car à voir les short_tags je pense aussitôt à un code non exécuté.
<? // short_tags => non exécuté suivant la configuration du serveur
<?php // correct

Re: soucis de concaténation

Posté : 08 oct. 2013, 14:09
par JVL
Alors j'ai enlever les short_tags, a priori cela ne change rien (pas de message d'erreurs). J'ai donc éssayé d'appeler directement ma page dans le navigateur, et miracle
Notice: Undefined index: add_select_projet in C:\xampp\htdocs\glpi\front\add.php on line 4

Notice: Undefined index: add_duree in C:\xampp\htdocs\glpi\front\add.php on line 5

Notice: Undefined index: add_categorie in C:\xampp\htdocs\glpi\front\add.php on line 6

Notice: Undefined index: commentaire in C:\xampp\htdocs\glpi\front\add.php on line 7

Notice: Undefined index: name in C:\xampp\htdocs\glpi\front\add.php on line 8

Notice: Undefined index: add_date in C:\xampp\htdocs\glpi\front\add.php on line 9
Enregistrement réussi
De plus l'enregistrement ce fait bien dans ma bdd (avec seulement le nom des variables, mais sa prouve que la requète est bonne ? ?)
Je doit avoir un problème pour passer les informations d'une page à l'autre ...

voici le code censer envoyer les données:
<form method="post" action="../front/add.php" name="add">	<TR>
			<TD vAlign=middle>
				<select name="add_select_projet">
				<option value="">Sélectionner un projet</option> 
		<?php include ('../inc/select_projet.php');	// requete de selection de tout les projet open ?>	
		</select>
		<?php echo'<input name="name" type=hidden value="'.$_SESSION["glpiname"].'">'; 
			echo'<input name="add_date" type=hidden value="'.$_POST['date'].'">';?> 
		
				

			</TD>
			<TD vAlign=middle> 
				<select name="add_duree">
					  <option value="">Sélectionner une durée</option>
					  <option value="15">15 minutes</option>
					  <option value="30">30 minutes</option>
					  <option value="45">45 minutes</option>
					  <option value="60">1 heure</option>
					  <option value="75">1 heure 15 minutes</option>
					  <option value="90">1 heure 30 minutes</option>
					  <option value="105">1 heure 45 minutes</option>
					  <option value="120">2 heures</option>
					  <option value="150">2 heures 30 minutes</option>
					  <option value="180">3 heures</option>
					  <option value="210">3 heures 30 minutes</option>
					  <option value="240">4 heures</option>
				</select>
			</TD>
			<TD vAlign=middle>
				<select name="add_categorie">
					  <option value="Projet">Projet</option>
					  <option value="Courant">Courant</option>
				</select>
			</TD>
			<TD vAlign=middle > 
					<TEXTAREA name="commentaire" ROWS=3 COLS=1 style="width: 350px; height: 20px;">
					</TEXTAREA>
			</TD>

			<TD Align=center><input type="submit" value="Ajouter"/> 
			</TD>
		</TR>
</form>	
Merci.

Re: probleme pour passer d'un fichier à un autre

Posté : 08 oct. 2013, 17:38
par xTG
avec seulement le nom des variables
Une variable est interprétée entre double quote, pas entre simple quote.

Pour tous les undefined regardes ce que tu as dans $_POST.
Ou même ton formulaire, tu verras que ces champs n'existent pas.

Re: probleme pour passer d'un fichier à un autre

Posté : 09 oct. 2013, 09:21
par JVL
Merci pour les double quotes.

Comment ça les champs n'éxistent pas ? J'ai pourtant éssayé de respecter une certaine syntaxe avec des "name" dans ma form (action+method) et un bouton "submit".

Le plus simple serait de tout laisser dans le même fichier.php je suppose ?


edit: mais en effet je n'ai pas l'impression que l'appel de l'autre page fonctionne vraiment.

Re: probleme pour passer d'un fichier à un autre

Posté : 09 oct. 2013, 10:12
par xTG
Oups pardon ils existent bien... J'ai du faire un amalgame ou bien j'ai lu en diagonale !

Que te donnes un var_dump($_POST); sur la page de réception du formulaire ?
Le premier code de ce topic est-il bien le fichier add.php ?

Re: probleme pour passer d'un fichier à un autre

Posté : 09 oct. 2013, 10:45
par JVL
Non on saisie dans le formulaire sur teststagiaire.php et on récupère (puis envoi a la bdd) sur add.php.

Jusqu'à maintenant pas moyen d'aller sur la add.php en cliquant sur le submit de la page teststagiaire, j'ai donc copier exactement ma form et l'ai recoller dans un autre fichier, MIRACLE : le submit nous envoi bien sur add.php.


Après test de var_dump: tout les données reçus correspondend bien au dooonées envoyés, il doit y avoir un problème dans ma page principale, un soucis d'appel.

edit: oui le premier code est celui de add.php
<!DOCTYPE html> 
<?php 
define('GLPI_ROOT', '..');
include (GLPI_ROOT . "/inc/includes.php");

Session::checkRight("reports", "r");

Html::header($LANG['Menu'][6],$_SERVER['PHP_SELF'],"utils","report"); // appel de l'entête de GLPI

require_once('../inc/connection.php'); // connection à la bdd

$valeur_par_defaut = date('d/m/Y'); // On check si $_post['date'] existe, si oui on l'affiche, sinon on affiche la date du jour
$date_formulaire = (!empty($_POST['date'])) ? $_POST['date'] : $valeur_par_defaut; ?>

<script type="text/javascript" src="/glpi/lib/extrajs/calendrier.js"></script> <!-- javascript du calendrier-->
<script type="text/javascript" src="/glpi/lib/extrajs/controleform.js"></script>
<link rel="stylesheet" media="screen" type="text/css" title="Design" href="/glpi/css/calendrier.css" /><!-- css du calendrier -->
<div id='page'>
  
	<DIV class=center>


<TABLE border=2 class=tab_cadrehov>
	<TBODY>
		<tr>
<form method="post" action="teststagiaire.php">			<th colSpan="5">Visualisation</th>
	    </tr>
		<tr>
				<th colSpan=5><input type="date" name="date" id="date" class="calendrier" size="10" value="<?=$date_formulaire;?>"/> 
							  <input type="submit" value="Afficher"  />
				</th>

		</tr>
<form/>			
		<TR>
			<TH><center>Projet</center></TH>
			<TH><center>Durée</center></TH>
			<TH><center>Catégorie</center></TH>
			<TH><center>Commentaire</center></TH>
			<TH><center>Actions</center></TH>
		</TR>
	
		<?php 
		        $format = "%d/%m/%Y";                               
                $string=$_POST['date']; 
                $name=$_SESSION["glpiname"];

$selection = $connection->query('SELECT * FROM `glpi_suivi_travail` WHERE `Name_suivi`= \''.$name.'\' AND `Date_suivi` = str_to_date(\''.$string.'\', \''.$format.'\')');

     while( $enregistrement = $selection->fetch(PDO::FETCH_OBJ)){  // Voici une boucle qui pour chaque résultat boucle sur une ligne du tableau. (+ convertion)
								
$nombre = $enregistrement->Duree_suivi; 
// Le temps travaillé étant stocké en minute, il faut le convertir pour l'afficher sous forme heure:minute. Il est présent dans le while, car il faut convertir chaque "duree" retourner par la requète
//initialisation 
$secondes = 0;
$minutes = 0;
$heure = 0;
//convertion
$minutes = $nombre*1; 
$secondes = bcmod($nombre,"60");
$minutes = floor($minutes);
while($secondes >= "60") //ajoute une minute toutes les 60 secondes
{
 $secondes = $secondes-60;
 $minutes++;
}
while($minutes >= "60")//ajoute une heure toutes les 60 minutes
{
 $minutes = $minutes-60;
 $heure++;
}
if($minutes < "10") // ajoute le deuxieme 0 pour la présentation
{
 $minutes = "0".$minutes;
}
if($secondes < "10") // ajoute le deuxieme 0 pour la présentation
{
 $secondes = "0".$secondes;
}
if($heure < "10") // ajoute le deuxieme 0 pour la présentation
{
 $heure = "0".$heure;
}
$resultat = $heure." h ".$minutes; //contient le résultat final
 // Afficher le résultat

                                echo '<TR> <input type=hidden value="',$enregistrement->ID_suivi,'">'; 
                                echo '<TD><center>',$enregistrement->Projet_suivi,'</center></TD>';
                                echo '<TD>',$resultat,'</TD>';
                                echo '<TD>',$enregistrement->Categorie_suivi,'</TD> ';
                                echo '<TD>',$enregistrement->Commentaire,'</TD>';
                                echo '<TD>';
                                echo '<a href="#" onclick="">Modifier </a> |';
                                echo '<a href="#" onclick=""> Supprimer</a>' ;
                                echo '</TD>';
                                echo '</TR>';                     
																} ?>	 
				
	
<form method="POST" action="add.php">	// LE FORMULAIRE DAJOUT COMMENCE ICI  !!!!!!!!!!!
			<TR>
			<TD vAlign=middle>
				<select name="add_select_projet">
				<option value="">Sélectionner un projet</option> 
		<?php include ('../inc/select_projet.php');	// requete de selection de tout les projet open ?>	
		</select>
		<?php echo'<input name="name" type=hidden value="'.$_SESSION["glpiname"].'">'; 
			echo'<input name="add_date" type=hidden value="'.$string.'">';?> 
		
				

			</TD>
			<TD vAlign=middle> 
				<select name="add_duree">
					  <option value="">Sélectionner une durée</option>
					  <option value="15">15 minutes</option>
					  <option value="30">30 minutes</option>
					  <option value="45">45 minutes</option>
					  <option value="60">1 heure</option>
					  <option value="75">1 heure 15 minutes</option>
					  <option value="90">1 heure 30 minutes</option>
					  <option value="105">1 heure 45 minutes</option>
					  <option value="120">2 heures</option>
					  <option value="150">2 heures 30 minutes</option>
					  <option value="180">3 heures</option>
					  <option value="210">3 heures 30 minutes</option>
					  <option value="240">4 heures</option>
				</select>
			</TD>
			<TD vAlign=middle>
				<select name="add_categorie">
					  <option value="Projet">Projet</option>
					  <option value="Courant">Courant</option>
				</select>
			</TD>
			<TD vAlign=middle > 
					<TEXTAREA name="commentaire" ROWS=3 COLS=1 style="width: 350px; height: 20px;">
					</TEXTAREA>
			</TD>

			<TD Align=center><input type="submit" name="ajout_" value="Valider" /> 
			</TD>
		</TR>


</form>	
<form>				<tr>
							<td></td>                
<?php	$format1 = "%d/%m/%Y";                               
        $string1=$_POST['date']; 
        $name1=$_SESSION["glpiname"];
		$selection1 = $connection->query('SELECT sum(Duree_suivi) as poo FROM `glpi_suivi_travail` WHERE `Name_suivi`= \''.$name1.'\' AND `Date_suivi` = str_to_date(\''.$string1.'\', \''.$format1.'\')');
		$dure = $selection1->fetch(PDO::FETCH_OBJ);
		$durez = $dure->poo;
///initialisation/ la requète fait la somme de tout les minutes travaillé pour une personne sur un jour, il faut ensuite convertir cette valeur en heures:minutes
$secondes = 0;
$minutes = 0;
$heure = 0;
$minutes = $durez*1; 
$secondes = bcmod($nombre,"60");
$minutes = floor($minutes);
while($secondes >= "60") //ajoute une minute toutes les 60 secondes
{
 $secondes = $secondes-60;
 $minutes++;
}
while($minutes >= "60")//ajoute une heure toutes les 60 minutes
{
 $minutes = $minutes-60;
 $heure++;
}
if($minutes < "10") // ajoute le deuxieme 0 pour la presentation
{
 $minutes = "0".$minutes;
}
if($secondes < "10") // ajoute le deuxieme 0 pour la presentation
{
 $secondes = "0".$secondes;
}
if($heure < "10") // ajoute le deuxieme 0 pour la presentation
{
 $heure = "0".$heure;
}
$resultat = $heure." h ".$minutes; //contient le résultat final
							echo'<td>Durée total : ',$resultat,'</td>'; 
?>
					</tr>
</form>
			</TBODY>
		</TABLE>
		<br/>
<form>	
<table class=tab_cadrehov>
			<tr>
					<th colSpan=4>
					Rapport d'activité
					</th>
			</tr>
		<tr>
				<td> Sélectionner personnel</th>
				<td>Date de début </th>
				<td>Date de fin </th>
			</tr>
			<TR>
				<td>
					<select>
						  <option value="Christophe">Christophe</option>
						  <option value="Josiane">Josiane</option>
						  <option value="Ludo">Josiane</option>
						  <option value="Ludo">Groupe</option>
					</select>
				</td>
				<td> <input type="text" name="date1" id="date1" class="calendrier" size="10" /></th>
				<td> <input type="text" name="date2" id="date2" class="calendrier" size="10" /></th>
				<td><input type="submit" value="Afficher"></th>
			</tr>
		</table>
	  </form><br/>
	<form method="post">
	<table >
		<tbody>
			<tr>
				<th colSpan=2 class=h1>Ajouter un projet</th>

			</tr>
				<td align=right><input type="text" name="add_projet" id="add_projet"/>
				</td>
				
				<td><input type="submit" value="Enregistrer ">
				</td>
		</tbody>
	</table>
 </form>
 <br/>
 <table>
	<form>
			<tr>
				<th colSpan=2 class=h1>Clore un projet 
				</th>
				<th> 
				</th>
			</tr>
				<td align=right>
						<select>
						<?php include ('../inc/select_projet.php');	 ?>	
						</select>
				</td>
			<td><input type="submit" value="Clore ce projet"></td>
	</form>
 </table> 
</DIV>
</div><?php  Html::footer(); ?>
</body></html>

Re: probleme pour passer d'un fichier à un autre

Posté : 09 oct. 2013, 13:24
par xTG
Jusqu'à maintenant pas moyen d'aller sur la add.php en cliquant sur le submit de la page teststagiaire, j'ai donc copier exactement ma form et l'ai recoller dans un autre fichier, MIRACLE : le submit nous envoi bien sur add.php.
J'avais pas vu les autres formulaires sur la page, c'est un sacré tintouin.
Pour la majorité un simple lien (au pire au design d'un bouton) aurait suffit plutôt qu'un formulaire vide.

Quand tu cliques sur Valider il charge quelle page du coup ?

Peux-t-on avoir le code HTML généré de ta page ?

Re: probleme pour passer d'un fichier à un autre

Posté : 09 oct. 2013, 14:07
par JVL
Un collègue à moi à eu l'oeil !

J'ai une balise form que je ferme ainsi <form/> or on sait tous que c'est </form>, voila pourquoi les valeurs ne passaient pas d'un fichier à l'autre.

xTG merci de ton aide ! Oui je sais ma page n'est pas très propre ! c'est d'ailleurs pour ca que j'avais crée un topic "bien organiser son code" pour avoir des conseils mais je n'ai qu'une seule réponse ! Je préfère rendre une page qui ne consomme pas trop de ressource, pour ca que je cherche à séparé un maximum mes fonctions dans différents fichiers ! Si tu as des conseils quelconque à me faire part, je suis preneur (avant de résoudre ce topic).

merci encore.