params tutmak ve bir formdan başka eklemek

4 Cevap php

Hey Guys, I have the following 3 urls:

http://www.test.com?a=1
http://www.test.com?a=1&b=3
http://www.test.com?a=1&b=2&c=99

Şimdi bir formda ben şöyle bir açılır menü var:

<select name="b">
    <option value="1">1</option>
     ...
</select>

Now i want to either add that param to the list of existing params or edit the param if its already there, then refresh the page. Any ideas? Thanks

4 Cevap

Bunu sıradanifade şekilde yapabilirsiniz:

var myNewValue = 1; // the new value of input named b
var url = window.location.href;
if(url.match(/\Wb=/)) url = url.replace(/(\Wb=)[^&]*/, "$1"+myNewValue);
else url = url+"&b="+myNewValue;
window.location.href = url;

Ben hem soru etiketli beri, bu sorun için PHP veya javascript kullanarak eğer emin değilim.

: Siz de formda eski parametreleri içermelidir sürece, formu göndermek zaman örneğin böylece PHP ile diğer parametreler kaybolur

<select name="b">
    <option value="1">1</option>
    ...
</select>
<input type="hidden" name="a" value="<?php echo htmlentities(@$_GET['a']); ?>" />
<input type="hidden" name="c" value="<?php echo htmlentities(@$_GET['c']); ?>" />

Bulunduğunuz yere diğer parametreleri ekleyin: Eğer Javascript kullanarak konum Ancak, diğer çocuklar gibi sorgu dizesini ayrıştırmak zorunda, ama aslında aynı yapacak belirtmiştik.

You should write the parameters you want to keep as hidden inputs in the new form My PHP is rusty, but here goes:

<input type="hidden" name="a" value="<?php echo (int)$_GET['a']; ?>" />

Eğer parametre listesini ayrıştırmak için regex kullanmadığınız sürece JavaScript, sayfa için istek parametreleri doğrudan erişimi yok. Ancak, sunucu tarafı teknoloji, sizin durumunuzda PHP, bu sayfasını oluşturuyor zaman erişimi yok.

Şeklinde gizli girdileri oluşturarak, kullanıcı değerlerini değiştirmek için seçeneği yok, ancak form tekrar gönderildiğinde onlar dahil alacak.

"Now i want to either add that param to the list of existing params or edit the param if its already there"

I) (o zaman yeni bir değer ile / güncelleme dizi öğesi ekleyebilir ve http_build_url geri geçerli URL'ye birleştirmek, ilişkisel diziye URL'yi bölmek için parse_str() / parse_url () fonksiyonları ile gitmek istiyorum. Php kılavuzunu örneklere bir göz atınız, bu konuda yazmak için daha bunu kod daha kolay ;)


"then refresh the page"

Gizli form elemanları ile ilgili cevaplar kötü değil ama kullanıcı (onun daha önceki seçim hatırlanır görünür onay olacak, henüz onu bir şekilde tasarruf edeceksiniz) ne anlayacaksınız merak ediyorum. Çünkü ben biraz farklı bir yol gitmek istiyorum: Eğer için form göstermek ne zaman ve statik HTML neden sadece birinci formunda seçilen seçenekler gönderebilirsiniz emin yapmaz, formlar php ile oluşturulan bu değil varsayarak vurgulanır sonraki Sundu?

<select name="b">
    <option value="1" <?php if(isset($params['b']) && $params['b'] == 1) echo 'selected="selected"'; ?>>1</option>
</select>

Biraz dağınık görünüyor ama yeniden görüntüleyerek kullanıcının giriş alışkanlığı yapacağız eğer (onlar boşaltılmış bir formu nedeniyle bazı doğrulama 3 kez doldurmak zorunda olacak eğer onlar sayfanızı nefret edeceğiz) yazarak kaydedin.

Seçeneği için uygun bağladıkları etiketleri ben size apaçık bir şey bahsetmiyorum eğer vb emin değil isterseniz girebilirsiniz burada "değer" metin girişleri nitelik, "kontrol" onay kutularını / radyo düğmeleri için, "Seçilmiş" dir ...