checkboxen of radio buttons direct verwerken
Er is dus een kolomvector (display) in mijn database (topics) die de waardes 0 of 1 kan bevatten. 0 = niet tonen, 1 = wel tonen (op de website). Hoe kan je dat in hemelsnaam voor elkaar krijgen? Ik gok javascript?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
$res = mysql_query("SELECT *, UNIX_TIMESTAMP(topic_date) AS topic_date FROM topics ORDER BY topic_date DESC");
if (mysql_num_rows($res) >= 1){
echo '<table class="topics_table">';
echo ' <tr>';
echo ' <td width="100"><span class="topics_title">Datum</span></td>';
echo ' <td width="250"><span class="topics_title">Titel</span></td>';
echo ' <td style="text-align:right;"><span class="topics_title">Zichtbaar</span></td>';
echo ' </tr>';
while ($row = mysql_fetch_assoc($res)){
$date = date("d-m-Y", $row['topic_date']);
if ($row['display'] == 1){ $checked = 'checked'; }
echo ' <tr>';
echo ' <td><span class="topics_text">' .$date. '</span></td>';
echo ' <td><span class="topics_text">' .$row['topic_title']. '</span></td>';
echo ' <td style="text-align:right;"><form method="post"><input type="checkbox" name="display" ' .$checked. ' /></form></td>';
echo ' </tr>';
}
echo '</table>';
}
?>
$res = mysql_query("SELECT *, UNIX_TIMESTAMP(topic_date) AS topic_date FROM topics ORDER BY topic_date DESC");
if (mysql_num_rows($res) >= 1){
echo '<table class="topics_table">';
echo ' <tr>';
echo ' <td width="100"><span class="topics_title">Datum</span></td>';
echo ' <td width="250"><span class="topics_title">Titel</span></td>';
echo ' <td style="text-align:right;"><span class="topics_title">Zichtbaar</span></td>';
echo ' </tr>';
while ($row = mysql_fetch_assoc($res)){
$date = date("d-m-Y", $row['topic_date']);
if ($row['display'] == 1){ $checked = 'checked'; }
echo ' <tr>';
echo ' <td><span class="topics_text">' .$date. '</span></td>';
echo ' <td><span class="topics_text">' .$row['topic_title']. '</span></td>';
echo ' <td style="text-align:right;"><form method="post"><input type="checkbox" name="display" ' .$checked. ' /></form></td>';
echo ' </tr>';
}
echo '</table>';
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Edo
Edo schreef op 05.11.2009 00:32:
Nu wil ik echter geen submit knop onderaan de pagina ofzo; ik wil dat elke checkbox die aan of uit wordt gevinkt DIRECT in de database verwerkt wordt. Hoe kan je dat in hemelsnaam voor elkaar krijgen? Ik gok javascript?
Javascript ajax
Jammer trouwens dat je een Unix_timestamp gebruikt en niet gewoon date of datetime of time.
Je kan door middel van onClick() een functie in javascript meegevenm bijv verwijzen naar een verwerkfunctie.
Voorbeeldcode, sorry voor de slechte opmaak maar heb even geen tijd voor kladblok e.d. :P
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
// natuurlijk include je eerst je connect bestanden e.d.
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
mysql_query('UPDATE tabel SET active="'.mysql_real_escape_string($_POST['setActive']).'", disabled="'.mysql_real_escape_string($_POST['setDisable']).'"')
}
else
{
echo 'Er ging iets fout: '.mysql_error();
}
?>
...html zooi...
<form id="testform" action="">
<input type="radio" value="setActive" name="setActive" onclick="this.form.submit()" />
<input type="radio" value="setDisabled" name="setDisable"onclick="this.form.submit()" />
</form>
// natuurlijk include je eerst je connect bestanden e.d.
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
mysql_query('UPDATE tabel SET active="'.mysql_real_escape_string($_POST['setActive']).'", disabled="'.mysql_real_escape_string($_POST['setDisable']).'"')
}
else
{
echo 'Er ging iets fout: '.mysql_error();
}
?>
...html zooi...
<form id="testform" action="">
<input type="radio" value="setActive" name="setActive" onclick="this.form.submit()" />
<input type="radio" value="setDisabled" name="setDisable"onclick="this.form.submit()" />
</form>
Het is heel basic en het werkt niet als je het gewoon knipt en plakt maar in essentie blijft het hetzelfde.
Gewijzigd op 01/01/1970 01:00:00 door Justin S
onchange(this);
Gewijzigd op 01/01/1970 01:00:00 door koen
Thanks , ik ga even aan de slag daarmee, maar waarom is het trouwens zonde om UNIX_TIMESTAMP te gebruiken ? Ik zet datums met NOW() in mijn sql table datetime en haal ze eruit met die unix timestamp. Ik had eerst ook een klein explode functietje gemaakt om die NOW() uit datetime te kunnen ontbinden, maar deze manier gaat veel sneller voor mijn gevoel.
Wat jij wil, dat het direct verwerkt word , moet wel degelijk met ajax. Het probleem met javascript hiden is dat het niet weg blijft namelijk :P
dus als het voor deze sessie is kan het inderdaad prima met javascript maar als je het ook in je DB wil hebben zal je het met Ajax moeten oplossen (of toch submitten)
En met javascript kun je niet verwijzen naar een verwerk-formulier en dat je dan bijvoorbeeld elke knop een "enable + topicnummer" meegeeft als name? <input type=radio name=enable .$row['topic_id']. /> ?
En als ik me niet vergis was het hele doel van het topic dat je daar vanaf wou