Tip Düğme Eleman Gönder &

5 Cevap php

Son zamanlarda benim formlarda <button> için <input type="button"> değiştirmek ancak PHP ile işlenen formu daha sonra veritabanına teslim olmaz. Benim kod bir şey eksik?

Temelde ben yaptım tüm bu değişti:

<input type="submit" name="submitAdd" value="Ask Question! " />

Buna:

<button type="submit" class="btn" name="submitAdd"><span><span>Ask Question!</span></span></button>

Burada temel PHP işleme Code:


//Extract question from submission
$question = (isset($_POST["question"]))?$_POST["question"]:"";
$question_date = (isset($_POST["question_date"]))?$_POST["question_date"]:"";
$submitAdd = (isset($_POST["submitAdd"]))?$_POST["submitAdd"]:"";

//Open connect to database 
include("include/session.php");

//Prepare data for submission
$db_question = addslashes($question);
$db_question_date = addslashes($question_date);

//If form has been submitted, insert question into database
if ($submitAdd) {
    $sql ="INSERT INTO questions
    (question,question_date)
    VALUES ('$db_question', '$db_question_date')";
    $result = mysql_query($sql);
    if (!$result) {
    	$message = "Failed to add question. MySQL said " . mysql_error();
    } else {
    	header("Location:http://localhost/grill/register.php"); 
    }
}

5 Cevap

Düğmesine sürümü hiçbir değeri yoktur, çünkü çalışmaz. Sizin kod diyor ki:

$submitAdd = (isset($_POST["submitAdd"]))?$_POST["submitAdd"]:"";

ama var:

<butkarşın type="submit" class="btn" name="submitAdd"><span><span>Ask Question!</span></span></butkarşın>

Bu karşılaştırın:

<input type="submit" name="submitAdd" value="Ask Question! " />

hangi bir değer özniteliği vardır. Bu değer, PHP komut dosyası geçirilen ve test ettiğiniz ne olduğunu. Sizin <butkarşın> tane yok.

Hiçbir değeri ile $submitAdd, tıklandığında bile,'' değerine sahip olacaktır. Bunu boş bir dize yanlış olarak değerlendirir:

if ($submitAdd) {

Yani, değişiklikleri bir çift ben tavsiye ederim. Öncelikle, bu değiştirin:

$submitAdd = (isset($_POST["submitAdd"]))?$_POST["submitAdd"]:"";

karşı

$submitAdd = isset($_POST['submitAdd']);

Eğer gerçekten değeri hakkında umurumda değil çünkü.

Secondly, unrelated karşı this but still worth mentioning, I would do this:

$db_question = mysql_real_escape_string($question);
$db_question_date = mysql_real_escape_string($question_date);
$sql = <<<END
INSERT INTO QUESTIONS (question, question_date)
VALUES ('$db_question', '$db_question_date')
END;

I <button> etiketleri teslim alamadım ve böylece $ _POST kadar bitmez tahmin ediyorum. Sadece doğrulamak için komut üstündeki bunu:

print $_POST["submitAdd"];

Neden yine girişten düğmeye değişti? I form_action ya da benzer bir şey ve temel adında gizli bir alan ekleyerek tavsiye ederim, eğer bu konuda mantık ... if ($_POST['form_action']) yerine if ($submitAdd).

W3schools.com başına

Önemli: Eğer bir HTML formundaki düğme elemanı kullanırsanız, farklı tarayıcılarda farklı değerler sunacaktır. Diğer tarayıcılar değeri niteliğin içeriği sunacaktır ise Internet Explorer, ve etiketlerin arasındaki metni sunacaktır. Bir HTML biçiminde düğmeler oluşturmak için giriş elemanı kullanın.

http://www.w3schools.com/tags/tag%5Fbutton.asp

  1. submitAdd giriş alanı gizli yapmak
  2. düğmeye tıklama bir javascript işlevini çağırmak

biçimlendirme:

<input type="hidden" name="submitAdd" value="Ask Question! " />

<button type="submit" onclick="submitForm();" class="btn" name="submitAdd"> <span><span>Ask Question!</span></span></button>

javascript:

function submitForm(){
    document.forms["form_name"].submit();
}

Form sunulması için javascript bağlı gibi ben olsa tavsiye etmem. Ama bu bile gmail o şekilde yapar: P

Aynı problem vardı, ve benim çözüm hiçbir javascript kullanır. Özellikle kullanıcı vsr daha önce cevap olarak aynı.

Eğer sumbit istediğiniz veri ile gizli bir girişi ekle:

<input name="submitAdd" type="hidden" value=" Ask Question! ">

Nasılsa başka düğmesini Adı:

<button type="submit" class="btn" name="submitsForm"> Ask Question! </button>

Düğmesi formu sunacak ve istediğiniz verileri gizli girişi olacak ve güzel daha sundu. Umarım yardımcı olur!