Query werkt niet zoals ik bedoel

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

George van Baasbank

George van Baasbank

16/02/2014 11:34:36
Quote Anchor link
Goedemorgen allemaal.

Ik zit met de volgende "uitdaging":

a. Ik heb een tabel met namen (pod__support)
b. Ik heb een tabel met met beschikbare functies (sys__select)
c. Ik heb een tabel die bovenstaande tabellen koppelt (kt__support)

Als een vrijwilliger zich aanmeldt worden zijn NAW-gegevens opgeslagen in de tabel pod__support. Voor de taken waarvoor hij zich beschikbaar stelt worden records aangemaakt in de tabel kt__support
Middels deze koppeltabel en de tabel sys__select zijn dan de gekozen activiteiten in beeld.
Dit werkt allemaal naar behoren.
Mijn uitdaging zit in de presentatie van een overzicht.
Als de vrijwilliger aangewezen is voor een bepaalde functie dan wordt in de tabel kt__support het veld <aangewezen> op TRUE gezet terwijl alle andere records dit veld op FALSE hebben staan.

Draai ik nu onderstaande query dan krijg ik niet wat ik graag zou willen zien:

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
<?php
$sql
= "SELECT
            ps.*,
            ss.inhoud,
            kt.aangewezen
        FROM
            pod__support AS ps
        JOIN
            kt__support AS kt
        ON
            kt.id_supportzijde = ps.email
        JOIN
            sys__select AS ss
        ON
            kt.id_selectzijde = ss.waarde
        ORDER BY
            ps.datum ASC"
;
?>


Deze query toont wel alle records uit de tabel kt__support. Zo zie ik in phpMyAdmin nu zeven records verschijnen waarvan één record het veld <aangewezen> de waarde TRUE heeft.

http://www.podiumspektakel.eu/images/klembord01.jpg

Run ik echter onderstaande code, dan heeft het veld <aangewezen> in alle records de waarde TRUE. Dus lijkt het mij dat de query in mijn geval niet goed verwerkt wordt.

http://www.podiumspektakel.eu/images/klembord02.jpg

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
<?php
                                while($rowAanmeldingen = mysqli_fetch_array($cResultAanmeldingen)) {
                                    $lAangewezen = $rowAanmeldingen['aangewezen'];
                                    if($lAangewezen === FALSE ) {
                                        $cAangewezen = "Nee";
                                    }
else {
                                        $cAangewezen = "Ja";
                                    }

                                  
                            ?>

                            <tr>
                                <td class="kolom2a" style="width: 10%;" ><div class="midden"><a href=""><img src="images/vinkje.jpg" width="28px" /></div></a></td>
                                <td class="kolom2a" style="width: 10%;" ><div class="midden"><a href=""><?Php echo $cAangewezen ; ?></div></a></td>
                                <td class="kolom2a" style="width: 20%;"><div class="standaardtekst"><?php echo $rowAanmeldingen['datum']; ?></div></td>
                                <td class="kolom2a" style="width: 30%;"><div class="standaardtekst"><?php echo $rowAanmeldingen['voornaam'] . " " . $rowAanmeldingen['tussenvoeg'] . " " . $rowAanmeldingen['achternaam'] ; ?></div></td>
                                <td class="kolom2a" style="width: 25%;"><div class="standaardtekst"><?php echo $rowAanmeldingen['inhoud'] ; ?></div></td>
                            </tr>
                            <?php } ?>


Waar maak ik nu de denkfout?

Toevoeging op 16/02/2014 12:34:10:

Topic gesloten, fout gevonden:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if($lAangewezen === FALSE ) {
   $cAangewezen = "Nee";
}
else {
   $cAangewezen = "Ja";
}

?>


moet zijn

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if($lAangewezen == 0 ) {
   $cAangewezen = "Nee";
}
else {
   $cAangewezen = "Ja";
}

?>


FALSE en TRUE worden blijkbaar niet ondersteund middels SQL
Gewijzigd op 16/02/2014 11:39:01 door George van Baasbank
 
PHP hulp

PHP hulp

24/11/2020 13:57:24
 
Bart V B

Bart V B

16/02/2014 12:43:10
Quote Anchor link
Topics worden niet gesloten hier.
En het is niet waar dat true en false niet worden ondersteund.
Je hebt gewoon niet de juiste veld waarde ingesteld. Als je met true en false wil werken dan moet het veld een boolean zijn. ;)
 
George van Baasbank

George van Baasbank

16/02/2014 12:45:26
Quote Anchor link
Dat klopt maar phpMyAdmin maakt hier een tinyint an

Toevoeging op 16/02/2014 12:45:58:

Waar en hoe sluit ik wel ee topic????
 
Bart V B

Bart V B

16/02/2014 12:51:59
Quote Anchor link
Ik lees het net.
Was al een tijdje geleden dat ik me in mysql had verdiept.
Het is/wordt een synoniem.
Dus deels is het waar dat het met 0 of 1 werkt. Dan zou je aan de php kant iet moeten doen met (bool).

Je kan geen topics sluiten.
Ze verdwijnen naar verloop van tijd gewoon naar beneden. Dus dan word er ook niet meer op gereageerd.
 
Erwin H

Erwin H

16/02/2014 16:22:25
Quote Anchor link
Om het helemaal correct te zeggen is dat nog maar de helft van het verhaal. Het datatype BOOL bestaat in SQL, alleen is het een alias voor een INT type. In de database staat het dus als een 0 of 1 en niet een false of true. Zoals Bart dus al zei.
Maar het gaat nog verder, want je krijgt je resultaten terug uit de database niet als een int, maar als een string. Omdat php een loosely typed taal is maakt dat niet heel veel uit, maar als je wilt checken op false toch wel enigszins:
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
<?php
//werkt dus niet
if($lAangewezen === FALSE ) {

//werkt dus ook niet
if($lAangewezen === 0 ) {

//werkt wel
if($lAangewezen == 0 ) {

//werkt ook
if($lAangewezen == FALSE ) {

//werkt ook
if($lAangewezen === '0' ) {
?>
 



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.