AJAX HTML PHP soru

4 Cevap php

This is my scripts.js

function showHint(str)
{
if (str.length==0)
  {
  document.getElementById("txtHint").innerHTML="";
  return;
  }
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","inputProcess.php?q="+str,true);
xmlhttp.send();
}

This is my HTML

<script type="text/javascript" src="scripts.js"></script>
<form>
  Type your name here : <input type="text" onkeypress="showHint(this.value)" name="name" />
</form>

This is my PHP file

<?php
$q = $_GET['q'];

$dbc=mysql_connect("localhost","root","") or die (mysql_error()); mysql_select_db('input_oop') or die (mysql_error()); $sql = "INSERT INTO users set name = '".$q."'"; mysql_query($sql) or die (mysql_error()); ?>

İşte sorun: Ben metin yalnızca bir değer yazdığınızda, benim veritabanında birden çok kez kazandıracak.

EG: Ben girişi "Jordan". Benim veritabanında kontrol ettiğimiz zaman, bu gibi görünür

userid 1 J
userid 2 Jo
userid 3 Jor

Ve benzeri

4 Cevap

Ben soru nedir bilmiyorum ama ben AJAX başlangıç ​​için jQuery tavsiye çalışıyorum olacak ... orada bir esinti yapmak birçok fonksiyonları ve tüm gelişmiş sıfırdan yapıyor ile ilgili kodlama çıkar. Check it out:

http://api.jquery.com/category/ajax/

onkeypress bile bu kutuya içinde yapmak HER basışı için patlayacaktır. Yani burada ne var:

  1. Sen 'j' yazın
  2. showHint () tetiklenir, sunucuya 'j' gönderiyor
  3. Kullanıcı tabloya komut dosyası ekler 'j'
  4. Sen 'o', metin alanına 'jo' şimdi var yazın
  5. showHint () tetiklenir, sunucuya 'jo' gönderiyor
  6. Komut kullanıcı tabloya 'Jo' insert
  7. vs ..

Diğer bir deyişle, size sadece körü körüne veritabanı içine ne olursa olsun kullanıcı türleri takıyor, hiç bir ipucu gösteren değiliz.

Eğer ipuçlarını göstermek istiyorsanız, o zaman yerine, en azından bir 'SELECT' sorgu yapıyor ve sayfa için sonuçlar iade edilmelidir.

Ayrıca AJAX çağrıları yapmak için Mootools veya jQuery gibi bir şey kullanmak gerekir. Bunlar kullanıcının hangi tarayıcıyı kullanıyorsunuz konusunda endişelenmenize gerek kalmadan, sizin için istek gönderme / bina sert kısımlarını hallederim.

Yanı sıra, vahşi içine sizinki gibi bir senaryoyu bırakmadan önce yaklaşık SQL injection hakkında okuyun.

Ayrıca mal-olan insert sorgu var. Yeni bir kayıt eklemek için, temel sözdizimi şöyledir:

INSERT INTO sometable (field1, field2, field3, ...) VALUES (value1, value2, value3, ...)

Orada kısmi 'update' sorgu çeşit karışık var, bir biçimidir

UPDATE sometable SET field1=value1, field2=value2, ....

Sözdizimi tamamen bozuldu gibi ben, şimdi olduğu gibi sorgu veritabanına herhangi bir şey takmadan nasıl olabileceğini göremiyorum.

Eğer onkeypress olayını kullanın tarayıcı üzerinde biraz bağlı olarak da ok tuşları gibi içeriği değişmez tuşları ateş edecek, girmek veya vb tab tuşuna basın, yenilemek için F5, .. bazı tarayıcılar ile Hatta basarak vardiya tetikleyebilir onkeypress. Ayrıntılar için this page bakınız.

PHP kodu girilen değeri, yeni olduğu için kontrol etmez gibi girilen değeri bu tuşlardan birine basın her zaman katacak.

Ayrıca bu is iyi bir fikir bunun için jQuery kullanmak.

Kodunuzu birçok farklı konular arasında, belki onblur kullanmalıyım? Mouseover üzerinde belki o araç ipuçları gibi ipucu ama eğer neden satırlar eklemiş olursunuz?