In database???

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Cedric

Cedric

07/02/2007 13:01:00
Quote Anchor link
Hallo, ik heb een systeempje met een adminpagina.

Probleem 1:
Op die pagina zou ik een checkbox willen plaatsen. Als ik dan op OK druk dan zou er een "0" moeten in de database geschreven worden en als het gecheckt is dan een "1". Als ik dan die pagina opnieuw bezoek zou die checkbox ook al juist moeten ingevuld zijn met de string uit de database (gecheckt bij 1).

Probleem 2:
Op een andere pagina zou ik dan moeten kijken of in de database een 1 of een nul zit (die checkbox).Zoiets:

if in de database een nul{
actie
}

Kan iemand helpen?
 
PHP hulp

PHP hulp

20/11/2024 04:41:47
 
Joren de Wit

Joren de Wit

07/02/2007 13:16:00
Quote Anchor link
Als het formulier gepost is controleer je of de checkbox al dan niet aangevinkt is. Met andere woorden, je controleert of $_POST['naam_van_checkbox'] bestaat.

Afhankellijk daarvan voer je een INSERT query uit die de betreffende waarde in de database weg schrijft. Als je het zelfde script wilt gebruiken voor het updaten (waar het wel op lijkt) zou ik een INSERT ... ON DUPLICATE KEY UPDATE query gebruiken. Dus iets als:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
INSERT INTO tabel (id, checkbox)
VALUES (1, 0)
ON DUPLICATE KEY UPDATE checkbox = 0


Waar ik nu een 1 en 0 ingevuld hebt, kun je die natuurlijk zelf vervangen met variabelen uit je script. Dus bijvoorbeeld $_POST['id'].

Om ervoor te zorgen dat een checkbox aangevinkt is in het formulier als er een 1 in de database staat, zul je die gegevens eerst uit de database op moeten halen met een SELECT query. Vervolgens controleer je de waarde die in het veld 'checkbox' staat en afhankelijk daarvan laat je de checkbox 'checked' of niet zijn.

Ditzelfde kun je gebruiken voor je tweede probleem. Je query zou dan zoiets worden als:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
SELECT id, checkbox
FROM tabel
WHERE id = 1

Ook hier kun je de 1 weer vervangen door een variabele.
 
Cedric

Cedric

07/02/2007 13:19:00
Quote Anchor link
Straks zal ik eens proberen, dat eerste zal waarschijnlijk wel lukken maar dat tweede niet. :S

Het moet iets zijn van: if die value is nul dan een actie doen, jij haalt iets op.
 
Marvin S

Marvin S

07/02/2007 13:23:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
//dit stukje zorgt ervoor dat de uitvoer
//OF 1 OF 0 wordt, ligt er dus aan of die
//aangevinkt is ja of nee

if (!isset($_POST['checkbox']))
{

  $_POST['checkbox="0"'];
}
else
{
  $_POST['checkbox="1"'];
}

?>


je moet je query aanpassen en deze waardes erbij voegen.. met uiteraard
de naam van het veld die jij gebruikt voor die checkbox...

$query = "INSERT INTO tabel (checkbox1) VALUES ($_POST['checkbox']);";


hiermee maak je het stukje formulier die die checkbox weergeeft

<form name="form" method="post" action="dezepagina.php">
<input type="checkbox" name="checkbox" value="checkbox">
</form>



en dit stukje plaats je op de pagina waar je wilt laten zien of het een 0 of 1 is...
uiteraard wel weer de naam van het veld veranderen

<tr>
<td>jouwnaam:</td>
<td><input
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php if ($row['checkbox']=="1") { print "1"; } ?>
type="checkbox" name="jouwnaam" /></td>
</tr>
Gewijzigd op 01/01/1970 01:00:00 door Marvin S
 
Cedric

Cedric

07/02/2007 13:28:00
Quote Anchor link
Dat ziet er zeker bruikbaar uit, bedankt! Ik moet nu nog even wat werken voor school en dan ga ik het meteen uittesten. Ik post het wel als ik problemen heb.
 
Cedric

Cedric

07/02/2007 14:26:00
Quote Anchor link
Het is goed aan het lukken.
Gewijzigd op 01/01/1970 01:00:00 door Cedric
 
Joren de Wit

Joren de Wit

07/02/2007 16:48:00
Quote Anchor link
@Marvin: er zitten nog wel wat fouten in de scripts die jij geeft...

Zo klopt dit bijvoorbeeld niet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$_POST
['checkbox="0"'];
?>


