Affichage d'un résultat selon l'option dynamqiuement choisi dans un textarea

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Affichage d'un résultat selon l'option dynamqiuement choisi dans un textarea

par Cypher_PHP » 25 juil. 2008, 11:20

oh encore
excuse moi

ces deux derniers messages sont postés par moi
encore désolé

par Invité » 25 juil. 2008, 11:19

oups désolé c'est moi qui vient de poster. une déconnexion imprévue

à plus

par Invité » 25 juil. 2008, 11:18

ca marche

merci beaucoup
je comprends mieux

par guilt92 » 25 juil. 2008, 10:30

Oui, c'est possible :)

Il te suffit de jouer avec l'attribut selected quand tu crées ta liste rne :

il faut que tu décompose ta création d'option pour faire un truc du genre :
<?php
echo "<option value=".$result['rne'];
if(isset($_POST['rne']) && $result['rne']==$_POST['rne']) echo " selected='selected'";
echo ">........";
?>
Comme ca si la valeur POST et définie et qu'elle correspond à une option du select, elle sera sélectionnée par défaut ;)

par Cypher_PHP » 25 juil. 2008, 10:24

rebonjour

malheureusement non, je ne connais rien l'AJAX et très peu de JS donc pour l'isntant, je me concentre sur PHP.

j'ai presque réussi : il manque un truc. en fait, quand je clique un rne, le resultat s'affiche mais le problème est que la liste se recharge pour s'initialiser.
donc j'aimerais que le fait de cliquer un rne soit inchangée au moment de l'affichage du résultat
c'est possible??
merci encore
<?php
include('inc_mysql.php');
?>
<html>
<head>
</head>
<body>
<table>
<form method="POST" action="" name="choix_rne" id="choix_rne" >
<tr>
<td><span style="font-weight: bold;">RNE de l'établissement </span>: <small><span style="font-style: italic;">le rne ne s'affichera pas sur le livret</span></small></td>
<td><SELECT name="rne" id="rne" onchange="document.forms['choix_rne'].submit();">
<?php

//connexion au serveur de la base
mysql_connect($dbhost, $dblogin, $dbpass)
or die("erreur de connexion au serveur $dbhost");

//connexion à la base de données
mysql_select_db($dbbase) or die("erreur de connexion a la base de donnees");
$sql = "SELECT rne FROM $dbtable2 order by rne";
$query = mysql_query($sql)or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
while($result=mysql_fetch_array($query)){
echo "<option value=".$result['rne'].">".$result['rne']."</option> ";
}
mysql_free_result($query);
?>
  </SELECT> </td>
</tr>
<tr>
<td><span style="font-weight: bold;">Nom de l'établissement </span>:</td>
<td><?php


$sql2 = "SELECT rne, dept, etprco, uaidnc FROM $dbtable2 WHERE rne = '$rne'";
$query2 = mysql_query($sql2)or die('Erreur SQL !<br />'.$sql2.'<br />'.mysql_error());

if($result2=mysql_fetch_array($query2))
{
$rne = $_POST['rne'] ;
echo $result2['etprco']." ".$result2['uaidnc']."( ".$result2['dept']." ) ". $result2['rne']."<br />";
}



mysql_free_result($query2);

?></td>
</tr>
</table>
</form>
</body>
</html>

par chrislabricole » 23 juil. 2008, 14:41

Exact, se qui pose problème avec Javascript, c'est surtout le taille du fichier Javascript au final, et le temps d'exécution, avec PHP, c'est le rechargement, et avec AJAX bah... les 2 avantages des 2 sont réunis :lol:

par guilt92 » 23 juil. 2008, 14:33

Petite précision :
C'est la solution javascript qui peut présenter un problème de performance en cas de tables importantes.
La solution php ne pose aucun problème, si ce n'est celui du rafraichissement, et est peut être la plus simple à mettre en oeuvre :)

par chrislabricole » 23 juil. 2008, 14:31

Très peu ?? euh... peut-être pas....

C'est plus agréable d'avoir une liste qui change toute seule sans recharger la page que le contraire...

La meilleur des solutions est ajax, après celle que tu as choisie, et la solution tout en javascript

Mais c'est vrai que si t'es débutant, garde ta solution et tu reviendra plus tard sur ça et tu mettras en place AJAX.
Par contre, si t'as le courage et que t'as pas peur, tu peux suivre le tuto de Cyrano (Lien ci-dessus), il est très fais, les sources sont très très bien commentées, à ce moment là, tu peux les modifier pour l'adapter à se que tu veux faire. :)

par Invité » 23 juil. 2008, 14:27

merci beaucoup

je vais étudier et bien sûr je vais prendre PHP 100% malgré leur défaut de performance.
franchement, on ne voit que très peu de différence dans les performances...

