Lenteur pour afficher ma page. [Résolu]

Signaler
Messages postés
68
Date d'inscription
vendredi 4 juin 2004
Statut
Membre
Dernière intervention
1 décembre 2012
-
Messages postés
68
Date d'inscription
vendredi 4 juin 2004
Statut
Membre
Dernière intervention
1 décembre 2012
-
Bonjour à tous ( toutes ,

j'ai un petit soucis de lenteur quand j'adapte une zone select qui récupère les datas via une db.
Si je place une zone texte, l'affichage de la page est immédiat. Par contre si je place une zone déroulante avec connexion à la db, je dois attendre 5 à 8 secondes avant que la page s'affiche.
Auriez-vous une idée sur le fait que ce soit si lent ?
D'autant que j'utilise souvent ce select et que je ne rencontre aucun problème dans les autres prog.
Ais-je écrit le code à l'envers ??
Code ci-dessous voir entre les *************
Merci pour votre aide.

<html>
<head>
<meta http-equiv= "Content-Type" content="text/html; charset=windows-1252">
<title>Gestion des visiteurs</title>
</head>

<?php

if(!mysql_connect("localhost","root",""))
{
echo "".$TEXT['visiteur-error']."
";
die('error');
}
mysql_select_db("gestion_loge");
?>



<form action="<?php echo basename($_SERVER['PHP_SELF']); ?>" method="get">
Gestion des Visiteurs,

----

,
Nom,
:,
,
Plaque,
:,
,
,

----

,
Société,
:,
<select size="1" name="societe_visiteur">

<option value="Seneffe">Seneffe</option>
<option value="Moustier">Moustier</option>
<option value="Fleurus">Fleurus</option>
</select>,
Personne Int. Visitée,
:,
*************************************************************************
<select size="1" name="int_visite">
<?php
$liendb = mysql_connect(root,localhost,"");
mysql_select_db (gestion_loge);
$SQL = "SELECT * FROM users";
$res = mysql_query($SQL);
while($val=mysql_fetch_array($res)) {
echo "<option>".$val["nomprenom"]."</option>\n";
}
?>
</select>
*************************************************************************,
,

----

,
Société2,
:,
,
Personne Int. Visitée2,
:,
,
,

----

,
Heure ,
:,
:

(Encodage Hors-ligne),
Personne Ext. Visitée,
:,
, ,

----

,
Type,
:,

Visiteur

- Fournisseur
- Autre
,
,

----

">
">,

----

,
Remarque : <textarea rows="2" name="remarque_visiteur" cols="65"></textarea>,
,

----

,

,
,

----

,
<table border=1 cellpadding=0 cellspacing=0 width="641" id="table5">----, Nom_visiteur </td>
Société_visiteur,
Plaque_Visiteur,
Personne Visitée,

<?
if ($_REQUEST['nom_visiteur'] ! = \"\")
{
// if ($_REQUEST['jahr'] == \"\") {
// $jahr = \"NULL\";
//} else {
$jahr = intval($_REQUEST['jahr']);
//}
$nom_visiteur = mysql_real_escape_string($_REQUEST['nom_visiteur']);
$type = mysql_real_escape_string($_REQUEST['R1']);
$societe_visiteur = mysql_real_escape_string($_REQUEST['societe_visiteur']);
$societe_visiteur2 = mysql_real_escape_string($_REQUEST['societe_visiteur2']);
$plaque_visiteur = mysql_real_escape_string($_REQUEST['plaque_visiteur']);
$int_visite = mysql_real_escape_string($_REQUEST['int_visite']);
$ext_visite = mysql_real_escape_string($_REQUEST['ext_visite']);
$remarque_visiteur = mysql_real_escape_string($_REQUEST['remarque_visiteur']);
$datedujour = mysql_real_escape_string($_REQUEST['datedujour']);
$heuredujour = mysql_real_escape_string($_REQUEST['heuredujour']);
mysql_query(\"INSERT INTO visiteur (date_entree,
heure_entree,
nom_visiteur,
type,
societe_visiteur,
societe_visiteur2,
plaque_visiteur,
int_visite,
ext_visite,
remarque_visiteur)
VALUES('$datedujour',
'$heuredujour',
'$nom_visiteur',
'$type',
'$societe_visiteur',
'$societe_visiteur2',
'$plaque_visiteur',
'$int_visite',
'$ext_visite',
'$remarque_visiteur')\");
}

if ($_REQUEST['action'] == \"del\") {
$id = intval($_REQUEST['num_visiteur']);
mysql_query(\"UPDATE `gestion_loge`.`visiteur` SET `statut` = 'OUT',`heure_sortie` = '$heuredujour' WHERE `visiteur`.`num_visiteur`={$_REQUEST['num_visiteur']};\");

}
$result=mysql_query(\"SELECT num_visiteur,nom_visiteur,societe_visiteur,societe_visiteur2,plaque_visiteur,int_visite FROM visiteur WHERE statut='IN';\");
$i=0;
while( $row=mysql_fetch_array($result) )
{
if($i>0)
{
echo \"----
\";
echo \", \";
echo \"\";
}
echo \"----
\";
echo \"".$row['nom_visiteur'].", \";
echo \"".$row['societe_visiteur'].", \";
echo \"".$row['plaque_visiteur'].", \";
echo \"".$row['int_visite'].", \";
echo \"Sortie, \";
// echo \"Edit, \";
echo \", \";
echo \"\";
$i++;
}
?>

</td>
<td width="11"> </td>
</tr>
</table>



</html>

8 réponses

Messages postés
68
Date d'inscription
vendredi 4 juin 2004
Statut
Membre
Dernière intervention
1 décembre 2012

Trouvé !!!!
echo "<td align=center>".$row['nom_visiteur']." ".$row['nom_societe']."</td>";

Maintenant ça fonctionne.

Merci à tous
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
12
Ton hebergeur est-ce du gratuit style free ?


while($val=mysql_fetch_array($res)) {
echo "<option>".$val["nomprenom"]."</option>\n";
}

c'est le select en question ?
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
12
$result=mysql_query("SELECT num_visiteur,nom_visiteur,societe_visiteur,societe_visiteur2,plaque_visiteur,int_visite FROM visiteur WHERE statut='IN';");

pourquoi pas faire SELECT * FROM visiteur WHERE statut='IN'
c'est pareil
Messages postés
68
Date d'inscription
vendredi 4 juin 2004
Statut
Membre
Dernière intervention
1 décembre 2012

Hello cod57,

tu as tout à fait raison pour le select. J'ai modifié.
Pour info, je travaille sur un xampp installé en pc local. Donc pas d'hébergeur via le net.Cela devrait être d'autant plus facile et rapide.
Je ne m'explique pas pourquoi il me faut autant de temps pour afficher ma page. Alors que dans d'autres pages j'utilise aussi une zone nom et cela est très rapide.

Une idée ?
Merci
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
25
Salut,


$liendb = mysql_connect(root,localhost,"");
mysql_select_db (gestion_loge); 

A quoi cela sert il alors que tu effectue déjà la connexion en début de script ?


$SQL = "SELECT * FROM users";
$res = mysql_query($SQL);

Inutile puisque tu n'utilises que le champ "nomprenom"
=> SELECT nomprenom FROM users

Combien y a t-il d'enregistrements dans ta table ?
et combien de champs ?

Cordialement,

Kohntark -
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
12
re:

if ($_REQUEST['nom_visiteur'] != "") ligne 134

!= c'est plutôt !==
moi je propose

if(isset($_REQUEST['nom_visiteur']) && !empty($_REQUEST['nom_visiteur']) )

puis comme l'a remarqué Kohntark

deux fois le mysql_connect() et mysql_select_db()

ligne 54,53 inutiles

encore une remarque "<option>".$val["nomprenom"]."</option>\n";

c'est pas

"<option value="".$val["nomprenom"."">".$val["nomprenom"]."</option>\n";

sinon ton select il renvoit rien

a++
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
12
erreur c'est

echo '<option value="'.$val['nomprenom'].'">'.$val['nomprenom'].'</option>\n';

je me suis planté avec tout ces "
Messages postés
68
Date d'inscription
vendredi 4 juin 2004
Statut
Membre
Dernière intervention
1 décembre 2012

Merci à tous les deux pour vos réponses et conseils.
Par contre, j'ai remplacé les lignes Par un include et la lenteur à disparu...'cherchez l'erreur'
---$liendb = mysql_connect(root,localhost,"");
---mysql_select_db (gestion_loge);

Cependant, j'ai retiré ces deux lignes car effectivement il y a redondance dans la connexion DB.
Pour l'option value, mon code fonctionne. J'ai malgré tout suivi votre code et expérience.
> echo "<option>".$val["nomprenom"]."</option>\n";
remplacé par ==> echo '<option value="'.$val['nomprenom'].'">'.$val['nomprenom'].'</option>\n';

Mais pouvez-vous m'expliquer la différence entre les deux.


Pour le test de la zone = "" j'allais modifier ce code par celui que vous avez inscrit. En fait j'ai récupérer ce bout de code dans la collection cd de l'interface phpmyadmin de xampp.

Dernière demande:
Pouvez-vous me dire comment concaténer deux zones par rapport au code ci-dessous. j'aimerais afficher la zone nom_visiteur et nom_societe.
J'ai déjà testé quelques solutions mais ça ne fonctionne pas.
}
echo "<td align=center>".$row['nom_visiteur']."</td>";

Un grand merci pour votre aide et ce forum qui m'a déjà bien dépatouillé quand les problèmes surviennent.