probleme récupération $_post pour insertion dans mysql

Petit nouveau ! | 5 Messages

19 oct. 2014, 18:32

Bonjour à tous.

J'ai quatre tables dans ma base : categorie, ressource, type_tache, tache.

je suis dans l'incapacité de rentrer avec un formulaire $_POST des données dans ma table tache.
Pour la sélection catégorie pas de problème elles s'affichent bien dans echo "<option
En revanche, quand je veux récupérer categorie_id puis l'intégrer dans ma requête sur la table ressource, soit echo "<option reste vide, soit echo "<option affiche systématiquement l'id de la dernière catégorie. J'ai repéré l'insert par /* ************* */

Je suis débutant, et j'ai beau chercher sur le net je ne trouve pas la réponse.
Pouvez-vous m'aider s'il vous plait?
Grand merci par avance.

Code : Tout sélectionner

<p>Entrez une nouvelle Tâche :</p> <form action="action_tache.php" method="post"> <?php /* Connexion à la base */ // Error reporting: error_reporting(E_ALL^E_NOTICE); // Including the DB connection file: define("INCLUDE_CHECK",1); require 'connect.php'; ?> Sélectionnez une catégorie existante : <select name="ressource_categorie_categorie_id" style="width:200px"> <?php /* Requête "Select" en ordre ascendant sur categorie_id */ $query = "SELECT * FROM categorie ORDER by categorie_id ASC"; if ($result = mysqli_query($link, $query)){ while ($row = mysqli_fetch_array($result)) { echo "<option value='".$row['categorie_id']."'>".$row['categorie_id']." ".$row['categorie_name']."</option>\n"; $cat_ressource = $row['categorie_id']; /* ************* */ } } ?> </select> <p></p> Sélectionnez une ressource existante : <select name="ressource_ressource_id" style="width:200px"> <?php /* Requête "Select" en ordre ascendant sur ressource_id */ $query = "SELECT ressource_id FROM ressource WHERE categorie_categorie_id = '$cat_ressource' "; /* ************* */ if ($result = mysqli_query($link, $query)){ while ($row = mysqli_fetch_array($result)) { echo "<option value='".$row['ressource_id']."'>".$row['ressource_first_name']." ".$row['ressource_last_name']."</option>\n"; } } ?> </select> <p></p> Sélectionnez un type de tâche existant : <select name="tache_type_tache_id" style="width:150px"> <?php /* Requête "Select" en ordre ascendant sur tache_type_id */ $query = "SELECT * FROM tache_type ORDER by tache_type_id ASC"; if ($result = mysqli_query($link, $query)){ while ($row = mysqli_fetch_array($result)) { echo "<option value='".$row['tache_type_id']."'>".$row['type_tache']."</option>\n"; } } ?> </select> <p></p> <table> <tr> <td>Début</td> <td> : * </td> <td><input size="30" id="f_date1" name="tache_debut" /><button id="f_btn1">...</button></td> <td> AAAA-MM-JJ hh:mm</td> </tr> <tr> <td>Fin</td> <td> : * </td> <td><input size="30" id="f_date2" name="tache_fin" /><button id="f_btn2">...</button></td> <td> AAAA-MM-JJ hh:mm</td> </tr> <tr> <td>Commentaire</td> <td> : * </td> <td><textarea rows="2" cols="30" name="tache_commentaire"></textarea></td> </tr> </table> * champs obligatoires !<br>

Mammouth du PHP | 2278 Messages

20 oct. 2014, 09:37

Bjr,
Si je vois bien:
<p>Entrez une nouvelle Tâche :</p>
<form action="action_tache.php" method="post">


<?php
/* Connexion à la base */
// Error reporting si E_ALL, inutile de péciser E_NOTICE
error_reporting(E_ALL);

// Including the DB connection file:
define("INCLUDE_CHECK",1);  //inutilisé à moins que ce soit dans connect.php
//require 'connect.php';
?>

Sélectionnez une catégorie existante :
<select name="ressource_categorie_categorie_id" style="width:200px">
	<?php
		/* Requête "Select" en ordre ascendant sur categorie_id */
		$query = "SELECT * FROM categorie ORDER by categorie_id ASC";
		if ($result = mysqli_query($link, $query))
		{
			while ($row = mysqli_fetch_array($result)) 
			{
	  	 		echo "<option value='".$row['categorie_id']."'>".$row['categorie_id']." ".$row['categorie_name']."</option>\n";
	   			$cat_ressource = $row['categorie_id']; /* ************* */
	   		}
		}
	?>
</select>

<p></p>
Sélectionnez une ressource existante :
<select name="ressource_ressource_id" style="width:200px">
	<?php

		/* Requête "Select" en ordre ascendant sur ressource_id */

		$query = "SELECT ressource_id FROM ressource WHERE categorie_categorie_id = '$cat_ressource' "; /* ************* */
		if ($result = mysqli_query($link, $query))
		{
			while ($row = mysqli_fetch_array($result))
			 {
   				echo "<option value='".$row['ressource_id']."'>".$row['ressource_first_name']." ".$row['ressource_last_name']."</option>\n";
   			}
		}
	?>
</select>
<p></p>

Sélectionnez un type de tâche existant :
<select name="tache_type_tache_id" style="width:150px">
	<?php
		/* Requête "Select" en ordre ascendant sur tache_type_id */
		$query = "SELECT * FROM tache_type ORDER by tache_type_id ASC";
		if ($result = mysqli_query($link, $query))
		{
			while ($row = mysqli_fetch_array($result)) 
			{
	   			echo "<option value='".$row['tache_type_id']."'>".$row['type_tache']."</option>\n";
			}
		}
	?>
</select>

