check op data

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Mark moes

mark moes

04/02/2009 20:09:00
Quote Anchor link
Hoi,
Ik probeer alle tekst op mijn site vanuit de database te halen.
Nou wil ik een controle inbouwen dat als er geen data is, er een melding wordt weer gegeven dat er geen data is.

Dat heb ik als volgt geprobeerd:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
            // data exists
            if($query) {
                while($result = mysql_fetch_array($query)) {
                echo $result['bericht'];
                }
            }

            // no data excists
            else {
                echo 'Op dit moment zijn er nog geen gegevens beschikbaar.';
            }

?>

Hier heb ik vervolgens een functie van gemaakt, maar dat werkt nog niet zoals het helemaal moet.

Ik wil namelijk de eerste echo, de echo waarmee ik dus het resultaat uit de database haal, als het ware variabel maken. Ik wil namelijk de functie meerdere keren aanroepen, eerst voor de titel, dan bericht, en vervolgens op datum en bron.

Als je meer informatie wilt, zegt u t maar, ik weet het niet meer... :S

Gr. mark
 
PHP hulp

PHP hulp

28/03/2024 23:15:56
 
- SanThe -

- SanThe -

04/02/2009 20:21:00
Quote Anchor link
Beetje vreemd dit:
if($query) {

Zie de diverse tutorials.
Bouw foutafhandeling in.
 
Dbr Br

Dbr Br

04/02/2009 20:25:00
Quote Anchor link
Werkt die afhandeling gegevens/geen gegevens wel naar behoren op deze manier?
Of is het probleem dat je niet weet welke variabele je op wilt halen?

1) Controleren of er gegevens in je result (hetgeen mysql_query terug geeft) zitten kan op meerdere manieren. Een gemakkelijke manier is mysql_num_rows():

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
<?php

$exec
= mysql_query( 'SELECT * FROM table WHERE id = 1');

if(mysql_num_rows( $exec ) > 0){

   // ja, er zijn gegevens, hier fetchen

}else{

  // nee geen gegevens, echo'en maar

}
?>


2) Je wilt meerdere variabelen ophalen uit je database? Ja dat kan. In de SELECT query kun je aangeven welke kolommen er opgehaald worden. "*" voor alle kolommen, anders de kolomnaam specificeren, gescheiden door een komma, zoals SELECT id, name, title FROM table.

Daarna kunnen deze gegevens opgehaald worden met mysql_fetch-array():

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php

while($data = mysql_fetch_array( $exec )){

   echo $data[ 'title' ];  // kolomnaam 'title' in de DB
   echo $data[ 'message']; // kolomnaam 'message' in DB
   // etc.

}
?>


Hopelijk helpt je dit verder.
Gewijzigd op 01/01/1970 01:00:00 door Dbr Br
 
- SanThe -

- SanThe -

04/02/2009 20:27:00
Quote Anchor link
@Dave: Waarom beide scriptjes twee keer in je post?

Edit: Okee, je had het al door en je was een stuk sneller. ;-)
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
 
Dbr Br

Dbr Br

04/02/2009 20:29:00
Quote Anchor link
Ja, UBB-parser is een beetje buggy, naar het schijnt :P
Gewijzigd op 01/01/1970 01:00:00 door Dbr Br
 
Mark moes

mark moes

05/02/2009 11:01:00
Quote Anchor link
@SanThe:
die if($query) { sloeg op hierop, was ik vergeten in te voegen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$query
= mysql_query("SELECT titel,bericht,datum,link FROM tekst WHERE id='". $id ."'");
?>


Ik ben beginnend, wil t graag goed leren, kun je mij vertellen welke controles ik moet inbouwen? of anders een linkje geven, spit ik t zelf door.

@ Dave:
Jou script komt volgens mij aardig overeen met het doel wat ik met dat van mij voor ogen had, alleen waar het me om gaat is dat ik dit script in een functie wil stoppen, en vervolgens de gegevens, wanneer die bestaan, op een andere plek echoen.

EDIT:
Ik wil dus de kolomnaam als het ware variabel maken. Dat ik dus wanneer ik de functie aanroep een andere kolomnaam kan gebruiken.
Gewijzigd op 01/01/1970 01:00:00 door mark moes
 
- SanThe -

- SanThe -

05/02/2009 11:36:00
Quote Anchor link
mark moes schreef op 05.02.2009 11:01:
@SanThe:
die if($query) { sloeg op hierop, was ik vergeten in te voegen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$query
= mysql_query("SELECT titel,bericht,datum,link FROM tekst WHERE id='". $id ."'");
?>

$query is dus niet zoals de naam doet vermoeden een query, maar een result van het uitvoeren van een query. $result zou een betere benaming zijn.
 
Mark moes

mark moes

05/02/2009 11:55:00
Quote Anchor link
Edit (laatste edit)

Na heel veel edits hier in deze topic, en heel veel gepruts meer van mij, kan ik de blijde mededeling doen dat ik 'er uit' ben. Graag wat feedback (bijvoorbeeld van SanThe, jij gaf aan dat er meer controle moest komen)
of de controles goed zijn, en of er geen fouten in zitten.

Dit heb ik er van gemaakt, en het werkt hier vlekkeloos:

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
37
38
39
40
41
42
43
44
45
46
47
<?php

    if(isset($_GET['id']) && is_numeric($_GET['id'])) {
        $id = $_GET['id'];
    }

    else {
        $id = 1;  

    }

    
$sql = "SELECT * FROM tekst WHERE id='". $id ."'";

$result = mysql_query($sql);

    if (mysql_num_rows($result) >=1)
    {

        while ($row = mysql_fetch_array($result))
        {

        echo '<div class="headline">';
            echo $row['titel'];
        echo '</div>';

        echo '<div class="text">';
            echo $row['bericht'];
        echo '</div>';
        
        echo '<div class="footer">';
            echo $row['datum'];    
        echo '</div>';
        
        }
    }

    else
    {
        echo '<div class="headline">';

        echo '</div>';

        echo '<div class="text">';
            echo 'Op dit moment zijn er (nog) geen gegevens beschikbaar.';
        echo '</div>';
        
        echo '<div class="footer">';

        echo '</div>';
    }

?>


Ik hoor t graag! Van fouten wil ik leren...
Gewijzigd op 01/01/1970 01:00:00 door mark moes
 



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.