En ook het weergeven van een aangevinkte checkbox doe je niet op de manier die jij gebruikt. Een checkbox die aangevinkt is heeft deze code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<input type="checkbox" name="naam" value="iets" checked="checked">


Daarnaast horen integers niet tussen quotes. Het zijn integers en geen strings.

@Cedric: ja klopt, ik haal alleen iets op. Dit in de veronderstelling dat je zelf wel snapte hoe je dan kunt controleren of een opgehaalde waarde overeenkomt met een andere waarde.
 
Cake Masher

Cake Masher

07/02/2007 16:58:00
Quote Anchor link
dus alles samengevat:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
if (!isset($_POST['checkbox'])) {
  $query = "INSERT INTO tabel (checkbox) VALUES (1)";
}
else {
  $query = "INSERT INTO tabel (checkbox) VALUES (0)";
}

if(mysql_query($query)) {
 echo "Done!";
}
else {
 echo mysql_error();
}

?>

///////
je form:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<input type="checkbox" naam="checkbox" <?php if($DitMagJeZelfDoen == '1'){ echo "checked";} ?> />


zo iets..
Gewijzigd op 01/01/1970 01:00:00 door Cake Masher
 
Cedric

Cedric

07/02/2007 17:04:00
Quote Anchor link
Ik geraak er helemaal geen wijs meer uit xD :'(
 
Joren de Wit

Joren de Wit

07/02/2007 17:05:00
Quote Anchor link
Waar loop je nu vast dan? Zo'n opmerking kunnen wij verder ook weinig mee...
 
Cedric

Cedric

07/02/2007 17:07:00
Quote Anchor link
Ik snap het helemaal niet met die array enzo. (ik weet wat het is, maar ik kan niet begrijpen waarom ik dit nodig heb.) Ik moet gewoon elke checkbox een value geven en in de tabel zetten. En doe ook apart kunnen aanspreken.
 
Joren de Wit

Joren de Wit

07/02/2007 17:10:00
Quote Anchor link
En hoe herken je de checkboxen onderling dan? Je kunt namelijk in de database wel een lijst met nullen en enen proppen, maar dat heeft geen nut als je ze niet onderling kunt herkennen.
 
Cedric

Cedric

07/02/2007 17:13:00
Quote Anchor link
Het gaat ons dus om dat form, de mysql tabel, en die kleine stukjes php, ik zal ze even posten en we kunnen ze bespreken.
 
Cedric

Cedric

