2015-10-30 1 views
1

У меня есть этот код, который работает изначально:многократный сценарий Java по ошибке одна страница

<th scope="row"> 
    <select name="Date" required class="form-control" id="Date"> 
    <option value="">Please Select Date</option> 
    <?php $sql2="SELECT * FROM clinic.appoint GROUP BY date ORDER BY date ASC"; 
    $result2 = mysqli_query($con, $sql2) or die($sql2."<br/><br/>".mysql_error()); 
    while($rows2=mysqli_fetch_array($result2)){?> 
     <option value="<?php echo $rows2['date'] ?>"><?php echo $rows2['date'] ?></option> 
    <?php } ?> 
    </select> 
</th> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<script language="javascript" type="text/javascript"> 
$(document).ready(function(){ 
    $("#Date").change(function(){ 
     var seldate =$(this).val(); 
     display_data(seldate); 
    }); 

    // This is the function... 
    function display_data(seldate) { 

     $("#scheduleDate").html(seldate); 
     var dataString = 'seldate='+ seldate; 
      $.ajax({ 
      type: "POST", 
      url: "getdata.php", 
      data: dataString, 
      cache: false, 
      success: function(data) { 
       $("#Schedule").html(data); 
      } 
     }); 

    } 
    // Now here is the real code for retaining your Date... 
    <?php 
    if (!empty($_GET['date'])) { 
     ?> 
    display_data('<?php echo $_GET["date"]; ?>') 
     <?php 
    } 
    ?> 
    document.getElementById('Date').value = '<?php echo @$_GET["date"]; ?>'; 
}); 

$(document).ready(function(){ 
    $("#Name2").change(function(){ 
     var selname =$(this).val(); 
     display_name(selname); 
    }); 

    // This is the function... 
    function display_name(selname) { 

     $("#scheduleName").html(selname); 
     var dataString = 'selname='+ selname; 
      $.ajax({ 
      type: "POST", 
      url: "getdatabyname.php", 
      data: dataString, 
      cache: false, 
      success: function(data) { 
       $("#Schedule2").html(dataname); 
      } 
     }); 

    } 
    // Now here is the real code for retaining your Date... 
    <?php 
    if (!empty($_GET['name'])) { 
     ?> 
    display_name('<?php echo $_GET["name"]; ?>') 
     <?php 
    } 
    ?> 
    document.getElementById('Name2').value = '<?php echo @$_GET["name"]; ?>'; 

}); 
</script> 

getdata.php:

<?php 
require_once ('../include/global.php'); 
    if($_POST['seldate']) { 
     $selDate = $_POST['seldate']; 
     $sql="SELECT * FROM clinic.appoint WHERE date='$selDate'"; 
     $result = mysqli_query($con, $sql) or die($sql."<br/><br/>".mysql_error()); 
     while($rows=mysqli_fetch_array($result)){ 
    ?> 
<tr> 
    <td scope="row"><?php echo $rows['time'] ?></td> 
    <td scope="row"><?php echo $rows['name'] ?></td> 
    <td scope="row"><?php echo $rows['date'] ?></td> 
    <td scope="row"><form action='/clinic form/appoint/delete.php'=<?php echo $rows['id']; ?>' method="post"> 
     <input type="hidden" name="id" value="<?php echo $rows['id']; ?>"> 
     <input type="submit" name="submit1" value="Done"> 
    </form> 

    </td> 
    </tr> 
<?php } } ?> 

Это дает мне выпадающий список с датами, чтобы поискаШлюпка Таблица. Я хочу, чтобы сделать новую выпадающий список, но вместо даты, мне нужно, чтобы отобразить имена, чтобы сделать поиск, я изменил некоторые ключевые слова в нем, так что я добавил этот новый код на ту же страницу:

<th> 
    <select name="Name" required class="form-control" id="Name"> 
    <option value="">Please Select Name</option> 
    <?php $sql3="SELECT * FROM clinic.appoint GROUP BY name"; 
    $result3 = mysqli_query($con, $sql3) or die($sql3."<br/><br/>".mysql_error()); 
    while($rows3=mysqli_fetch_array($result3)){?> 
     <option value="<?php echo $rows3['name'] ?>"><?php echo $rows3['name'] ?></option> 
    <?php } ?> 
    </select> 
</th> 

и сделать новый PHP-файл:

<?php 
require_once ('../include/global.php'); 
    if($_POST['selname']) { 
     $selDate = $_POST['selname']; 
     $sql="SELECT * FROM clinic.appoint WHERE name='$selname'"; 
     $result = mysqli_query($con, $sql) or die($sql."<br/><br/>".mysql_error()); 
     while($rows=mysqli_fetch_array($result)){ 
    ?> 
<tr> 
    <td scope="row"><?php echo $rows['time'] ?></td> 
    <td scope="row"><?php echo $rows['name'] ?></td> 
    <td scope="row"><?php echo $rows['date'] ?></td> 
    <td scope="row"><form action='/clinic form/appoint/delete.php'=<?php echo $rows['id']; ?>' method="post"> 
     <input type="hidden" name="id" value="<?php echo $rows['id']; ?>"> 
     <input type="submit" name="submit1" value="Done"> 
    </form> 

    </td> 
    </tr> 
<?php } } ?> 

