uit datbase checked of niet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

J A

J A

18/02/2008 21:43:00
Quote Anchor link
Hallo,

Ik heb een script waarmee ik via een checkboxen endergelijke dingen de database zet. Nou wil ik het er ook weer uit halen, een bewerk scriptje dus. Ik ben er net achter gekomen dat je een checkbox kunt checken door dit erin te zetten: CHECKED.
Nou dacht ik, dat is dan redelijk simpel om via de database dat te doen, maar helaas. Het lukte me niet :(

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
<?php
include('../connect.php');

$query = "SELECT * FROM portfolio_gemaakt WHERE portfolio_id= 38";

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

    trigger_error(mysql_error().'<br />In query: '.$query);
}


elseif(mysql_num_rows($res) == 0)
{

    echo 'Item is niet gevonden in database';
}


else
{


if(techniek_id == 1){
echo 'ja, hij moet aangevinkt zijn';
}

else {


echo 'nope, niet aangevinkt';


}
}


?>


Zoiets had ik in gedachten, techniek_id is een tabelnaam.
En ik heb maar even een zinnetje erneer gezet ipv dit:
<input type="checkbox" name="techniek[]" value="1" CHECKED />

Maar dit werkt niet echt, weet iemand hoe ik dit wel goed kan doe of zit ik gewoon helemaal in de verkeerde richting om mijn doel te berijken?
 
PHP hulp

PHP hulp

18/12/2024 04:25:19
 
M Ypma

M Ypma

18/02/2008 22:34:00
Quote Anchor link
waar haal je deze constante techniek_id vandaan?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if(techniek_id == 1){
?>

en je fetcht nergens je resultaat van je query, je kan dus nog niet je datag ebruiken wat je nu wel op een verkeerde manier probeert te doen.
 
Frank -

Frank -

18/02/2008 22:35:00
Quote Anchor link
Maar weer eens een linkje: SQL Beginners handleiding
 
J A

J A

19/02/2008 17:58:00
Quote Anchor link
Ik heb die handleiding even bekeken, maar helaas staat er wat ik wil niet echt in. Ik heb ook op google nog gezocht, helaas geen resultaten geboekt daardoor. Maar voordat ik verder ga, is dit wel de slimste manier om dit te doen wat ik wil ? Zo nee, wat is dan een slimmere manier?
 
Joren de Wit

Joren de Wit

19/02/2008 18:00:00
Quote Anchor link
Je vergeet het resultaat van de query te fetchen...
 
J A

J A

19/02/2008 18:30:00
Quote Anchor link
Fetchen is toch met while ? Ik heb dat geprobeerd, maar dat werkt ook niet :(

Maar dit zal dus wel betekenen dat dit de beste manier is om mijn doel te berijken :P ?
 
- SanThe -

- SanThe -

19/02/2008 18:35:00
Quote Anchor link
Fetchen heeft niets met een while te maken. Een while gebruik je alleen als je meerdere records verwacht op te halen.
 
Crispijn -

Crispijn -

19/02/2008 18:37:00
Quote Anchor link
de volgorde om iets uit een database te trekken is:

query opstellen ($sql = " ...")
query uitvoeren ($res = mysq_query($sql))
controleren of het gelukt is
zodra het gelukt is fetchen ($row = mysql_fetch_assoc($res))

daarna gaan vergelijken.

Ik mis dus wat logica in jou script hier
 
J A

J A

19/02/2008 18:44:00
Quote Anchor link
Ik heb die logica er dus nu in, maar hij geeft aan dat hij niet aangevinkt moet zijn. Maar er staat duidelijk een 1 op de plek in de tabel ... :s

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
<?php
include('../connect.php');

$query = "SELECT * FROM portfolio_gemaakt WHERE portfolio_id= 38";

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

    trigger_error(mysql_error().'<br />In query: '.$query);
}


else
{

   if($row = mysql_fetch_assoc($res)){
        if(techniek_id == 1){
            echo 'ja, hij moet aangevinkt zijn';
        }

        else {
            echo 'nope, niet aangevinkt';
        }
    }

}


?>
 
- SanThe -

- SanThe -

19/02/2008 18:45:00
Quote Anchor link
Zet dit bovenin je script.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);

// rest
?>

Edit: En waar komt 'techniek_id' vandaan?
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
 
J A

J A

19/02/2008 18:52:00
Quote Anchor link
Gedaan,

Ik kreeg eerst deze error:


Dus hij kent techniek_id niet, dus dat heb ik opgelost door dit ervan te maken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php // kleurtjes
// code ..


$techniek = $row[2];

        if($techniek == 4){  // nummer 4 omdat dit nummer daar ook echt in staat

//code ..

?>


En nu krijg ik de error:


Er is dus iets mis met:
$techniek = $row[2];
Maar ik weet niet hoe ik dit moet oplossen ...

Script wat ik nu heb:
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
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);

include('../connect.php');

$query = "SELECT * FROM portfolio_gemaakt WHERE portfolio_id= 38";

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

    trigger_error(mysql_error().'<br />In query: '.$query);
}


else
{

   if($row = mysql_fetch_assoc($res)){

   $techniek = $row[2];

        if($techniek == 7){
            echo 'ja, hij moet aangevinkt zijn';
        }

        else {
            echo 'nope, niet aangevinkt';
        }
    }

}


?>
Gewijzigd op 01/01/1970 01:00:00 door J A
 
Frank -

Frank -

19/02/2008 18:55:00
Quote Anchor link
Wanneer je techniek_id wilt ophalen, waarom vraag je dan alles op in de query? Dat maakt de boel onnodig langzaam.

De naam techniek_id is wat vreemd, zeker met een hardcoded 1 in je php-code. De 1 kan zo maar een 278494 of 1744595 zijn, dat kun je onmogelijk weten in je php-code. Hier zit dus een grote fout in de logica, jouw php-code mag niet afhankelijk zijn dynamische data in je database. (enkele uitzondering daargelaten)

$row['techniek_id'] zal jouw huidige probleem waarschijnlijk oplossen, het verbetert echter helemaal niks aan de logica.
 
- SanThe -

- SanThe -

19/02/2008 19:02:00
Quote Anchor link
Dat veld heet techniek_id?

$techniek = $row[2];
if($techniek == 7){

vervangen door
if($row['techniek_id'] == 7){
 
J A

J A

19/02/2008 19:07:00
Quote Anchor link
Quote:
Wanneer je techniek_id wilt ophalen, waarom vraag je dan alles op in de query? Dat maakt de boel onnodig langzaam.

Veranderd, het is nu:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$query
= "SELECT techniek_id FROM portfolio_gemaakt WHERE portfolio_id= 38";
?>


Oftewel, het kan dus niet werken, omdat die nummers overal voor kunnen staan. Het werkt dus helaas ook niet :(
Maar het moet wel een nummer zijn, want het is een koppeltabel tussen 2 andere tabellen. Waarbij hij de id's dus bij elkaar haald.
Zo ziet de tabel eruit, id heeft er niets mee te maken! de rest wel.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
id  | portfolio_id | techniek_id
--------------------------------
118 |   38         |   1
119 |   38         |   2
120 |   38         |   3
121 |   38         |   4
122 |   38         |   5
123 |   38         |   6


Edit:
@Santhe, ik heb het veranderd, maar als het nummer 1 daar voorkomt, dan geeft hij aan dat het er niet in zit. Terwijl dat er toch zeker wel inzit.
Gewijzigd op 01/01/1970 01:00:00 door J A
 
Frank -

Frank -

19/02/2008 19:10:00
Quote Anchor link
Wat is nu je doel? Ik krijg de indruk dat je 1 query nodig hebt die een JOIN legt tussen zowel de tabel portfolio als de tabel techniek om zo te bepalen wat is aangevinkt en wat niet. Wanneer dat het geval is, kunnen jouw vergelijkingen in PHP zo richting schroothoop, de oplossing moet je zoeken in SQL.
 
- SanThe -

- SanThe -

19/02/2008 19:11:00
Quote Anchor link
Je haalt maar 1 resultaat op en dat zal waarschijnlijk het eerste record zijn. Ik snap ook je hele bedoeling niet.
 
J A

J A

19/02/2008 19:27:00
Quote Anchor link
Oke, ik leg het nog even uit wat ik precies wil:

In de tabel staat portfolio_id en techniek_id. Dit is een koppeltabel tussen 2 andere tabellen die ik nodig had bij het toevoegen script. Om het goed te laten werken, omdat het om checkboxen gaat. Nu wil ik dus het bewerk script maken. Ik wil dus als ik naar de bewerk pagina ga voor een portfolio item. Dat de goede checkboxen zijn aangevinkt die al aangevinkt zijn tijdens het toevoegen.

Dus als ik het portfolio item id 38 wil veranderen. Moet hij dus kijken in de tabel die ik heb laten zien (genaamd: portfolio_gemaakt) op het portfolio_id 38. Daarnaast staat techniek_id, elk nummer heeft in een andere tabel zijn eigen eigenschap. (1 = PSD, 2 = HTML, 3 = CSS enz.)

Dus hij moet kijken bij portfolio_id 38 en kijken welke techniek_id's daarbij horen. Die techniek_id's komen dan weer overeen de value van het formpje:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<input type="checkbox" name="techniek[]" value="1" /> PSD <br />
<input type="checkbox" name="techniek[]" value="2" /> HTML <br />
<input type="checkbox" name="techniek[]" value="3" /> CSS <br />
<input type="checkbox" name="techniek[]" value="4" /> JavaScript <br />
<input type="checkbox" name="techniek[]" value="5" /> Flash <br />
<input type="checkbox" name="techniek[]" value="6" /> PHP


Dus:
Bijv.: Bij toevoegen vink ik alleen de 1e aan, PSD. Die komt in de database bij portfolio_gemaakt als:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
id = kan alles zijn
portfolio_id = komt overeen met het id van de tabel portfolio
techniek_id = komt overeen met het id van de tabel techniek

Dan wil ik het bewerken met een scriptje. Dan krijg ik dus weer dat formpje met die checkboxen. Nou moet dus de 1e (PSD) aangevinkt zijn!

Ik hoop nu dat jullie het snappen wat ik wil :)
 
Frank -

Frank -

19/02/2008 19:31:00
Quote Anchor link
Het wordt mij duidelijk. Het is mij tevens duidelijk dat je een probleem met de select-box hebt, jij hebt hardcoded waardes in je PHP staan. Geen mens die kan garanderen dat het record met id 1 bestaat en de waarde PSD bevat. Desondanks ga jij daar in jouw PHP-code wel vanuit.

Bij het samenstellen van de select-box (de options) zul je dus of het id van het record in de value moeten zetten, of gewoon de tekst (bv. PSD). Dan kun je later ook eenvoudig een vergelijking maken.
 
J A

J A

19/02/2008 19:44:00
Quote Anchor link
Hmm.. dat lijkt mij niet handig, omdat dan de rest van de scripts niet meer werken. Is er nog een andere optie om dit goed te doen?
 
Joren de Wit

Joren de Wit

19/02/2008 19:47:00
Quote Anchor link
Hoezo niet handig? Dat is juist handig! Als je een nieuwe techniek toevoegt aan de database komt hij op die manier direct in je keuzelijst te staan, je hoeft de PHP code dus niet meer aan te passen. Je bent toch bezig met het bouwen van een dynamische website?
 
Frank -

Frank -

19/02/2008 19:48:00
Quote Anchor link
Jordi schreef op 19.02.2008 19:44:
Hmm.. dat lijkt mij niet handig, omdat dan de rest van de scripts niet meer werken. Is er nog een andere optie om dit goed te doen?
Niet handig? Of blijkt nu dat er ontwerpfouten in je systeem zitten? Hoe denk jij een nieuwe optie toe te voegen aan de database? Dat gaat je niet lukken zonder ook jouw php-code aan te passen. Dat is toch niet echt wat men verstaat onder een dynamische website, of wel dan?
 

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.