07/02/2007 17:14:00
Quote Anchor link
CREATE TABLE `opties` (
`value` varchar(255) NOT NULL default '',
PRIMARY KEY (`value`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;



<form name="form" method="post" action="opties.php">
<p>Laatst aangepast weergeven:
<input type="checkbox" name="checkbox" value="checkbox"
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php if($row['functie1'] == "1") { echo 'checked=""';} ?>
>
<br>
Funtie 2:
<input type="checkbox" name="checkbox2" value="checkbox"
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php if($row['functie2'] == "1") { echo 'checked=""';} ?>
>
<br>
Functie 3:
<input type="checkbox" name="checkbox3" value="checkbox"
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php if($row['functie3'] == "1") { echo 'checked=""';} ?>
>
</p>
<p>
<input type="submit" name="send" value="Opslaan">
<br>
</p>
</form>




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
<?php if($_SESSION["ingelogd"] == "TRUE"){

if (!isset($_POST['checkbox']))
{

  $_POST['checkbox'] = "0";
}
else
{
  $_POST['checkbox'] = "1";
}


if (isset($_POST['send']))
{

$query = "UPDATE `opties` SET `value` = '".$_POST['checkbox']."'";
$sql = mysql_query($query);
}

$query = "SELECT * FROM `opties`";
$sql = mysql_query($query);
$row = mysql_fetch_array($sql);
?>
Gewijzigd op 01/01/1970 01:00:00 door Cedric
 
Joren de Wit

Joren de Wit

07/02/2007 17:21:00
Quote Anchor link
Ja, maar kijk het gaat dus al fout bij je database. Jij hebt nu een tabel met maar 1 kolom, 'value'. Hoe wil je nu ooit alle nullen en enen die je in de database wilt schrijven uit elkaar gaan houden?

Je zult dus minimaal een tabel met twee kolommen moeten hebben:

opties
-------
id (int, primary key, auto_increment)
value (int)

Daarnaast werk je in php met $row['functiex']. Als $row het resultaat is van een mysql_fetch_array() verwijst 'functiex' naar de kolomnaam uit een tabel. Maar aangezien die helemaal naam helemaal niet bestaat in je tabel, gaat dit dus niet werken.

Maar misschien dat het ook even handig is als je uitlegt wat je precies met dit script wilt bereiken. Dan is het mogelijk je ook wat tips te geven met betrekking tot je datamodel en hoe je het php gedeelte zou kunnen aanpakken.
 
Cedric

Cedric

07/02/2007 17:25:00
Quote Anchor link
Het datamodel was eerst met een id, maar het leek dat ik het niet nodig had :P. Ik die functiex enzo heb ik erbij geflapt zodat ik vlug meerdere checkboxes heb. Ik zal nu even alles uitleggen zodat je het beter begrijpt:

Ik heb een cms systeem met sessies. Dus als ik inlog wordt er een sessie aangemaakt en ga je naar het control panel. Daar heb ik ook een pagina opties gemaakt. De eerste functie die ik ga maken is als een dat speciale vinkje is aangevinkt dan zal op de output van het cms de datum en door wie het gepost is weergegeven worden, is het niet aangevinkt dan gebeurt er niks. Maar ik moet zo ook meerdere functies kunnen maken.

Hoop dat je het beter begrijpt.
 
Cedric

Cedric

07/02/2007 17:32:00
Quote Anchor link
Dus wat zou ik nu moeten doen om het een beetje werkend te krijgen?

Database is in orde, maar hoe moet ik het doen voor het php gedeelte?
Gewijzigd op 01/01/1970 01:00:00 door Cedric
 
Joren de Wit

Joren de Wit

07/02/2007 17:36:00
Quote Anchor link
Tja, dan zul je toch eens moeten beginnen met je datamodel.

Je zult dus een tabel met opties moeten hebben waarbij je minimaal de volgende velden hebt:

opties
-------
id
omschrijving
active

Naamgeving maakt natuurlijk niet uit, maar zo is het duidelijk:
id - Het unieke veld waardoor je verschillende opties kunt herkennen.
omschrijving - De omschrijving van de optie.
active - Het veld dat aangeeft of de optie geactiveerd is of niet.

Als we vervolgens eerst kijken naar het uitlezen van deze gegevens en het maken van een lijstje met checkboxes:
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
29
30
31
32
33
34
35
36
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
$sql = "
    SELECT
        id,
        omschrijving,
        active
    FROM
        opties
    "
;

if(!$res = mysql_query($sql))
{

    trigger_error(mysql_error());
}

else
{
    echo '<form action="" method="">';
    
    while($row = mysql_fetch_assoc($res))
    {

        if($row['active'] == 0)
        {

            echo $row['omschrijving'].': <input type="checkbox" name="opties[]" value="'.$row['id'].'"><br>';
        }

        else
        {
            echo $row['omschrijving'].': <input type="checkbox" name="opties[]" value="'.$row['id'].'" checked="checked" /><br>';
        }
    }

    
    echo '<input type="submit" />';
    echo '</form>';
}

?>

Dit is een minimale opzet voor een formuliertje zoals jij wilt gegenereerd aan de hand van gegevens uit de database. Nu kun je zelf verder met het voorbeeldscript dat ik al eerder gaf hoe je dit formulier kunt gaan verwerken.

ps. Niet bumpen! Is nergens voor nodig en mag pas na 24 uur...
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
 
Cedric

Cedric

07/02/2007 17:53:00
Quote Anchor link
Hiermee kan ik de active rij niet aanpassen... En als ik bv doe

if($row['active'] == 1)
{ iets doen
}

Dat kan niet lukken want hij weet niet welke optie het is...
Sorry als ik wat dom lijk :S Maar dit is moeilijk voor mij xD
 
Joren de Wit

Joren de Wit

07/02/2007 17:56:00
Quote Anchor link
Bij welk gegeven een checkbox hoort is meegegeven in de value van de checkbox, namelijk het id van een optie. Als je dit formulier dus verstuurt krijg je van alle aangevinkte checkboxen een record te zien. Van die weet je dus dat active op 1 gezet moet worden. Van de rest weet je dat die op 0 moet staan...
 
Cedric

Cedric

07/02/2007 17:58:00
Quote Anchor link
Euhh, sorry maar dit toont of deze functie active staat in de database of niet... Ik moet namelijk de active stand kunnen aanpassen. En zoals daarnet hoe kan ik dit dan doen?

if functie1 = 1 dan echo
 

Pagina: 1 2 volgende »



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.