l'affichage d'un select rame

l'affichage d'un select rame - PHP - Programmation

Marsh Posté le 14-11-2004 à 19:52:26    

Bonsoir tout le monde!
 
Lorsque je rajoute ce morceau de code php dans le select suivant, l'affichage (IE) rame énormément.
 
<select style="width:192px;" name="projet" id="projet"/>  
<option></option>
<?php
for ($i=0; i<$num_proj; $i++)  
{                echo '<option>'.$proj[$i].'</option>';
}      
?>      
</select>  
 
Quelqu'un sait me dire pourquoi?
 
Est-ce que je peux contourner ce problème?
 
Merci d'avance! ;)

Reply

Marsh Posté le 14-11-2004 à 19:52:26   

Reply

Marsh Posté le 14-11-2004 à 19:53:44    

Code :
  1. <option></option>


Qu'est ce que ca fout là ça? [:prodigy]
 

Code :
  1. <select style="width:192px;" name="projet" id="projet"/>


Vire moi ce slash [:prodigy]

Reply

Marsh Posté le 14-11-2004 à 20:37:11    

la 1ère balise de l'option me servira à écrire "Selectionnez..." par exemple.
J'ai viré le slash. Merci.
Mais mon problème persiste, sauf si je vire ma boucle for.

Reply

Marsh Posté le 14-11-2004 à 20:40:02    

rmm a écrit :

la 1ère balise de l'option me servira à écrire "Selectionnez..." par exemple.
J'ai viré le slash. Merci.
Mais mon problème persiste, sauf si je vire ma boucle for.


ca rame que sous IE?
 
edit: + url de la page


Message édité par Ayuget le 14-11-2004 à 20:40:13
Reply

Marsh Posté le 14-11-2004 à 20:40:32    

t'as quoi en sortie (pas le script, mais la page qui arrive dans MSIE)


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 14-11-2004 à 20:47:15    

Pour l'instant mais tests n'ont lieu que sur IE.
 
J'ai le haut de la page qui s'affiche (1 image et un texte tout simple) ensuite, j'ai deux input et le select en question qui devraient apparaître. Seulement, ça fait plus que ramer, ça bloque.
 
J'ai oublié de précisé que mes variables viennent d'une bd :
 
mysql_select_db($database_Conn, $Conn);
$proj_sql = ' SELECT DISTINCT projet FROM  users ';
 
$rs_proj = mysql_query($proj_sql, $Conn) or die(mysql_error());
$proj = mysql_fetch_array($rs_proj);
 
$num_proj = mysql_num_rows($rs_proj);
 
Pour l'instant, $num_proj = 1 et $proj[0]=gestion de projet
Merci

Reply

Marsh Posté le 14-11-2004 à 21:14:10    

A part le fait que la syntaxe soit bizarre (parce que le parcours de résultat d'une bd, c'est pas comme tu le fais, un mysql_fetch_* => 1 seul résultat, c'est là-dessus qu'il faut boucler), combien de résultat t'es supposé obtenir ? un seul ?

Reply

Marsh Posté le 14-11-2004 à 21:19:05    

pour l'instant, dans ma bd, j'ai un seul intitulé de projet, donc je n'obtiens qu'un résultat, mais ensuite je testerai plusieurs projets.  
Je ne comprend par pourquoi ma syntaxe est bizarre.

Reply

Marsh Posté le 14-11-2004 à 21:24:11    

Désolé, je suis lamentable! j'ai oublié un $ dans ma boucle for!
Merci qd meme.
J'accepte néanmoins une proposition de meilleur syntaxe pour le parcours de ma bd.

Reply

Marsh Posté le 14-11-2004 à 21:27:30    

rmm a écrit :


Je ne comprend par pourquoi ma syntaxe est bizarre.


 
Interromps moi si je me trompe :D
 
Tu executes une requête, tu lis un seul résultat puis tu crées une boucle pour afficher les résultats :)
 
Tu sens pas comme un problème là ?
 
Bref, te casses pas la tête

Code :
  1. while ($proj = mysql_fetch_array($rs_proj)){
  2.   echo '<option value="...">'.$proj[0].'</option>';
  3. }


 
à moins que tes résultats soient toujours renvoyés en une seule ligne :D

Reply

Marsh Posté le 14-11-2004 à 21:27:30   

Reply

Marsh Posté le 14-11-2004 à 21:43:17    

Là je t'avoue je suis perdu.  
J'obtiens deux valeurs avec ma requête SQL ("Gestion de projet" et "Economie" )
Quand, j'exécute mon "for", j'obtiens seulement "Gestion de projet"
Quand j'exécute ton "while", j'obtiens seulement "Economie".

Reply

Marsh Posté le 14-11-2004 à 21:50:40    

Vire ton $proj = mysql_fetch_array($rs_proj); :)

Reply

Marsh Posté le 14-11-2004 à 21:59:00    

ok, je viens de comprendre!
Fatigué moi aujourd'hui.  
en tout cas MERCI :-)

Reply

Marsh Posté le 14-11-2004 à 23:06:21    

Utilise mysql_unbuffered_query(...);
Ca va plus vite lorsqu'il y a des grosses requettes.
Mais a ne utiliser dans des requette croiser.
 

Code :
  1. //Fonctionnera pas.
  2. $b = mysql_unbuffered_query(requette)
  3. while($data = mysql_fetch_array()){
  4.    requette ...
  5. }


Message édité par Berceker United le 14-11-2004 à 23:13:18
Reply

Marsh Posté le 15-11-2004 à 17:52:14    

un mysql_result("select count(*) from ta_table",0,0) ira beaucoup plus vite qu'un mysql_num_rows de ta requette

Reply

Marsh Posté le 15-11-2004 à 18:32:52    

paulmuadib a écrit :

un mysql_result("select count(*) from ta_table",0,0) ira beaucoup plus vite qu'un mysql_num_rows de ta requette


Pas toujours.
Ceci marche seulement s'il souhaite récupérer uniquement le nombre d'enregistrement par contre s'il doit récupérer des informations plus le nombre d'enregistrement mysql_num_row est utile afin de pas faire une requette pour récupérer les résultat et une autre pour récupérer le nombre.

Reply

Marsh Posté le 16-11-2004 à 09:34:02    

je parle essentiellement pour des resultats comprenant un nombre de lignes important
 
je préfère effectuer 2 requetes et ainsi gagner un temps non négligeable

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed