checkboxen of radio buttons direct verwerken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Edo

Edo

05/11/2009 00:32:00
Quote Anchor link
Heey, ik ben bezig een hele website te bouwen en ben nu met een stukje admin bezig. Ik heb een bepaalde pagina waar een hele lijst met geschreven topics komen te staan in een tabel van 3 kolommen: datum dat het geschreven is, titel van het topic en als derde een checkbox of twee radio buttons om het bericht zichtbaar of niet-zichtbaar te maken. 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.

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>';
    
    }

?>
Gewijzigd op 01/01/1970 01:00:00 door Edo
 
PHP hulp

PHP hulp

09/01/2025 12:44:54
 
- SanThe -

- SanThe -

05/11/2009 00:35:00
Quote Anchor link
Je script in je post is nu niet echt leesbaar. Pas je post even aan en gebruik en tags om je code heen. Om php code zet je uiteraard dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php en ?>
Gebruik je Afbeelding knop om dit te doen.

SanThe.
 
Michael -

Michael -

05/11/2009 04:12:00
Quote Anchor link
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.
 
Justin S

Justin S

05/11/2009 10:05:00
Quote Anchor link
@Turmin: Dit kan ook gewoon met javascript.

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)
PHP script in nieuw venster Selecteer het PHP script
1
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>



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
 
Jaron T

Jaron T

05/11/2009 10:07:00
Quote Anchor link
onchange(this);
 
Koen

koen

05/11/2009 10:08:00
Quote Anchor link
edit: nvm, ik zag de post verkeerd
Gewijzigd op 01/01/1970 01:00:00 door koen
 
Edo

Edo

05/11/2009 11:19:00
Quote Anchor link
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.
 
Jacco Engel

Jacco Engel

05/11/2009 11:22:00
Quote Anchor link
Edo jij geeft nu 2 verschillende dingen aan

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)
 
Edo

Edo

05/11/2009 11:25:00
Quote Anchor link
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']. /> ?
 
Jacco Engel

Jacco Engel

05/11/2009 11:29:00
Quote Anchor link
Dat kan prima maar dan moet je de submit knop gaan gebruiken :)

En als ik me niet vergis was het hele doel van het topic dat je daar vanaf wou
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.