données-->tableau-->liens-->chargement

Invité
Invité n'ayant pas de compte PHPfrance

13 mai 2005, 12:17

quand j'ouvre la page, j'ai pas les menus deroulants.
Quand je l'appelle a partir de brouillon, j'ai le champs titre qui se rempli mais qui ne prend que le 1er mot de la chaine.

J'ai changer le type de titre, je l'ai passé de varchar a text dans la base de données.

Mon code brouillon, c'est le tient. le dernier que tu as posté.

J'ai commenté tout mon code de rediger.php tel que je l'ai compris. le voici.
a noter: j'ai changer le
if (!isset($_GET["id"])) { 
en
if (isset($_GET["id"])) { 

c'est avec cette modif que j'ai obtenu l'affichage dans le champs titre.

rediger.php
<html>
<body>

<?php 
$bdd = "synthese";

$host = "localhost";
$user = "renatane";
$pass = "esteban";
//connection a la base de données.
mysql_connect($host, $user, $pass)
or die("Connexion à la base impossible");
//selection et ouverture de la base.
mysql_select_db("$bdd")
or die("Ouverture base impossible");

//controle pour voir si la page est ouverte a partir de brouillon.php.
if (isset($_GET["id"])) { 
//si oui:   
 //on selectionne l'enregistrement de la table brouilon donc l'id_brouillon correspond a celui selectionné sur brouilon.php.
  $str_requete = "SELECT * FROM brouillon WHERE  id_brouillon=".$_GET["id"]; 
//on execute la requete
  $o_result = mysql_query($str_requete); 
  $a_result = mysql_fetch_array($o_result, MYSQL_ASSOC) ;
 //on stock les champs de l'enregistrement dans de news variables.
  $var1 = $a_result["service"]; 
  $var2 = $a_result["titre"];
  $var3 = $a_result["article"];
  $var4 = $a_result["date"]; 
  $var5 = $a_result["destinataire"]; 
} 
else //si non: (ouverture de la page normalement)
{ 

$rq = "SELECT DISTINCT nom_service FROM service ORDER BY nom_service";
$result = mysql_query($rq)
or die ("Exécution de la requête service impossible".mysql_error());
//DISTINCT permet d'afficher qu'une fois les données
//on liste tous les servicesde la table service.
while ($liste=mysql_fetch_array($result))
{
extract($liste);
//on stock la liste des services dans $var1
$var1 = $nom_service; 
}

$var2 = ""; 
$var3 = ""; 
  //on selectionne jour, mois et année dans la table instance
$rq = "SELECT DISTINCT instance.jour, instance.mois, instance.annee FROM instance ORDER BY id_instance";
$result = mysql_query($rq)
or die ("Exécution de la requête instance impossible : ".mysql_error());
//DISTINCT permet d'afficher qu'une fois les données
//on liste toutes les options possibles c-a-d tous les enregistrements.
while ($list=mysql_fetch_array($result))
{
extract($list);
//on concatene pour réunir tous les champs dans une seule variable.
$date=$list['jour']." ".$list['mois']." ".$list['annee'];
$var4 = $date;
} 
$var5 = "";
}
 //titre de la page.
echo "<center><h2>Rédiger une notes de syntheses</h2></center><br><br>";
//lien de retour a l'accueil
echo "<A HREF='index.php'> retour a l\'index </A><br><br>";
//création du form, champs Service, menu deroulant dynamique (table service)
echo "<form action='enregistrer.php' method='post'>Service :<select name='nom_service'>\n<br>";
echo "<option value=" .$var1.">";
echo " </select>\n";
echo "<br><br>";
//champ titre.
echo " Titre :";
echo "<INPUT type=text name='titre' SIZE='60' MAXLENGTH='200' value=" .$var2.">";
echo "<br><br> ";
//champ de redaction de l'article.
echo " Article :<BR><br>";
echo " <TEXTAREA name='article' cols='100' rows='10' height=100% width=100% WRAP=virtual value=" .$var3.">";
echo " </TEXTAREA>";

echo "<table cols='2' rows='2' border='0' width=100% >    ";
echo " <tr><td>";
//champs de choix de la date dans le menu deroulant dynamique de la table instance.
echo " Proposé pour l instance du: 
<select name='date'>\n<br>";
echo "<option value=".$var4."></option>\n";
echo "</select>\n";
echo "<br>";

//affichage du type et de la limite qui correspondent a la date choisie. table instance.
//Construction de la requete
$nature="SELECT DISTINCT instance.type, instance.limite 
FROM instance
where instance.jour=". $list['jour'] ."
and instance.mois=". $list['mois'] ."
and instance.annee= ". $list['annee'];
//On execute la requete sur la base de données afin de récuperer les données
$res = mysql_query($nature)
or die ("Exécution de la requête nature impossible : ".mysql_error()); 

//On place les données récupérées dans un tableau (obligatoire)
$lis=mysql_fetch_array($res);

//On affiche ces données
echo "Nature : ".$lis['type'];  
echo "<br>";

//On affiche ces données
echo "Date limite de remise des dossiers : ";  
echo "<br>";

echo "</td> ";
//champ destinataire ou l'on tape l'adresse mail du destinataire
echo "<td>Destinataire : <INPUT TYPE=text NAME='destinataire' SIZE='30' MAXLENGTH='50' value=><A HREF='annuaire.php'> consulter 
l annuaire </A><br><BR> ";

echo "</td> ";
echo "</tr> ";

echo " <tr colspan='2'><td>";
//bouton valider qui ouvre une pop up de confirmation
echo " <INPUT TYPE='button' name= 'valider' VALUE='Valider' OnClick='window.open('confirmation.php','pop1','height=200, width=400, top=100, left=100,toolbar=no, menubar=yes, location=no, resizable=yes, scrollbars=no, status=no');'>";
//bouton enregistrer qui stock le form dans la table brouillon.
echo "<INPUT TYPE='submit' name ='enregistrer' VALUE='Enregistrer'> ";
//bouton annuler qui annule
echo "<INPUT TYPE='reset' VALUE='Annuler'></td></tr> ";

echo "<br><br><br>";

echo"</table></form>";
//fermeture de connection a la base.
mysql_close();
?>
</body>
</html>
j'ai l'impression que lorsque ce code marchera, lorsque j'appelerai rediger.php a partir de brouillon.php, j'aurai les champs remplis, mais je n'aurai plus les menu deroulants, qui permettrons de modifier le "brouillon".

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

13 mai 2005, 13:15

J'ai regardé ton code et effectivement, tu n'affichais que la solutions dans tes lignes déroulantes

Il faut que tu construise tes listes déroulantes tout en testant si tu affiche la bonne solution et, si c'est le cas que tu force le choix de cette ligne avec l'attribut "selected"

tes variables $var.. doivent contenir la valeur contenu dans la bd et elle doivent permettre l'initialisation de ton affichage

Je me suis aussi permis de modifier ton code !!!

Il faut savoir que tout ce que tu mets dans un echo sera interpreté par le serveur, donc moins tu en mets, moins le serveur sera solicité !!! Tu ne doit utiliser les echo que lorsque tu doit interpreter une variable PHP quand ce que tu affiche est du code HTML, il est bon de ne pas passer par un echo

Utilise ce code et tu aura une page qui s'affichera vierge si tu ne passe pas d'identifiant et qui affichera la même page mais remplie avec les données de la ligne qui correspond à ton id

Regarde bien le code et essaye de comprendre !!! pose des questions si tu ne comprends pas !!!! Tu n'évolura pas si tu copie/colle mon script !!!

<?php
$bdd = "synthese";

$host = "localhost";
$user = "renatane";
$pass = "esteban";
//connection a la base de données.
mysql_connect($host, $user, $pass)
or die("Connexion à la base impossible");
//selection et ouverture de la base.
mysql_select_db("$bdd")
or die("Ouverture base impossible");

//controle pour voir si la page est ouverte a partir de brouillon.php.
if (isset($_GET["id"])) {
//si oui:   
//on selectionne l'enregistrement de la table brouilon donc l'id_brouillon correspond a celui selectionné sur brouilon.php.
  $str_requete = "SELECT * FROM brouillon WHERE  id_brouillon=".$_GET["id"];
//on execute la requete
  $o_result = mysql_query($str_requete);
  $a_result = mysql_fetch_array($o_result, MYSQL_ASSOC) ;
//on stock les champs de l'enregistrement dans des variables.
  $var1 = $a_result["service"];
  $var2 = $a_result["titre"];
  $var3 = $a_result["article"];
  $var4 = $a_result["date"];
  $var5 = $a_result["destinataire"];
}
else //si non: (ouverture de la page normalement)
{
        //On met toute les variables par defaut
	$var1 = "";
	$var2 = "";
	$var3 = "";
	$var4 = "";
	$var5 = "";
}
?>
<html>
	<body>
		<!-- titre de la page -->
		<center><h2>Rédiger une notes de syntheses</h2></center>
		<br><br>
		
		<!-- lien de retour a l'accueil -->
		<A HREF='index.php'> retour a l\'index </A>
		<br><br>

		<!-- création du form, champs Service, menu deroulant dynamique (table service) -->
		<form action='enregistrer.php' method='post'>
			Service :
			<select name='nom_service'><br>
<?php
$rq = "SELECT DISTINCT nom_service FROM service ORDER BY nom_service";
$result = mysql_query($rq)
or die ("Exécution de la requête service impossible".mysql_error());
//DISTINCT permet d'afficher qu'une fois les données
//on liste tous les servicesde la table service.
while ($liste=mysql_fetch_array($result))
{
	extract($liste);
	//pour chaque ligen on teste si elle correspond à la ligne a afficher :
        //si var1 = "" aucune ligne ne sera sélectionnée
        // sinon la ligne qui a été enregistrée sera sélectionnée
	$selected = ($nom_service == $var1) ? "selected" : ""; // Cette ligne permet de sélectionner la ligne dont la valeur est stocké ds la bdd
	echo "<option value=" .$nom_service." ".$selected.">".$nom_service."</option>\n";
}
?>
			</select>
			<br><br>
			
			<!-- champ titre. -->
			Titre :
			<INPUT type=text name='titre' SIZE='60' MAXLENGTH='200' value='<?= $var2 ?>'>
			<br><br>

			<!--champ de redaction de l'article -->
			Article :
			<BR><br>
			<TEXTAREA name='article' cols='100' rows='10' height=100% width=100% WRAP=virtual><?= $var3 ?></TEXTAREA>

			<table cols='2' rows='2' border='0' width=100% >
				<tr>
					<td>

						<!-- champs de choix de la date dans le menu deroulant dynamique de la table instance -->
						Proposé pour l instance du:
						<select name='date'><br>
<?php
	  //on selectionne jour, mois et année dans la table instance
	$rq = "SELECT DISTINCT instance.jour, instance.mois, instance.annee FROM instance ORDER BY id_instance";
	$result = mysql_query($rq)
	or die ("Exécution de la requête instance impossible : ".mysql_error());
	//DISTINCT permet d'afficher qu'une fois les données
		//on liste toutes les options possibles c-a-d tous les enregistrements.
		while ($list=mysql_fetch_array($result))
		{
			extract($list);
			//on concatene pour réunir tous les champs dans une seule variable.
			$date=$list['jour']." ".$list['mois']." ".$list['annee'];
			//même chose ici
                        $selected = ($var4 == $date) ? "selected" : "";
			echo "<option value=".$date.">".$date."</option>\n";
		}
?>
						</select>
						<br>
<?php
//affichage du type et de la limite qui correspondent a la date choisie. table instance.
//Construction de la requete
$nature="SELECT DISTINCT instance.type, instance.limite
FROM instance
where instance.jour=". $list['jour'] ."
and instance.mois=". $list['mois'] ."
and instance.annee= ". $list['annee'];
//On execute la requete sur la base de données afin de récuperer les données
$res = mysql_query($nature)
or die ("Exécution de la requête nature impossible : ".mysql_error());

//On place les données récupérées dans un tableau (obligatoire)
$lis=mysql_fetch_array($res);

//On affiche ces données
echo "Nature : ".$lis['type'];  
echo "<br>";
?>

						<!-- On affiche ces données -->
						Date limite de remise des dossiers :  
						<br>
					</td>
<!-- champ destinataire ou l'on tape l'adresse mail du destinataire -->
					<td>Destinataire : 
						<INPUT TYPE=text NAME='destinataire' SIZE='30' MAXLENGTH='50' value=>
						<A HREF='annuaire.php'>consulter l annuaire </A><br><BR> 
					</td>
				</tr>
				<tr colspan='2'>
					<td>
						<!-- bouton valider qui ouvre une pop up de confirmation -->
						 <INPUT TYPE='button' name= 'valider' VALUE='Valider' OnClick='window.open("confirmation.php","pop1","height=200, width=400, top=100, left=100,toolbar=no, menubar=yes, location=no, resizable=yes, scrollbars=no, status=no");'>
						<!-- bouton enregistrer qui stock le form dans la table brouillon. -->
						<INPUT TYPE='submit' name ='enregistrer' VALUE='Enregistrer'>
						<!-- bouton annuler qui annule -->
						<INPUT TYPE='reset' VALUE='Annuler'>
					</td>
				</tr>
				<br><br><br>
			</table>
		</form>";
<?php
//fermeture de connection a la base.
mysql_close();
?>
	</body>
</html>
[/size]
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 155 Messages

13 mai 2005, 14:17

//pour chaque ligen on teste si elle correspond à la ligne a afficher :
        //si var1 = "" aucune ligne ne sera sélectionnée
ok, normal, on affiche " ", c'est a dire rien.
 // sinon la ligne qui a été enregistrée sera sélectionnée
ok, je suis d'accord sur le principe.
 $selected = ($nom_service == $var1) ? "selected" : ""; // Cette ligne permet de sélectionner la ligne dont la valeur est stocké ds la bdd
comprend pas ce que ca veut dire, comprend pas le role exact de cette ligne: "== ?"
c'est koi, c'est une comparaison? on regarde si $nom service,(c-a-d la valeur du menu deroulant , )est la même que celle de $var1. et si oui, on lforce sa selection?
 echo "<option value=" .$nom_service." ".$selected.">".$nom_service."</option>\n"; 
$nom_service." ".$selected ca, ca veut dire koi?

Dsl si c lourd, mais mon but c vraiment de comprendre car dieu sait que j'ai encore bcp de script a créer pour finir mon projet.

Eléphant du PHP | 357 Messages

13 mai 2005, 14:26

dsl je débarque je suis sure que Zeus te le dira mieux que moi mais bon vue qu il doit faire son CDC ca risque de prendre un pe de tps :wink:
alors pour ta question :
comprend pas ce que ca veut dire, comprend pas le role exact de cette ligne: "== ?"
c'est koi, c'est une comparaison? on regarde si $nom service,(c-a-d la valeur du menu deroulant , )est la même que celle de $var1. et si oui, on lforce sa selection?
le = c'est affecter une valeur a une variable ou une var a une var .
le == compare en gros c'est par exemple $i==0 on verrifie que $i est bien egale a zero.
echo "<option value=" .$nom_service." ".$selected.">".$nom_service."</option>\n";
veux dire que value prendra comme valeur $nom_service et de $selected.
c'est la facon d'intégrer des var php dans du html ou dans des requettes SQL.

enfin je sais pas tro psi c'est les explications que tu voulais :?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

13 mai 2005, 14:38

Comme je te la disais, je préfère quelqu'un qui pose des questions plutôt que quelqu'un qui fait du copier coller !!!!
$selected = ($nom_service == $var1) ? "selected" : ""; // Cette ligne permet de sélectionner la ligne dont la valeur est stocké ds la bdd
equivaut à
if ($nom_service == $var1) {
  $selected = "selected";
} else {
  $selected = "";
}
Mais tiens sur une ligne !!! Si la ligne qu'on va afficher ($nom_service) est celle qui est choisie ($var1), on attribue à $selected laz valeur "selected", si ce n'est pas la ligne qu'on a choisi, on met la chaine vide ce qui faut que quand tu vas afficher la ligne
echo "<option value=" .$nom_service." ".$selected.">".$nom_service."</option>\n";
si $selected="selected", la ligne affichée va être celle que tu vas voir à l'affichage de la page. C'est ce qui permet d'afficher une liste de choix tout en affichant une ligen autre que la premiere. Je sais pas si c'est clair !!!!
PHP:
//pour chaque ligen on teste si elle correspond à la ligne a afficher :
//si var1 = "" aucune ligne ne sera sélectionnée

ok, normal, on affiche " ", c'est a dire rien.
Là, tu as mal compris !!! Si tu relis la ligne
$selected = ($nom_service == $var1) ? "selected" : "";
tu verra qu'on affiche pas $var1 mais qu'on le compare aux valeurs de ta base !!!!

Si $var1="", $nom_service==$var1 sera toujours faux, aucune ligne n'aura l'attribut "selected" et aucune ligne ne sera sélectionné, c'est la première ligne affichée qui sera sélectionnée.

J'éspère avoir été clair !!!

Si quelqu'un qui lit ce post pense pouvoir être plus clair, c'est avec plaisir que je le laisse développer !!!!
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 155 Messages

13 mai 2005, 14:57

fffiouuuu, ca a fait bcp pour ma petite tête, mais j'ai qd mê fini par comprendre.
if ($nom_service == $var1) {
  $selected = "selected";
} else {
  $selected = "";
}
Cette facon de l'ecrire est bcp plus parlante pour moi. Avec ça, je comprend.

Merci bcp pour vos aides.

Dsl de t'avoir derangé Zeus.
C koi un CDC?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

13 mai 2005, 14:59

Tu m'aurais vraiment dérangé, je ne t'aurais pas répondu !!!!

Je me plaint de devoir bosser mais je viens sur le forum parce que j'aime bien !!!!

un CDC, c'est un cahier des charges !!! Si tu sais ce que c'est ...
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 357 Messages

13 mai 2005, 15:02

Pas de probleme renatane commme l a dit un jour un grand sage
On est sur un forum !!!

Je viens parce que j'aime bien apporter mon aide aux gens qui peuvent en avoir besoin et que j'aime bien qu'on m'aide quand j'en ai besoin.
pareil pour moi enfin c aussi parce que j ai un pe de temps :d

alors CDC :
Cahier Des Charges
tout simplement

Eléphant du PHP | 155 Messages

13 mai 2005, 15:02

Ok pour cahier des charges, je sais ce que c mais je ne connaissais pas l'apellation CDC.

Merci encore,bon courage pour vos travaux respectifs.
Modifié en dernier par renatane le 13 mai 2005, 15:04, modifié 1 fois.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

13 mai 2005, 15:02

merci !!!

bon courage @ toi aussi !!!
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

13 mai 2005, 15:04

Pas de probleme renatane commme l a dit un jour un grand sage
On est sur un forum !!!

Je viens parce que j'aime bien apporter mon aide aux gens qui peuvent en avoir besoin et que j'aime bien qu'on m'aide quand j'en ai besoin.
pareil pour moi enfin c aussi parce que j ai un pe de temps :d

alors CDC :
Cahier Des Charges
tout simplement
Merci bicoup Seayoung !!!

Ca fait plaisir !!!! :P J'en suis tout zemu :cry:
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 357 Messages

13 mai 2005, 15:06

ROOOO fo po pleurer comme ca :wink:
mais les parole etaient assez vraie donc fallait les resortir ;)
bon courage pour la redaction de ton CDC :p
aller pour moi plus qu une heure et c le WE :lol:

Mammouth du PHP | 859 Messages

13 mai 2005, 15:08

Encore 1h30 pour moi, j'espère que le week-end ne sera pas trop moche parce que là c'est la shkoumoune :(

Eléphant du PHP | 357 Messages

13 mai 2005, 15:09

ca dp ou tu vas mais je c que la ou je v c pourrit :cry:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

13 mai 2005, 15:11

Ca fait quand même plaisir d'être pris pour un vieux sage (surtout à 20 ans :lol: )

Sinon il me reste 2h30 mais vuq ue j'arrive pas à m'y mettre et que j'arrete pas de revenir, ca rique d'être 3h voir même ce week-end !!!
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer