Sorun (php) giriş kutusunda tüm dizeyi görüntüleniyor

8 Cevap php

Ben bir giriş kutusu type = metin içinde mysql tablosundan bir öğe görüntülemek çalışıyorum. Veriler bir dize değeri. Ama tüm dize yalnızca ilk sözcüğü görebilirsiniz.

i elemanı yankı ama eğer, ben tam dize değeri olsun.

Benim kod şöyle görünür:

  echo "Title: <input type=\"text\" name=\"title\" value=".$row['Title']."></input><br>";

Beni ben burada ne yapıyorum yanlış bildirin.

Best Zeeshan

8 Cevap

Bunu deneyin, sonuçta HTML tırnak metni içine değil:

echo "Title: <input type=\"text\" name=\"title\" value=\"".$row['Title']."\"></input><br>";

ya da daha iyisi

echo 'Title: <input type="text" name="title" value="'.$row['Title'].'"></input><br>';

hangi çift tırnak kaçmak zorunda önler.

Sen öznitelik değeri tırnak kaçırıyoruz:

echo "<input type=\"text\" name=\"title\" value=\"" . htmlspecialchars($row['Title'])  . "\"><br>"

Also you should use htmlspecialchars incase the title contains " or <>. Finally, there is no </input>

style="width:auto;" input elemanı üzerinde hile yapmak için görünmüyor, bu yüzden Javascript kullanarak alanını yeniden boyutlandırmak zorunda olacak tahmin ediyorum. Bu kullanıcının düzenleme olacak bir alan var mı?

Ben onu yeniden başlamak istiyorum:

?>
  <div>
  <label>Title: 
    <input type="text" name="title" value="<?php echo htmlspecialchars($row['Title'])?>">
  </label>
  </div>
<?php

Bu, böylece:

  • Daha okunabilir
  • Veri kırılma şeyler alıntı işaretleri Güvenli
  • Daha erişilebilir (bir etiket unsuru içeren daha iyi biçimlendirme sayesinde,)

Sorunlar hala yapılıyormuş Ardından, generated html yerine PHP daha incelenmesi. Eğer sorunu kendiniz çıkarın kod üretimi her düzeyde, sert kendiniz için hayat kurmak.

Sen tarayıcı PHP ile PHP tarafından oluşturulan HTML işler nasıl karşılaştırdığınız. (validator.w3.org) yardımcı olabilir yanlış olduğunu ne işe, HTML bakmak, sonra PHP bunu üreten nasıl çalışmak.

Belki form öğesini yeniden boyutlandırmak gerekir.

<input type="text" size="50">

Bu 50 karakter genişliğinde bir metin girişi.

Bir yeni satır içeriyorsa nl2br() görmek ile hat yankı. Satırsonu içeriyorsa tek satırda metin görüntülemek edebilmek için, belirtildiği gibi onları şerit isteyeceksiniz.

echo nl2br(row['Title']);

Muhtemelen dizede bir \ n karakter var. input type = "text" Bu işleyemez. Bunu dışarı şerit ve bir boşluk ile yerini alabilir ya: str_replace ("\ n", "", $ konu) veya tamamen kaldırmak. Başka bir nedeni, dize içinde bir alıntı "olacaktır. Htmlspecialchars ($ konu) bu karakterlerden kurtulmak için iyi bir çözüm olduğunu pisliği html olur.

Bu $row['Title'] bir boşluk içeriyorsa değeri olarak ayarlanır, sadece bu alana kadar, tırnak içinde value niteliği ambalaj ve tırnak olmadan değiliz görünür. Deneyin:

echo 'Title: <input type="text" name="title" value="' . $row['Title'] . '" /><br />';

değer = "'. $ row [' title '].'" hile yok. Kesinlikle.