Iken dan $ _POST veri ile mysql güncellemek döngü

3 Cevap php

Update mysql with $_POST data from while loop

Kafamda yuvarlak bu almak için çalışıyorum, ama oldukça zor başarısız am: [

I have 3 rows in a database which i am echoing out in a while() loop. A user can change search_terms and then save the fields in mysql, however i don't quite know how to do this, as there are 3 rows, so i can't just do;

<?php
    if($_POST['update']) {
        mysql_query("....");
    }
?>

İşte benim kod;

<?php
    $box_query = mysql_query("SELECT * FROM `ta_boxs`");
    while($box = mysql_fetch_array($box_query)) {

        echo '<div class="box_content">';
        echo '<div class="box">'."\n";
        echo '<span class="box_top"></span>';
        echo '<div class="box_header"><input type="text" id="title" name="title" class="title-input" value="'.$box['title'].'" /></div>';
        echo '<span class="sept"></span>';
        echo '<div class="admin-back">';
        echo '<form id="form-'.$box['id'].'" name="form-'.$box['id'].'" method="post" action="">';
        echo '<p class="sub"><span>Includes:</span> Search for these terms in Twitter Feeds.</p>';
        echo '<p class="sub-small">Please enter one word per field or click "add word".</p>';
        echo '<p><input type="text" id="search_term_1" name="search_term_1" value="'.$box['search_term_1'].'" class="term-input" />';
        echo '<p><input type="text" id="search_term_2" name="search_term_2" value="'.$box['search_term_2'].'" class="term-input" />';
        echo '<p><input type="text" id="search_term_3" name="search_term_3" value="'.$box['search_term_3'].'" class="term-input" />';
        echo '<span class="hr"></span>';
        echo '<p class="sub"><span>Excludes:</span> Ignore these terms in Twitter Feeds.</p>';
        echo '<p class="sub-small">Please enter one word per field or click "add word".</p>';
        echo '<p><input type="text" id="search_term_1" name="search_term_1" value="'.$box['exc_search_term_1'].'" class="term-input" />';
        echo '<p><input type="text" id="search_term_2" name="search_term_2" value="'.$box['exc_search_term_2'].'" class="term-input" />';
        echo '<p><input type="text" id="search_term_3" name="search_term_3" value="'.$box['exc_search_term_3'].'" class="term-input" />';
        echo '<input type="hidden" id="update" name="update" value="yes" />'
        echo '<p><input type="submit" id="update_'.$box['id'].'" name="update_'.$box['id'].'" value="Update" /></p>';
        echo '</form>';
        echo '</div>';
        echo '</div>'."\n";
        echo '<span class="box_bottom"></span>';
        echo '</div>';  
    }
?>

Orada 1 çıkış, ya da 100 olabilir, ama onsubmit, hepsini kurtarmak için bir yol ihtiyacı olabilir. Herhangi bir fikir?

3 Cevap

Since you're outputting each box in a different <form> you'll only every get one back. If you change:

<input type="hidden" id="update" name="update" value="yes" />

karşı

<input type="hidden" id="update" name="update" value="' . $box['id'] . '" />

Then you'll be able karşı look which one was posted back.

Ben Birden formları üreten çünkü yaklaşım çalışacağını sanmıyorum, bu yüzden PHP sadece gönderilen bir form alacak ve size sayfadaki tüm değişiklikleri kaydetmek mümkün olmayacaktır.

Sen (http://php.net/manual/en/faq.html.php#faq.html.arrays bakınız) bir formu kullanarak ve bir dizi gibi girdileri adlandırma düşünebilirsiniz.

örneğin (Basitleştirilmiş)

<form method="post">

<?php while($box = mysql_fetch_array($box_query)): ?>

<!-- div box thing -->  

<input name="box[<?php echo $box['id'];?>][search_term_1]" value="<?php echo $box['search_term_1']; ?>">
<input name="box[<?php echo $box['id'];?>][search_term_2]" value="<?php echo $box['search_term_2']; ?>">
<input name="box[<?php echo $box['id'];?>][search_term_3]" value="<?php echo $box['search_term_3']; ?>">

<input name="box[<?php echo $box['id'];?>][exc_search_term_1]" value="<?php echo $box['exc_search_term_1']; ?>">
<input name="box[<?php echo $box['id'];?>][exc_search_term_2]" value="<?php echo $box['exc_search_term_2']; ?>">
<input name="box[<?php echo $box['id'];?>][exc_search_term_3]" value="<?php echo $box['exc_search_term_3']; ?>">

<!-- end div box thing -->

<?php endwhile; ?>

</form>

Eğer print_r($_POST) Bu formu gönderdikten sonra bunu / süreç üzerinde döngü oldukça kolay olacağını görmelisiniz.

bir form yapmak,

ve bu formdaki tüm alanları ayarlayın,

göndermek için bir düğme,

Eğer kutu kimliği ile form yapmak gibi her satıra giriş elemanları benzersiz id vermek