Теперь только окно списка дат работает, а другой говорит: Undefined selname в строке 5. Как исправить это. P.S .: Я искал эти ссылки, но ни один из них не помог мне:

When I add two scripts to a html page..one is doesnt work

Implications of multiple <script> tags in HTML

Теперь я имею имя выбранного в списке отображается в DIV, но ничего с ним.

+0

r u используя 2 ссылки javascript cdn на одной странице? –

+0

Я не знаю, что я новичок в js, и если вы можете исправить мой код? – droidnation

+0

ok u нужно только имя в раскрывающемся списке справа? –

ответ

1

Как указано в комментариях, вы сделали ошибки в своем коде;

1.Binding change function с неправильным селекторе

$("#Name2").change(function(){ 

и HTML является

<select name="Name" required class="form-control" id="Name"> 

Должно быть $("#Name").change(function(){ это исправит проблему Undefined selname в строке 5

2 ,Имя функция успеха Ajax Метод

success: function(data) { 
    $("#Schedule2").html(dataname); 
} 

Должно быть $("#Schedule2").html(data);

И в PHP; Заслуга @ j08691

изменения $selDate

$selDate = $_POST['selname']; 

в $selname

$selname = $_POST['selname']; 
$sql="SELECT * FROM clinic.appoint WHERE name='$selname'"; 

Как вы сказали, в вопросе, ваш первый Ajax вызов работает нормально, и вы столкнулись с проблемой в 2-ой метод вызова Ajax , после устранения вышеуказанных ошибок

HTML

<th> 
    <select name="Name" required class="form-control" id="Name"> 
    <option value="">Please Select Name</option> 
    <?php $sql3="SELECT * FROM clinic.appoint GROUP BY name"; 
    $result3 = mysqli_query($con, $sql3) or die($sql3."<br/><br/>".mysql_error()); 
    while($rows3=mysqli_fetch_array($result3)){?> 
     <option value="<?php echo $rows3['name'] ?>"><?php echo $rows3['name'] ?></option> 
    <?php } ?> 
    </select> 
</th> 

AJAX

$(document).ready(function(){ 
    $("#Name").change(function(){ 
     var selname =$(this).val(); 
     display_name(selname); 
    }); 

    // This is the function... 
    function display_name(selname) { 
     $("#scheduleName").html(selname); 
     var dataString = 'selname='+ selname; 
     $.ajax({ 
      type: "POST", 
      url: "getdatabyname.php", 
      data: dataString, 
      cache: false, 
      success: function(data) { 
       $("#Schedule").html(data); 
      } 
     }); 
    } 
}); 

PHP

<?php 
require_once ('../include/global.php'); 
    if($_POST['selname']) { 
     $selname = $_POST['selname']; 
     $sql="SELECT * FROM clinic.appoint WHERE name='$selname'"; 
     $result = mysqli_query($con, $sql) or die($sql."<br/><br/>".mysql_error()); 
     while($rows=mysqli_fetch_array($result)){ 
    ?> 
<tr> 
    <td scope="row"><?php echo $rows['time'] ?></td> 
    <td scope="row"><?php echo $rows['name'] ?></td> 
    <td scope="row"><?php echo $rows['date'] ?></td> 
    <td scope="row"><form action='/clinic form/appoint/delete.php'=<?php echo $rows['id']; ?>' method="post"> 
     <input type="hidden" name="id" value="<?php echo $rows['id']; ?>"> 
     <input type="submit" name="submit1" value="Done"> 
    </form> 

    </td> 
    </tr> 
<?php } } ?> 

(OP до меня по электронной почте и объяснил, что он пытается сделать)
Теперь вы выборки результат на 2-х различных <select> элемента с использованием Ajax и попытаться показать результат на основе элемента <select>, и в обоих вызовах Ajax success: function вы ориентируетесь на 2 разных id's, чтобы показать дату а, для каждого <select> Ajax вызова, например

//For Date Result 
$("#Schedule").html(data); 
//For Name Result 
$("#Schedule2").html(data); 

Я хотел бы предложить использовать тот же id селектор в обоих Ajax вызывает success: function, чтобы показать данные

$("#Schedule").html(data); 

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

Последнее, я полностью согласен с @Jared Smith, что он сказал о смешении PHP и JavaScript, это действительно не очень хорошая практика.

+0

Спасибо, я сделаю просто то, что вы сказали в последней части, и для кода, который он сейчас работает, спасибо. – droidnation