2010-05-01 33 views
7

Sorunumla ilgili herhangi bir öneriniz var mı? Aynı zamanda kullanıp kullanmam gerek. Kullanıcının yazdığı çıktıyı çıkarmam gerektiğinden alın. Ve post o mysql veritabanına o girdiye bağlı olarak erişmek gerekiyor çünkü.Aynı zamanda php ile alın ve aynı zamanda alın.

<form name="x" method="get" action="x.php"> 
<input name="year" type="text"> 

<select name="general" id="general"> 
     <font size="3"> 
     <option value="YEAR">Year</option> 

</form> 

Bu irade çıkışı kullanıcı kontrol edecektir şeye bağlı mysql içeriği: Bu şuna benzer

<form name="y" method="post" action"y.php"> 
<input name="fname" type="checkbox"> 
</form> 

Ve bu gibi bir şey olacaktır kombine bu ikisinin şekli eylemini:

<?php 

       if($_POST['general'] == 'YEAR'){ 
        ?> 
        <?php echo $_GET["year"]; ?> 
        <?php 
      $result2 = mysql_query("SELECT * FROM student 
    WHERE student.YEAR='$syear'"); 
    ?> 
    <table border='1'> 
      <tr> 

        <?php if ($ShowLastName) { ?><th>LASTNAME</th><?php } ?> 
        <?php if ($ShowFirstName) { ?><th>FIRSTNAME</th><?php } ?> 
     </tr> 

    <?php while ($row = mysql_fetch_array($result2)) { 
     if (!$result2) { 

    } 
     ?> 
      <tr> 
        <td><?php echo $row['IDNO']?> </td> 
        <td><?php echo $row['YEAR'] ?> </td> 
    <?php if ($ShowLastName) { echo('<td>'.$row['LASTNAME'].'</td>'); } ?></td> 
        <?php if ($ShowFirstName) { echo('<td>'.$row['FIRSTNAME'].'</td>'); } ?> 

Bunu yaptığımda çok fazla tanımlanmamış hata alıyorum. Kullanıcı tarafından girilen değeri mysql verileriyle birlikte elde etmek için ne yapmamızı tavsiye edebilirsin.

+0

Neden, tam olarak, hem $ $ ve hem de $ _POST 'işlevini aynı anda kullanmanız gerekiyor? Şimdiye kadar verdiğiniz sebepler mantıklı değil. – outis

+0

aslında sadece benim fikrim. Ben aynı şeyi elde etmek için alternatifler neler olduğunu soruyorum – user225269

+0

nihayet bu ve önceki soruların cevaplarını gözden geçirebilir ve en cevapsız soruları kabul edebilir ya da soruların cevaplarını neden sorunuzu çözmediğimi belirtmek için sorularınızı düzenleyebilir misiniz? Teşekkürler. – Gordon

cevap

45

HTTP Request ürününü yalnızca bir adet verb (POST, GET, PUT, ...) alabilirsiniz. Ancak,

<form name="y" method="post" action="y.php?foo=bar"> 

yapabilir ve gönderilen talep POST'ed olmasına rağmen daha sonra PHP yanı $_GET['foo'] dolduracaktır. Ancak, sorunlarınız iki farklı komut dosyasına yönelik olarak send two forms at once'u denediğiniz için çok daha fazla görünüyor. Bir istek içinde bu imkansız.

+0

Belki bir JavaScript ile göndermeden önce eylemi değiştirebiliriz. Dostum, bunun için bakıyordum, teşekkürler! – dpp

+0

Bu iyi bir uygulama mı? Bunu bir Web Service REST API'si için yapmayı, yöntem adını '' $ _GET'' ve '' $ _POST'' gibi özel yöntem paramlarını göndermeyi düşünüyordum ama bu –

+0

@ ile ilgili herhangi bir öneri olup olmadığını öğrenmek istedim. JuanCarlosAlpizarChinchilla "yöntem adını gönder" ile ne demek istediğinden emin değil. REST API genellikle yöntem isimlerini göndermez. Yukarıdaki fiile ilişkin bir tavsiyenin farkında değilim, yukarıdaki fiiller ile ilgili linkte verilenlerin dışında. Örneğin, – Gordon

4

Aynı anda bir GET ve POST yapamazsınız.

İki formu birleştirin. Örneğin, formları bir 'post' formuna birleştirin. Kod özünüzde $ _POST 'dan ne gerekiyorsa yapın.

Ve 'YEAR', 'Yıl' ile aynı değil, örnek kodunuzun da çalışması gerekiyor.

3

Diğer cevaplarla sayarken, aynı anda hem posta hem de posta isteği yapamazsınız. Ancak, bir get veya post isteği ile alınan bir değişkeni okumak için PHP kodunuzu birleştirmek isterseniz, $_REQUEST

3

POST ve GET (HEAD, FILE, DELETE gibi) HTTP methods olarak kullanılabilir. Eğer (bir web dinleyicisi gelen istek başlığı örneğini) aynı anda iki yöntem gönderilmedi böylece Tarayıcınız isteğinin önüne bunlardan biriyle sunucuya bir HTTP isteği göndermek:

GET/HTTP/1.1[CRLF] 
Host: web-sniffer.net[CRLF] 
Connection: close[CRLF] 
User-Agent: Web-sniffer/1.0.31 (+http://web-sniffer.net/)[CRLF] 
Accept-Encoding: gzip[CRLF] 
Accept-Charset: ISO-8859-1,UTF-8;q=0.7,*;q=0.7[CRLF] 
Cache-Control: no[CRLF] 
Accept-Language: de,en;q=0.7,en-us;q=0.3[CRLF] 
Referer: http://web-sniffer.net/[CRLF] 

büyük GET ve POST POST farkı URL'dan bir yanıt alması ve POST'un bu URL'ye bazı içerik verileri göndermesidir. Formunuzu gönderdiğinizde, veriler enctype özelliği tarafından tanımlanan standart bir biçimde toplanır ve bu kez de bir URL'ye gönderilir.

Ayrıca, url standart bir biçimde biçimlendirilmiş ve 'un arkasında bulunan dizenin bir kısmı mı? karakter QUERY STRING olarak adlandırılır.

Sunucu veri aldığında, bu bilgileri, URL'yi okuyan ve yöntemin, isteğin gövdesinin (verilerin) ve diğer birçok şeyin okunan PHP'ye iletir. Son olarak, , kullanıcı verilerinin neyi gönderdiğini ($_SERVER, $_GET ve $_POST ve diğerlerinin bir kısmı) size bildirmek için, bu verilerle birlikte süper küresel dizileri doldurur;

Önemli Uyarı! Ayrıca eğer PHP $ _GET süper küresel kelimesini URL'nin sorgu dizgisi ile doldurursa ve nihayetinde $ _POST supererglobal, istek gövdesinde bulunan verilerle $ _POST ve $ _GET HTTP ile ilgili değildir.

<form method="post" action="http://myurl/index.php?mygetvar=1&mygetvar=2"> 
    <input name="year" type="text" /> 
    <imput type="submit" /> 
</form> 
2

Bu test değil ama olası bir çözüm: Eğer $ 'POST ve aynı sürede $ _GET doldurmak istiyorsanız

Yani, bu şekilde Formunuzu göndermelidir değişkenler bein değil almak dahil önceki hata: tamamen aptal kanıt, ama değil

$request_uri = $_SERVER['REQUEST_URI']; 
$request_uri = str_replace("&", "?", $request_uri); 
$request_args = explode("?", $request_uri); 
foreach($request_args as $key => $val) { 
    if(strpos($val, "=") > 0) { 
     $nvp_temp = explode("=", $val); 
     $_GET[$nvp_temp[0]] = $nvp_temp[1]; 
    } 
} 

... bir formun işlem değeri üzerinden GET değişkenleri göndermek için ben bir başlık ("Konum") ile ilgili bir sorun koştu g sunucu tarafından $ _GET altında http://website.com/page?msg=0 gibi bir URL ile görüldü, ancak $ _SERVER ['REQUEST_URI'] değişkeninde mevcuttu. Umarım bu yardımcı olur ve iyi şanslar!

İlgili konular