2014-10-16 3 views
1

Ive только что начал изучать php несколько недель назад. Я пытаюсь сделать ту же программу каталогов, что и в Access. Но теперь я застрял. (я написал короткую копию программы cos, которая слишком длинная, так что это похоже на это) Проблема следующая. У меня есть inputbox (ID), который будет идентификационным номером и некоторыми текстовыми областями (в этом примере 3 из них типа year-type) для результатов. или это могут быть некоторые другие объекты. Когда я ввожу значение, база данных возвращает мне результаты из полей, где id - это значение, которое я дал. То, что до сих пор работает с ajax, но это дает 3 textareas те же результаты. Что бы я хотел добиться, так это то, что все разные результаты поля отображаются в разных текстовых областях. Ive пытался с json, но на самом деле не работал. Я поставлю здесь один с ajax (который работает хорошо, но результат должен быть разделен) и тот, который я пробовал с json. пожалуйста, если у вас есть идея, помогите мне.получить данные из mysql с ajax и json в разные текстовые поля

my form

Это один работает, но не разделяет результаты:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8" /> 
    <title>Get datas from database where (ID = value of input) and get back the datas into different textareas.</title> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
</head> 
<body> 

ID number: <input type="text" id="searchid" ><br> 

Result Name: <textarea id="resultname"></textarea><br> 
Result Year: <textarea id="resultyear"></textarea><br> 
Result Type: <textarea id="resulttype"></textarea><br> 

<script> 
    $(document).ready(function() { 

     $('#searchid').keydown(function (e){ // Event for enter keydown. 
     if(e.keyCode == 13){ 

     var idvalue = $("#searchid").val(); // Input value. 

      $.ajax({ //Ajax call. 

       type: "GET", 
       url: "search.php", 
       data: 'id=' + idvalue ,   
       success: function(msg){ 
        // Show results in textareas. 
        $('#resultname').html(msg.name); 
        $('#resultyear').html(msg.year); 
        $('#resulttype').html(msg.type); 
        } 

       }); // Ajax Call 
      } //If statement 
     }); //event handler 
    }); //document.ready 
</script> 

</body> 
</html> 

<?php 

if ($_GET['id']): 
    // Connect to database. 
    $con = mysqli_connect("localhost","Krisz","password"); 
    mysqli_select_db ($con,'coin'); 

    // Get the values from the table. 
    $sql = "SELECT Name, Year, Type FROM main_db where ID = $_GET[id] "; 
    $result = mysqli_query($con,$sql); 

    while($row = mysqli_fetch_assoc($result)) 
    { 
    echo "$row[Name]"; 
    echo "$row[Year]"; 
    echo "$row[Type]"; 
    } 

endif; 

?> 

Здесь я попытался с помощью JSON. я уверен, что есть много ошибок.

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8" /> 
    <title>Get datas from database where (ID = value of input) and get back the datas into different textareas.</title> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 

    <script type="text/javascript"> 
    $(document).ready(function() { 

     $('#searchid').keydown(function (e){ // Event for enter keydown. 
     if(e.keyCode == 13){ 

     var idvalue = $("#searchid").val(); // Input value. 

      $.ajax({ //Ajax call. 

       type: "GET", 
       url: "search.php", 
       data: 'id=' + idvalue , 
       type: 'json', 
       success: function(msg){ 
        // Show results in textareas. 
        $('#resultname').html(msg.name); 
        $('#resultyear').html(msg.year); 
        $('#resulttype').html(msg.type); 
        } 

       }); // Ajax Call 
      } //If statement 
     }); //event handler 
    }); //document.ready 
</script> 

</head> 
<body> 

    ID number: <input type="text" id="searchid" ><br> 

    Result Name: <textarea id="resultname"></textarea><br> 
    Result Year: <textarea id="resultyear"></textarea><br> 
    Result Type: <textarea id="resulttype"></textarea><br> 

</body> 
</html> 


    <?php 
if ($_GET['id']): 

    $dataid = json_decode($_GET['id']); 


    // Connect to database. 
    $con = mysqli_connect("localhost","Krisz","password"); 
    mysqli_select_db ($con,'coin'); 

    // Get the values from the table. 
    $sql = "SELECT Name, Year, Type FROM main_db where ID = '$dataid' "; 
    $result = mysqli_query($con,$sql); 

    while($row = mysqli_fetch_assoc($result)) 
    { 
    $name = $row[Name]; 
    $type = $row[Type]; 
    $year = $row[Year]; 
    } 

$rows = array('name' => $name, 'type' => $type, 'year' => $year); 

echo json_encode($rows); 

endif; 

?> 

Я не уверен, что при необходимости использовать json. Возможно, есть и другой и более простой способ сделать это.

+1

[Запретить SQL-инъекцию!] (Http: // stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) –

ответ

1

Используйте этот код :), надеюсь, что это поможет :)

$.ajax({ //Ajax call. 

       type: "GET", 
       url: "search.php", 
       data: 'id=' + idvalue , 
       type: 'json', 
       success: function(msg){ 
        // Show results in textareas. 
        msg = JSON.parse(msg); // Line added 
        $('#resultname').val(msg.name); 
        $('#resultyear').val(msg.year); 
        $('#resulttype').val(msg.type); 
        } 

       }); // Ajax Call 

добавлена ​​строка: тзд = JSON.parse (MSG); // Строка добавлена ​​

когда форма приемника URL это сообщ является строкой, это не код JSON, Вы должны разобрать на JSon с функцией JSON.parse ([строка]) идет разобрать Сообщи из строки в формат JSON код :) ...

обновление

$('#resultname').val(msg.name); 
$('#resultyear').val(msg.year); 
$('#resulttype').val(msg.type); 
+3

Сообщите OP, почему они должны «использовать этот код». Почему это другое? Почему это поможет? Обязательно отредактируйте сообщение с информацией. –

+0

Я не знаю, я не могу читать умы других людей. Возможно, они хотели лучше объяснить, как это исправит проблему OP. –

0

ок. наконец, я нашел проблему. он должен быть .html

$ ('# resultname'). html (msg.name);

но сначала он все еще не работает. Я провел 5 часов и прочитал ок. 20 статей об этом, и никто из них не работал. И я начал верить, что проблема исходит откуда-то еще. И нашел это.

первая буква типа перед JSON должен быть в верхнем регистре

типа: 'JSON', - не работает

Тип: 'JSON', - работа

я не знаю, если другие проги такие чувствительные или нет. im используя блокнот ++. это st ** id мелких вещей заняло 5 часов, чтобы найти и вызвало проблему. Во всяком случае, он работает снова и снова, благодаря Хоангу за ответ.

+0

не должно быть dataType: 'json', –

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