Aller au contenu

[RESOLU] Refresh avec PHP/MySQL/IE6


ggbce

Messages recommandés

J'ai un p'tit problème de rafraîchissement d'une page fait en PHP. Cette page sert à mettre à jour les données listées dans un tableau qui récupère les données depuis une BD MySQL.

J'explique en détails:

Le tableau est une petite inventaire de pièce que je me suis fait, lorsque je veux mettre à jour les informations d'une ligne, je clique sur un bouton "modifier" qui appel une seconde page en pop-up et j'édite les données de celle-ci. Lorsque terminé je clique sur mon bouton modifier (submit) qui met à jour la BD puis un window.close() de ce pop-up. Alors les informations modifiés sont mis à jour (et correctement dans la BD et dans le tableau !!! Mais si je reclique sur mon bouton modifier pour "ré-éditer" cette ligne, ce sont les anciennes valeurs qui sont toujours là... c'est vraiment bizz. :transpi:

J'ai redémarré les services et le serveur mais ça persiste. J'utilise le même type de form sur d'autre serveur et ça foncitonne pourtant.

-------------------------------------

Voilà le code pour mon tableau (page principale) qui marche bien:

<html>
<head>
<STYLE>.largetableau  {font-size:9px;font-family:Verdana;color:maroon;}</STYLE>
<title>Liste d'inventaire</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFF99" text="maroon">
<table border="0" width="100%" height="100%">
<tr>
<td width="100%" valign="top" height="100%">
<p align="center">Liste d'inventaire</p>
<table border="1" width="100%" class="largetableau" cellspacing="0">
<tr>
<td bgcolor="#CCCC99" width="75"><b>N° pièce</b></td>
<td bgcolor="#CCCC99" width="70"><b>Equivalent</b></td>
<td bgcolor="#CCCC99" width="35"><b>Type</b></td>
<td bgcolor="#CCCC99" width="35"><b>Qté</b></td>
<td bgcolor="#CCCC99"><b>Description</b></td>
<td bgcolor="#CCCC99" width="50"><b>N° tiroir</b></td>
<td bgcolor="#CCCC99" width="50"><b>Prix</b></td>
<td width="40"> <img src="ajouter.gif" border="0" title="Ajouter" onclick="window.open('add_inv_electro.php','_blank','top=0, left=0, width=500, height=320, status=yes')" style="cursor:hand"></td>
</tr>
<?php
mysql_connect('localhost', 'user', 'password') or die('Impossible de se connecter au serveur MySQL');
mysql_select_db('bdd') or die('Base de données inexistante');
$sql = "SELECT id,no_piece,type_piece,description,qte,equivalent,tiroir,prix FROM inv_electro ORDER BY no_piece;";
$req = mysql_query($sql) or die ('Erreur de lecture de la table');
while($data = mysql_fetch_assoc($req))
{
$nte = strtolower($data['equivalent']);
echo ('<tr><td>'.$data['no_piece'].'</td><td><a href="http://mon.serveur.com/nte/'.$nte.'.pdf" target="_blank">'.$data['equivalent'].'</a></td><td>'.$data['type_piece'].'</td><td>'.$data['qte'].'</td><td>'.$data['description'].'</td><td>'.$data['tiroir'].'</td><td>'.$data['prix'].'</td><td><img src="modifier.gif" border="0" title="Modification" onclick="window.open(\'mod_inv_electro.php?idm='.$data['id'].'\',\'_blank\',\'top=0, left=0, width=500, height=320, status=yes, location=yes\')" style="cursor:hand"> <img src="effacer.png" border="0" title="Suppression" onclick="window.open(\'del_inv_electro.php?idd='.$data['id'].'\',\'_blank\',\'top=0, left=0, width=330, height=210\')" style="cursor:hand"></td></tr>');
}
mysql_close();
?>	
</table>
</td>
</tr>
<tr>
<td width="100%" align="right">
<form>
<input type="button" value="Fermer" onclick="window.close()">
</form>
</td>
</tr>
</table>
</body>
</html>

Les pages pour ajouter et supprimer fonctionnent très bien.

Et voici la page pour modifier (mod_inv_electro.php) qui me cause problème lors de la ré-ouverture après l'avoir modifié:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Modification d'une pièce</title>
</head>
<body bgcolor="#CCCCFF" onunload="parent.window.opener.location.reload();window.close()">
<font face="Courier New" color="maroon">
<p>Modification d'une pièce</p>
<p>
<?php 
mysql_connect('localhost', 'user', 'password') or die('Impossible de se connecter au serveur MySQL');
mysql_select_db('bdd') or die('Base de données inexistante');
$sql = "SELECT id,no_piece,type_piece,description,qte,equivalent,tiroir,prix FROM inv_electro WHERE id='$idm';";
$req = mysql_query($sql) or die ('Erreur de lecture de la table');
while($data = mysql_fetch_assoc($req))
{
echo ('<form method="post" action="mod_inv_electro.php?idm='.$data['id'].'"><font color="#000000"><b>N. pièce:</b> '.$data['no_piece'].' <b>('.$data['type_piece'].')</b></font><hr><b>Équivalent:</b><br><input type="text" name="equivalent" size="25" maxlength="25" value="'.$data['equivalent'].'"><br><b>description:</b><br><input type="text" name="description" size="70" maxlength="100" value="'.$data['description'].'"><br><table border="0" width="100%"><tr><td><b>Quantité:</b><br><input type="text" name="qte" size="5" maxlength="5" value="'.$data['qte'].'"></td><td><b>N. tiroir:</b><br><input type="text" name="tiroir" size="5" maxlength="5" value="'.$data['tiroir'].'"> <font face="Verdana" size="-2" color="#800000"><i>(ex.: A-1)</i></font></td><td><b>Prix:</b><br><input type="text" name="prix" size="7" maxlength="7" value="'.$data['prix'].'"></td></tr></table><input type="submit" value="Modifier"><input name="envoi" type="hidden" value="TRUE"><br></form>');
}
?>
</font>
<font face="Verdana" size="-2" color="red"><b>
<?php
$envoi = $_POST['envoi'];
$equivalent = $_POST['equivalent'];
$description = $_POST['description'];
$qte = $_POST['qte'];
$tiroir = $_POST['tiroir'];
$prix = $_POST['prix'];
if ($envoi)
{
global $equivalent;
global $description;
global $qte;
global $tiroir;
global $prix;
if (empty($equivalent)){$equivalent = "nd";}
$equivalent = strtoupper($equivalent);
if (empty($description)){$description = "description non disponible";}
if (empty($tiroir)){$tiroir = "N/A";}
$tiroir = strtoupper($tiroir);
if (empty($qte)){$qte = "0";}
if (empty($prix)){$prix = "0.00";}
mysql_connect('localhost', 'user', 'password') or die('Impossible de se connecter au serveur');
mysql_select_db('bdd') or die('Base de données inexistante');
$sql = "UPDATE inv_electro SET equivalent='$equivalent',description='$description',qte='$qte',tiroir='$tiroir',prix='$prix' WHERE id='$idm';";
mysql_query($sql) or die ('Erreur d\'écriture dans la table');
print ("Modifié avec succès !");
mysql_close();
}
?>	
</b>
</font>
</p>
</body>
</html>

-----------------------------------------------------

Alors la procédure fonctionne vraiment... car les données sont envoyées à la BD et sont mis à jour dans mon tableau mais ne le sont pas "au retour" dans la page de modification (mod_inv_electro.php)

-----------------------------------------------------

Lien vers le commentaire
Partager sur d’autres sites

Bon, le problème n'est pas au niveau du code PHP ni au niveau de MySQL, mais semble provenir d'un bug assez étrange avec Internet Explorer et... un In/OUt avec mon Firewall Linksys.

J'explique quand même car je crois que ça peut causer d'autres problèmes similaires aux autres.

Le problème se produit uniquement lorsque j'utilise mon poste (ou un autre) qui est local derrière mon firewall/router Linksys avec internet Explorer (version 6.0 SP1 testée uniquement). Avec FireFox sur ces même postes ça fonctionne bien. Si j'essais depuis un post de l'extérieur (de Internet, depuis un autre réseau) ça fonctionne très bien avec Internet Explorer et FireFox !

Assez Bizzz vous allez dire.... moi aussi je trouve :-D

Bon second test que je fais depuis mon poste local avec IE6, au-lieu de taper le nom du site qui doit utiliser l'adresse IP de mon router avec une redirection du port 443 (note: en passant je suis en HTTPS pour cette page), j'écris l'adresse IP du réseau local du serveur Apache... le problème persiste !?!?!

Donc logiquement le problème ne provient pas de mon router Linksys car je contacte directement le serveur sans intermédiaire (qu'à part mon hub pour relier les fils :francais: )

La seule chose que je peux voir comme problème c'est que l'exécution de PHP se fait trop rapidement ou se garde en cache à un endroit lorsque local (car avec IE d'un poste distant ça ne fait pas le problème)... mais je sais pas. Quelqu'un saurait-il ???

----------------------------------------

Si un Admin voit mon message, je sais pas si c'est approprié de le garder ici ou bien de le déplacer vers Linux ou vers networking ...

---------------------------------------

Lien vers le commentaire
Partager sur d’autres sites

Finalement ce n'est pas sur tous les postes locaux que le problème apparaît avec IE6 (pourtant le même Windows 2000 et même updates...). Alors faut inclure ça dans la liste des problèmes "mystères" à Bill Gates :oops:

J'ai repris ce sujet ici:

http://www.pcinpact.com/forum/index.php?showtopic=74375&hl=

Il a été résolu en modifiant les options de la cache de automatique vers actualiser à chaque visite de la page !

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...