2009-09-03 2 views
0

Я новичок в php и MySQL. У меня есть сайт, на котором пользователь может выбрать состояние и отображать больницы в этом состоянии. Он хорошо работает в FireFox для всех состояний, но в IE, когда у меня есть состояние с несколькими сотнями больниц, экран мигает, и в итоге я получаю сообщение о том, что страница не может быть отображена. Для небольших штатов с несколькими больницами запрос отлично работает в IE.Ошибка MySQL иногда возникает при использовании Internet Explorer

Опять же, я новичок в этом, поэтому любые предложения были бы весьма признательны. Вот код:

<form action="redirect_hosp.php" method="get"> 

<?php 

$link = mysql_connect('SERVERNAME.com', 'USERNAME', 'PASSWORD'); 
if (!$link) { 
    die('Could not connect: ' . mysql_error()); 
} 
/*print 'Connected successfully';*/ 
mysql_select_db(it_phys); 

$sql = "SELECT distinct(state) FROM hospitals ORDER BY state"; 
$rs = mysql_query($sql)or die("Connection to DataBase failed"); 
print ("<div align=center>"); 
print("<font color='#008000' size='2' face='Tahoma'><b>Find a Hospital</b></font><br><br>"); 
print ("Select a State<br>"); 
print ("<SELECT name='State' onchange='form.submit();'>"); 
print("<OPTION value='none' selected></OPTION>\n"); 
for($i = 0; $i < mysql_num_rows($rs); $i++) 
{ 
$tmp = mysql_fetch_row($rs); 
print("<OPTION value=\"$tmp[0]\">$tmp[0]</OPTION>\n"); 
} 
print ("</SELECT>"); 
print ("</div>"); 
mysql_free_result($rs); 
mysql_close($link); 

?> 


<?php 
if(isset($_GET['State'])) 
{ 
    $State=$_GET['State']; 
    print "<div align=center><br><br>"; 
    print "State Selected: ".$State; 
    print "<br><br></div>"; 
    /* run query to pull members based on state */ 
    $link = mysql_connect('SERVERNAME.com', 'USERNAME', 'PASSWORD'); 
if (!$link) { 
    die('Could not connect: ' . mysql_error()); 
} 
/*print 'Connected successfully';*/ 
mysql_select_db(it_phys); 

     $query = "SELECT 
      hospitals.`Hospital Name`, hospitals.Address1, 
      concat(rtrim(hospitals.City),', ',rtrim(upper(hospitals.State)), ' ', hospitals.zip) as City_State, 
      hospitals.state,hospitals.`Phone Number`,hospitals.`Hospital Type`,hospitals.`Emergency Service`, 
      hospitals.map 
      FROM hospitals WHERE hospitals.state='".$State."' ORDER by hospitals.`Hospital Name`"; 


    $result = mysql_query($query) or die('Query failed: ' . mysql_error()); 
    /* show in table */ 
    // Printing results in HTML 
    print "<style> 

    h2 { border-bottom: 3px solid red; } 
    table { border-bottom: 1px solid blue; align='left'; cellpadding=0; cellspacing=0 } 
    td {border-bottom: 0px outset black; cellpadding=0 } 

    </style>"; 
    print "<div align=center>"; 
    print "<table cellpadding='20'>"; 


    $i=0; 
    $rows=mysql_num_rows($result); 
    while($i < $rows) { 
     print "<tr>"; 
     print "<style> td {border-bottom: 3px outset green; }</style>"; 
     print "<td valign='top' align='left'>"; 
     print "<font color='red'><strong>".mysql_result($result, $i, 0)."</strong></font>"; 
     print "<br>".mysql_result($result, $i, 1); 
     print "<br><font color='red'>".mysql_result($result, $i, 2)."</font>"; 
     print "<br>".mysql_result($result, $i, 4); 
     print "</td>"; 
     print "<td width=350 valign='top' align='left'>"; 
     print "<br>Type: ".mysql_result($result, $i, 5); 
     print "<br>Emergency Care: ".mysql_result($result, $i, 6); 
     print "<br><br>"; 
     print "<a STYLE='text-decoration:none' target='_blank' 
       href='http://maps.google.com/maps?f=q&source=s_q&hl=en&q=" 
       .mysql_result($result, $i, 7)."'><b> Show Map</b></a>";  
     print "</td>"; 
     print "</tr>"; 

     $i=$i+1; 

    } 
mysql_free_result($result); 
mysql_close($link); 
} 
print "</table>" 
?> 
+1

Как вы знаете, запрос MySQL делает это? – ceejayoz

ответ

0

Это, вероятно, не имеет ничего общего с MySQL. Трудно сказать, не глядя на фактическую страницу (ссылка?), Но вы выводите много необработанных необработанных данных базы данных внутри атрибутов тегов и других мест, которые могут привести к тому, что парсер IE будет заблокирован.

Данные внутри ссылок должны быть экранированы с использованием urlencode(). Данные внутри атрибутов или иначе, вероятно, должны быть экранированы с помощью htmlspecialchars(), если вы не знаете, насколько безопасно это делать.

(При этом «Страница не может быть отображена» может быть вызвана лотами вещей, некоторые из которых являются ранним доступом DOM, надстройками, кешем и т. Д. Их можно будет довольно сложно отследить.)

+0

Сайт italianphysicians.com/find_a_hospital.php. Получив доступ к нему в IE, попробуйте Калифорнию увидеть проблему. – 2009-09-03 16:27:45

+0

У меня нет доступа к ПК с Windows в данный момент. Но те ошибки проверки 4044 могут быть местом для начала :) http://validator.w3.org/check?uri=http%3A%2F%2Fitalianphysicians.com%2Ffind_a_hospital.php%3FState%3DCalifornia&charset=%28detect+automatically% 29 & doctype = Inline & group = 0 –

+0

Просто совет: попробуйте закрыть '

' после группы '