PHP sınırsız alanlar?

2 Cevap php

Ben php sınırsız alanlar nasıl yapabilirim? İşte senaryo:

İlk name1, son name1: İlk başta, sadece 2 alanlar, lets denilen vardır

Ben renkli "eklemek", yeni satırdaki diğer 2 alanları katacak, alanlar etiket / ad, ilk isim2 olmalıdır son ad2 tıkladığımda ne yapmak istediğinizi, olduğunu. Ben tekrar tıkladığımda Ve, bu yüzden ilk NAME3, son NAME3 ve olacak ..

Herkes bana php bazı örnek komut verebilir misiniz? Ben PHP için yeni duyuyorum.

Form HTML olmalıdır. Biri Ajax örnek kod verebilir, büyük bir artı olacaktır.

2 Cevap

Yani demek ne bağlıdır "alanında." PHP olmaz bir form bahsediyoruz, ama onun yerine HTML konum sanki geliyor. Sen bir düğme olabilir [Ekle] sonra da form-girişli başka bir dizi ile sayfayı yeniler sunucusuna geri göndermek. Ayrıca sayfayı yenilemek zorunda kalmadan javascript ile bunu.

Simple Javascript (jQuery) Example:

$(document).ready(function(){
  $("input[value='Add']").click(function(event){
    event.preventDefault();
    $("p.field:last").clone().insertAfter("p.field:last");
  });
});

<form method="post">
  <p class="field">
    <input type="text" name="firstname[]" value="" /> 
    <input type="text" name="lastname[]" value="" />
  </p>
  <p>
    <input type="submit" name="submit" value="Add" /> 
    <input type="submit" name="submit" value="Done" />
  </p>
</form>

Simple PHP Example:

I don't encourage you use this as-is

<?php

  $count = 1;

  if ($_POST["submit"] == "Add") {

    $count = ($_POST["firstname"]) ? (count($_POST["firstname"]) + 1) : 1;

  } else 
  if ($_POST["submit"] == "Done") {

    print "<pre>";
    print_r($_POST["firstname"]);
    print_r($_POST["lastname"]);
    print "</pre>";

  }

?>
<form method="post">
  <?php for($i = 0; $i < $count; $i++) { ?>
  <p class="field">
    <input type="text" name="firstname[]" value="<?php print $_POST["firstname"][$i]; ?>" /> 
    <input type="text" name="lastname[]" value="<?php print $_POST["lastname"][$i]; ?>" />
  </p>
  <?php } ?>
  <p>
    <input type="submit" name="submit" value="Add" /> 
    <input type="submit" name="submit" value="Done" />
  </p>
</form>

Bunu yapmanın iki yolu, sadece PHP kullanarak veya bazı fantezi JavaScript tarafından da vardır. Ben PHP-tek çözüm mücadele edecek. Orada sunucuya tur gezileri tekrarlanan olmaz ama bir PHP çözüm herkes için çalışır oysa o da sadece, JavaScript etkin kullanıcılar için çalışır gibi bir JavaScript çözümü çok daha duyarlı olacaktır.

Çözeltinin bir genel hatları şudur:

  1. Başlangıçta $count 1 ve bir satır oluşturulur.
  2. Kullanıcı tıkladığında ekleme, form dahil bir gizli count değişkeni ile geri aynı PHP dosyası yayınlanmıştır. Komut başından itibaren yeniden başlar, artışlarla $count, ve son bir kez daha görüntüler bir daha satır.
  3. Kullanıcı tıkladığında Gönder varsa, girilmiş isimler işlenir.

İşte bazı örnek kod. Ben bu yüzden tamamen denenmemiş PHP Ben bunu yazıyorum makinede yüklü yok özür dileriz. Umarım çok korkunç sözdizimi hataları yok!

<?php
  $count = isset($_POST['count']) ? $_POST['count'] : 1;

  if (isset($_POST['add']))
    ++$count;
  else if (isset($_POST['submit']))
  {
    header('Content-Type: text/plain');
    print_r($_POST);
    exit;
  }
?>

<html>
  <body>
    <form action="<?php echo htmlspecialchars($_SERVER['REQUEST_URI']) ?>" method="post">
      <input type="hidden" name="count" value="<?php echo $count ?>" />

      <?php for ($i = 1; $i <= $count; ++$i) { ?>

        [<?php echo $i ?>]
        First: <input type="text" name="firstName<?php echo $i ?>"
                      value="<?php echo htmlspecialchars($_POST["firstName$i"]) ?>" />
        Last:  <input type="text" name="lastName<?php echo $i ?>"
                      value="<?php echo htmlspecialchars($_POST["lastName$i"]) ?>" />
        <br />

      <?php } ?>

      <input type="submit" name="add"    value="Add"    />
      <input type="submit" name="submit" value="Submit" />
    </form>
  </body>
</html>

Oh ve eh, bir JavaScript çözüm istiyor? Eh zaten gerçekten güzel jQuery cevap var. Nasıl gülünç uzun düz JavaScript çözümü konusunda, o zaman?

<html>
  <head>
    <script type="text/javascript">
    // <![CDATA[

      var count = 0;

      function addRow() {
        var table      = document.getElementById("table");
        var row        = document.createElement("tr");
        var countCell  = document.createElement("td");
        var countText  = document.createTextNode(++count);
        var firstCell  = document.createElement("td");
        var firstInput = document.createElement("input");
        var lastCell   = document.createElement("td");
        var lastInput  = document.createElement("input");

        firstInput.type = "text";
        firstInput.name = "firstName" + count;
        lastInput.type  = "text";
        lastInput.name  = "lastName" + count;

        table    .appendChild(row);
        row      .appendChild(countCell);
        countCell.appendChild(countText);
        row      .appendChild(firstCell);
        firstCell.appendChild(firstInput);
        row      .appendChild(lastCell);
        lastCell .appendChild(lastInput);
      }

    // ]]>
    </script>
  </head>

  <body>
    <form action="somewhere.php" method="post">
      <table id="table">
        <tr>
          <th>Row</th>
          <th>First</th>
          <th>Last</th>
        </tr>
      </table>

      <script type="text/javascript">
        addRow();
      </script>

      <input type="button" value="Add" onclick="addRow()" />
      <input type="submit" value="Submit" />
    </form>
  </body>
</html>