<p></p>
<table>
	<tr>
		<td>Début</td>
		<td> : * </td>
		<td>
			<input size="30" id="f_date1" name="tache_debut" />
			<button id="f_btn1">...</button>
		</td>
      	<td> AAAA-MM-JJ hh:mm</td>
   </tr>
   <tr>
      <td>Fin</td>
      <td> : * </td>
      <td>
		<input size="30" id="f_date2"  name="tache_fin" />
		<button id="f_btn2">...</button></td>
      	<td> AAAA-MM-JJ hh:mm</td>
   </tr>
   <tr>
      <td>Commentaire</td>
      <td> : * </td>
      <td><textarea rows="2" cols="30" name="tache_commentaire"></textarea></td>

   </tr>
</table>
Ligne 11 ?
Lignes 72 et 81 ?
Il manque un <button type = 'submit'>envoyer</button></form>
* champs obligatoires !<br>
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Petit nouveau ! | 5 Messages

20 oct. 2014, 18:43

Merci sirakawa

Je n'ai pas mis l'intégralité du script php. Le bouton submit existe bien.
Mon problème n'est pas là.

J'appel ma base de données : ok
J'utilise un formulaire me permettant d'entrer des données complémentaires par la méthode Post dans ma base de données : ok
J'affiche dans un champs <select name="ressource_categorie_categorie_id" > toutes les "catégories" existantes dans ma base : ok

Code : Tout sélectionner

Sélectionnez une catégorie existante : <select name="ressource_categorie_categorie_id" style="width:200px"> <?php /* Requête "Select" en ordre ascendant sur categorie_id */ $query = "SELECT * FROM categorie ORDER by categorie_id ASC"; if ($result = mysqli_query($link, $query)){ while ($row = mysqli_fetch_array($result)) { echo "<option value='".$row['categorie_id']."'>".$row['categorie_id']." ".$row['categorie_name']."</option>\n"; $cat_ressource = $row['categorie_id']; /* ************* */ } } ?> </select>
De cette requête, je souhaite récupérer le "categorie_id" de l'item sélectionné "example : categorie_id=1" pour pour ne voir s'afficher dans le champs <select name="ressource_ressource_id"> suivant que les ressources correspondants à la catégorie "1" sélectionnée plus haut.

Code : Tout sélectionner

Sélectionnez une ressource existante : <select name="ressource_ressource_id" style="width:200px"> <?php /* Requête "Select" en ordre ascendant sur ressource_id */ $query = "SELECT ressource_id FROM ressource WHERE categorie_categorie_id = '$cat_ressource' "; /* ************* */ if ($result = mysqli_query($link, $query)){ while ($row = mysqli_fetch_array($result)) { echo "<option value='".$row['ressource_id']."'>".$row['ressource_first_name']." ".$row['ressource_last_name']."</option>\n"; } } ?> </select>
Et la c'est le drame. En fonction de la syntaxe que j'utilise, soit le champs <select> du formulaire est vide, soit il affiche les items correspondent à la dernière catégorie existante. Je n'arrive pas à avoir la liste correspondant à la catégorie "1" sélectionnée au dessus.
Je pense que c'est possible, mais après des heures de recherches infructueuses, je suis perdu.
Ou ma démarche n'est pas bonne, ou il y a une erreur de syntaxe, ou ...

Je ne formule peut-être pas bien ma question. C'est probablement d'une facilité déconcertante pour un pro, mais pour un beginner comme moi, c'est une autre histoire.

Grand merci à toi et à tous ceux qui ont bien voulu se donner la peine de lire mon message de détresse.

Petit nouveau ! | 5 Messages

21 oct. 2014, 06:33

Bonjour à tous,

J'ai un début de réponse. Pour que mon champs "ressource" se mette à jour automatiquement, il faut passer par un script javascript.
En effet, si je ne mets pas à jour après ma sélection dans le champs "catégorie", le champs suivant ne peut pas afficher les données demandées.

Je continue ma recherche, et je vous tiendrait informé des résultats.

La piste m'oriente vers : javascript autocomplete. Pour le moment, j'ai trouvé des réponses avec Jquery. Je préfère plus simple. Je continue ma recherche.
Un exemple vaut mieux que de longues explications fumeuses :
http://www.oscaro.com/
Identifiez votre véhicule : Par modèle. Voila exactement ce que je cherche à faire.

Grand merci à tous, que la vie vous soit douce.

Petit nouveau ! | 5 Messages

25 oct. 2014, 07:40

Bonjour à tous,
Non, il ne s'agit pas de javascript autocomplete. Ma recherche m'oriente vers Ajax, et la c'est le drame. J'ai déja du mal avec PHP, MYSQL, CSS ...
Certains d'entre vous utilisent ils Ajax? Quels avantages en retirer ?

Bonne journée à tous, que la vie vous soit douce.

ViPHP
xTG
ViPHP | 7331 Messages

25 oct. 2014, 10:43

L'avantage d'Ajax ? Ne pas avoir à faire un formulaire en plusieurs page ou bien ne pas avoir à recharger la page à chaque sélection dans un select pour mettre à jour les autres.

Petit nouveau ! | 5 Messages

04 nov. 2014, 06:55

L'avantage d'Ajax ? Ne pas avoir à faire un formulaire en plusieurs page ou bien ne pas avoir à recharger la page à chaque sélection dans un select pour mettre à jour les autres.
Merci xTG.
Après le crash de ma machine (celle qui existait du temps des dinosaures) je suis de retour (avec une machine un peu plus évoluée).
Je n'ai toujours pas lâché le morceau. Je progresse lentement.

Bonne journée à tous, je ne manquerai pas de vous tenir informé de mes investigations.
Que la vie vous soit douce !