2012-01-19 2 views
0

Итак, я отправляю $_POST['location'] с помощью AJAX в свой файл script.js и форму на предыдущей странице. Моя проблема заключается в том, что это работает в IE, но дает мне следующую ошибку в FF и хром:Ошибка mysql_data_seek в ff и chrome, но работает в ie

Warning: my_data_seek() [function.mysql-data-seek]: 
Offset 0 is invalid for MySQL result index 2 (or the query data is unbuffered) 
in ...reserveAPickupAppointmentDateResults.php on line 39 

Я знаю, что данные в базе данных, но и в прошлом, я обычно только получил эту ошибку, когда SQL не возвращает никаких записей. Я предполагаю, что это проблема с SQL?

reserveAPickupAppointmentDateResults.php

<?php 
session_start(); 

//create database connection 
$connection = mysql_connect("XXXX","XXXX","XXXX"); 

//in case database connection fails 
if(!$connection) 
{ 
    die("Database connection failed: ".mysql_error()); 
} 
else 
{ 
    //select database to use 
    $db_select = mysql_select_db("XXXX",$connection); 

    //in case database selection fails 
    if (!$db_select) 
    { 
     die("Database selection failed: " . mysql_error()); 
    } 
    else 
    { 
     $appointmentLocation = mysql_real_escape_string($_POST['location']); 
     $_SESSION["location"] = $appointmentLocation; 

     $sql = "SELECT timeBlocks.location, timeBlocks.date 
     FROM timeBlocks 
     WHERE timeBlocks.location = '".$appointmentLocation."';"; 

     //set results to variables 
     $result = mysql_query($sql); 
     if (!$result) 
     { 
      die("Database query failed: " . mysql_error()); 
     } 

     $row = mysql_fetch_array($result); 
     ?> 

     <form class="reserveAPickupAppointmentForm5" id="reserveAPickupAppointmentForm5"> 
     <table> 

     <?php 
     mysql_data_seek($result, 0); 

     while($row = mysql_fetch_array($result)) 
     { 
      ?> 
      <tbody class="reserveAPickupAppointmentDateResults"> 
       <tr> 
        <td> 
         <span class="reserveAPickupAppointmentDateText"> 
          <img src="images/reserveAPickupAppointmentButton1.png" class="reserveAPickupAppointmentDate"> 
          <?php echo $row["date"]; ?> 
         </span> 
        </td> 
       </tr> 
       <tr> 
        <td>We have the following dates available for your location. If you would like a different date, please choose "request a custom date" to try to schedule a custom appointment. Otherwise, please choose a different date.</td> 
       </tr> 
      </tbody> 
      <?php 
     } 
     ?> 

     </table> 
     </form> 

     <?php 
    } 
} 

// Close connection 
mysql_close($connection); 
?> 

Соответствующие сценарии из formScript.js

$(".reserveAPickupAppointmentDateText").click (function() { 
    appointmentLocation = $(this).text(); 
    $.post(
     'reserveAPickupAppointmentTimeResults.php', 
     { 
      'date': date, 
      'location': appointmentLocation, 
      'appointmentSize': appointmentSize 
     }, 

     function (response) 
     { 
      $("#reserveAPickupAppointmentTimeResults").html(response); 
     } 
    ); 

    return false; 
}); 
+0

Если он работает в одном браузере, но не в другом, это проблема на стороне клиента не на стороне сервера один. Можете ли вы разместить javascript? – jeroen

+0

Почему вы все равно используете mysql_data_seek()? В чем смысл '$ row = mysql_fetch_array ($ result);' перед этим? – Mchl

+0

уверен, дайте мне минутку, чтобы прикрепить его, также, я удалил класс и идентификаторы, которые были одинаковыми ... это было из старой версии, извините за беспорядок – radleybobins

ответ

1

Там нет никаких оснований для этого, чтобы быть конкретным браузером, я подозреваю, что на самом деле происходит в том, что IE не делает ошибку тогда как хром и FF. Если вы посмотрите в исходном коде, вы, вероятно, увидите там сообщение об ошибке в IE - если сгенерированный источник отличается от браузера, происходит что-то очень странное.

Более важным моментом является то, что ваш вызов mysql_data_seek() бессмыслен и не приносит ничего полезного.

Вы звоните:

$row = mysql_fetch_array($result); 

Но вы никогда ничего не делать с $row, то вы звоните:

mysql_data_seek($result, 0); 

перед входом в цикл. Если вы удалите обе эти строки, это не повлияет на конечный результат, но должно избавиться от ошибки.

EDIT

Если вы действительно получаете различное содержание генерируется в разных браузерах, то проблема, скорее всего, что appointmentLocation в не заполняется правильно в Javascript в FF и Chrome, и в результате SQL запрос не возвращает никаких результатов. В этом случае вы должны изучить Javascript, где вы назначаете значение appointmentLocation.

+0

, но я использую $ row ['date'] в своей таблице – radleybobins

+0

, то есть дает мне правильный результат, а не просто нет ошибок. – radleybobins

+0

Вы используете '$ row' в цикле, но вы не используете его между двумя строками, о которых я упоминал выше. RE no error в IE проблема, см. Править выше. – DaveRandom

0

Вам не нужно mysql_data_seek($result, 0);, если вы удалите $row = mysql_fetch_array($result); линии непосредственно перед этим. И вы можете удалить эту строку, поскольку в любом случае вы не используете переменную $row.

Сообщение об ошибке Offset 0 is invalid for MySQL result index предполагает, что ваш запрос возвратил 0 строк. Попытайтесь выяснить, почему.

+0

, но я использую $ row ['date'], в моей таблице – radleybobins

+0

Да, но вы делаете 'while ($ row = mysql_fetch_array ($ result))', который присваивает данные к нему. – Mchl

+0

Я вижу, позвольте мне попробовать это – radleybobins

0

Из того, что я вижу, вы не определяете переменные POST в любом месте вашей функции click.

Вы, вероятно, нужно что-то вроде (в зависимости от вида/HTML):

$(".reserveAPickupAppointmentDateText").click (function() { 

    var appointmentLocation = $("#appointmentlocation").val(); 
    // and all other variables 

    $.post(
    // etc. 
+0

извините, они определены намного раньше, но есть много кода, связанного с этими частями, я просто пытаюсь уменьшить его для сообщения – radleybobins

+0

@radleybobins. Я бы добавил 'console.log (назначениеLocation)' перед вашим вызовом '$ .post', чтобы проверить, это действительно то, что вы ожидаете. – jeroen

+0

Я только что повторил $ ​​назначение. Место успешно забронировано в appAPickupAppointmentDateResults.php в chrome и ff. – radleybobins

Смежные вопросы