Nasıl bu postgres db sorgu sonucu benim jquery aramasına dönmek için json çevirebilirim?

2 Cevap php

Ben okulda bizim yıllık matematik yarışması için bir yarışma kaydolma sayfasını oluşturma. Eğer tıklayın ve açılır listeden bir öğeyi seçtiğinizde o davranış gibi bazı AJAX gerektirir.

(Ben şu anda bir uyarı kutusu gösteren kulüpler) ben açılan şey seçtiğinizde yangın bir olay ele verdik:

<script type="text/javascript">
    $(function() {
        $("#student").change(onStudentChange);
     });

     function onStudentChange()
     {
         alert("Dropdown changed");
     }
</script>

Bu ne yapmak gerekiyor, bu öğrenci şu anda kayıtlı olan yarışmalarda bir listesini almak için sunucuya bir asenkron çağrı yapmaktır.

Ben bir jquery ajax arama yapmak gerektiğini biliyorum. Yani benim onStudentChange () işlevi bu gibi görüneceğini düşünüyorum:

$.ajax({
    type : 'POST',
    url : 'get_registered_events.php',
    dataType : 'json',
    data: {
    studentid : $('#student').val()
    },
    success : function(data){
        // Do something once we get the data
        },
        error : function(XMLHttpRequest, textStatus, errorThrown) {
        // Display error
        }
        });

        return false;
});

Ben önde gitti ve ben öğrenci için kayıtlı olduğu olayları dönmek istiyorum get_registered_events.php, oluşturuldu.

Benim sorunum PHP ile deneyimli değilim ve ben dönecekti nasıl veritabanı JSON biçiminde bu ajax arama için bana verdi verileri bulmaktan zorluk yaşıyorum, olduğunu. Ben başka bir engel bizim okul bu yüzden bu PEAR JSON kütüphane kullanmak zorunda PHP bir çok eski bir sürümünü kullanıyor olmasıdır.

Burada sorun yaşıyorum ki PHP dosyası:

<?php

if (!empty($_POST['studentid')) {

    include_once('JSON.php');
    $json = new Services_JSON();

    $dbconn = pg_connect("host=somehost dbname=somedb user=someuser password=somepassword") or die('Could not connect: ' . pg_last_error());
    $query = 'SELECT contest.id, contest.title, FROM contest, student_contest WHERE student_id = '.$_POST['studentid'].' AND contest.id = contest_id';
    $contests = pg_query($query) or die('Query failed: ' . pg_last_error());

    // Here I need to convert the rows of $contests (contest.id, contest.title), into JSON and return it to that ajax call.

}

?>

Yani benim soru nasıl $ yarışmalar (onun satırlar) JSON (contest.id, contest.title) haline dönüştürmek, ve yukarıda bunu yapacaktır ajax arama için bu geri dönüş yok, olduğunu.

Herkes bana doğru yönde işaret olsaydı ben gerçekten takdir ediyorum.

2 Cevap

$myarray = array()
while ($row = pg_fetch_row($contests)) {
  $myarray[] = $row;
}

echo json_encode($myarray);

Ben bu işe zorunda düşünüyorum.

Siz de yapabilirsiniz

$resultArray = pg_fetch_all($result);
echo json_encode($resultArray);

Bu anahtar olarak sütun adı ile bir JSON nesnesi olarak her satır kodlamak ve JSON Array tüm satırları koyacağız

Eğer sorgu küçük bir veri kümesi döndürür biliyoruz emin eğer yalnızca bunu. Eğer veri boyutu hakkında endişeleriniz varsa, atif089 yıllardan @ kullanabilirsiniz ama pg_fetch_assoc() yerine pg_fetch_row() kullanımı