merci ;)

par guilt92 » 23 juil. 2008, 13:53

Bonjour,

Cela ne pourra pas fonctionner comme cela : si je ne me trompe pas, $rne devrait correspondre à la valeur passée dans la premiere liste ? Sauf que ton $_POST["rne"] ne pourra être récupéré que si il y a un rafraîchissement de la page suite à un submit du formulaire (sur le onChange du select)

Pour faire ce que tu veux tu as 3 possibilités :

* Tout en PHP, inconvénient : la page se rafraichit au moment du choix
* Tout en javascript, inconvénient : il faut stocker toutes les valeurs de ta table dans un tableau en js => performance pas terrible
* En AJAX, idéal mais plus compliqué si tu es débutant

Regarde le tutorial de Cyrano sur les listes déroulantes liées, qui au final traite du même sujet que ton problème. Il présente les 3 solutions, a toi de voir laquelle tu préfères.

par Invité » 23 juil. 2008, 13:39

oui c'est ce que j'ai pensé et je viens d'ajouter mais ce ne bouge pas donc
il manque encore des éléments mais je ne sais quoi mettre ni où...


voici mon code incomplet:
<?php
include('inc_mysql.php');
?>
<html>
<body>
<table>
<form method="post" action="beta2_result2.php" name="form_livret">
<tr>
<td><span style="font-weight: bold;">RNE de l'établissement </span>: <small><span style="font-style: italic;">le rne ne s'affichera pas sur le livret</span></small></span></td>
<td><SELECT name="list_rne" onchange="this.form.elements['list_rne'].options[this.form.elements['list_rne'].value">
<?php

//connexion au serveur de la base
mysql_connect($dbhost, $dblogin, $dbpass)
or die("erreur de connexion au serveur $dbhost");

//connexion à la base de données
mysql_select_db($dbbase) or die("erreur de connexion a la base de donnees");
$sql = "SELECT rne FROM $dbtable2 ";
$query = mysql_query($sql)or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
while($result=mysql_fetch_array($query)){
echo "<option value=".$result['rne'].">".$result['rne']."</option> ";
}
?>
  </SELECT> </td>
</tr>
<tr>
<td><span style="font-weight: bold;">Nom de l'établissement </span>:</td>
<td><?php
$rne = $_POST['rne'] ;
$sql = "SELECT rne, etprco, uaidnc FROM $dbtable2 where rne ='$rne' ";
$query = mysql_query($sql)or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
//$rne = $_POST['rne'] ;
$result=mysql_fetch_array($query);
echo $result['etprco']." ".$result['uaidnc'];

?></td>
</tr>
</table>
</form>
</body>
</html>

par vince_weed » 23 juil. 2008, 09:50

En effet c'est typiquement une action à réaliser en JS.
Le plus simple je pense serai d'appeler une fonction javascript sur un évenement OnChange de ta liste déroulante et de modifier la valeur du textearea dans cette fonction.

Affichage d'un résultat selon l'option dynamqiuement choisi

par Cypher_PHP » 23 juil. 2008, 09:03

bonjour

je sollicite vos aides..
je ne trouve pas comment afficher un résultat après avoir choisi l'option dans la liste dynamique
il s'agissait d'afficher les noms d'école après avoir choisi le numéro d'établissement dans la liste.

je pense que c'est lié à un manque d'interactivité donc le java script est indispensable, exact ? sinon?

...
<tr>
<td><span style="font-weight: bold;">RNE de l'établissement </span>: <small><span style="font-style: italic;">le rne ne s'affichera pas sur le livret</span></small></span></td>
<td><SELECT name="list_rne">
<?php

//connexion au serveur de la base
mysql_connect($dbhost, $dblogin, $dbpass)
or die("erreur de connexion au serveur $dbhost");

//connexion à la base de données
mysql_select_db($dbbase) or die("erreur de connexion a la base de donnees");
$sql = "SELECT rne FROM $dbtable2 ";
$query = mysql_query($sql)or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
while($result=mysql_fetch_array($query)){
echo "<option value=".$result['rne'].">".$result['rne']."</option> ";
}
?>
  </SELECT> </td>
</tr>
<tr>
<td><span style="font-weight: bold;">Nom de l'établissement </span>:</td>
<td><textarea cols="50" rows="1" name="<?php
$sql = "SELECT rne, etprco, uaidnc FROM $dbtable2 where rne ='$rne' ";
$query = mysql_query($sql)or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$rne = $_POST['rne'] ;

if ($result=mysql_fetch_array($query)) {
		echo $result['etprco']." ".$result['uaidnc'];
}
;
?>"></textarea></td>
</tr>
...
merci beaucoup