2008-10-10 10 views
0

Le code ci-dessous bloque IE6 pour une raison quelconque. Tout comme IE est horrible, je n'ai jamais vu ça auparavant. Quelqu'un a-t-il une idée?Le script PHP se bloque IE6

<div id="edit"> 
<?php 

$a = $_POST['category']; 
if ($a == "") 
{ 
    $a = $_GET['category']; 
} 

$result = mysql_query("SELECT * FROM media WHERE related_page_id = $a && type= 'copy'"); 

?> 

<table width="460px;"> 
    <tr> 
     <td>Item</td> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
     <td>Associated Images</td> 
    </tr> 
    <tr> 
     <td colspan="5">&nbsp;</td> 
    </tr> 
<?php 
while($row = mysql_fetch_array($result)) 
{ 
    echo "<tr style='vertical-align:top'><td>$row[title]</td>"; 
    echo "<td><a href='addimage.php?id=$row[id]&&category=$a'>Add image/file</a>"; 
    echo "<td><a href='change.php?id=$row[id]&&category=$a'>edit</a></td>"; 
    echo "<td><a href='delete.php?id=$row[id]&&category=$a'>delete</a></td>"; 
    echo "<td>"; 

    $id = $row['id']; 
    $result1 = mysql_query("SELECT * FROM media WHERE assets = $id"); 
    while($row1 = mysql_fetch_array($result1)) 
    { 
     echo "<a href='$row1[path]'>$row1[title]</a> | <a href='delete.php?id=$row1[id]&&category=$a'>remove?</a><br />"; 
    } 
    echo "</td></tr>"; 
} 
if($a == 1 || $a == 3 || $a == 5){ 
}else{ 
    echo "<tr><td colspan='5'>&nbsp;</td></tr>"; 
    echo "<tr><td colspan='5'><a href='change.php?id=0&&category=$a'>New Item</a></td></tr>"; 
} 

?> 
</div> 
</div> 
</div> 
</table> 
</body> 
</html> 
+2

Veuillez publier le code HTML généré car il bloque IE, pas le code PHP. –

+0

Vous avez vraiment besoin d'utiliser une requête paramétrée (voir la bibliothèque MDB2 PEAR) ou d'appeler mysql_real_escape_string() sur $ a avant de l'inclure dans une chaîne de requête, ou vous vous laisserez ouvrir aux injections SQL. Sinon, si c'est toujours supposé être un nombre, appelez d'abord intval(). – Randy

Répondre

0

Le code généré ne plante pas IE6 pour moi. Il pourrait s'agir probablement de l'une de vos feuilles de style ou de votre javascript, ou peut-être que c'est juste ma configuration (IE6 est utilisé ici comme navigateur autonome).

En outre, pourquoi avez-vous ces doubles esperluettes? Êtes-vous sûr de ne pas vouloir utiliser &amp; à la place?

+1

D'accord. C'est le HTML qui plante le navigateur, pas le PHP. – skeen

0

ici est le code généré:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 

     <script type="text/javascript" src="../javascript/tiny_mce/tiny_mce.js"></script> 
    <script type="text/javascript"> 
     tinyMCE.init({ 
      mode : "textareas", 
      theme : "advanced" 
     }); 
    </script> 


    <title>Chapman Corp Site - CMS</title> 
    <link rel="stylesheet" href="../css/admin.css" type="text/css" media="screen" title="Chapman" charset="utf-8" /> 
     <!--[if lte IE 6]> 
<link rel="stylesheet" href="../css/ie6.css" type="text/css" media="screen" /> 
<script type="text/javascript" src="../javascript/unitpngfix.js"></script> 
<![endif]--> 

</head> 
<body> 
<div id="page"> 
<div id ="content"> 
<p><a href="index.php">Home</a></p><div id="edit"> 

<table width="460px;"> 
    <tr> 
     <td>Item</td> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 

     <td>&nbsp;</td> 
     <td>Associated Images</td> 
    </tr> 
    <tr> 
     <td colspan="5">&nbsp;</td> 
    </tr> 
<tr style='vertical-align:top'><td>Home</td><td><a href='addimage.php?id=77&&category=1'>Add image/file</a><td><a href='change.php?id=77&&category=1'>edit</a></td><td><a href='delete.php?id=77&&category=1'>delete</a></td><td><a href='../uploads/footer.jpg'>footer.jpg</a> | <a href='delete.php?id=88&&category=1'>remove?</a><br /></td></tr></div> 

</div> 
</div> 
</table> 
</body> 
</html> 
+0

Drew: supprime la ligne puis vérifie si la page est toujours bloquée. – Tom

6

Je ne sais pas si c'est la raison de l'accident, mais l'étiquette td dans la ligne

echo "<td><a href='addimage.php?id=$row[id]&&category=$a'>Add image/file</a>"; 

est pas fermé. Aussi:

</div> 
</div> 
</div> 
</table> 

devrait être:

</table> 
</div> 
</div> 
</div> 

De plus - pour des raisons de sécurité - vérifier si $a est numérique avant de l'utiliser dans la requête ci-dessous.

$a = $_POST['category']; 
if ($a == "") 
{ 
     $a = $_GET['category']; 
} 

$result = mysql_query("SELECT * FROM media WHERE related_page_id = $a && type= 'copy'");