Selecteren datums in rij

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pierre Web

Pierre Web

30/03/2015 15:15:51
Quote Anchor link
Hallo,

voorbeeldje ingekorte table:

+----+--------------+
| id | datum --- |
+----+--------------+
| 1 | 2015-02-05 --|
| 2 | 2015-02-10-- |
| 3 | 2015-02-10 --|
| 4 | 2015-02-12 --|
+----+--------------+

Dit geeft in een rij:

2015-02-05
----------------
2015-02-10
-----------------
2015-02-10
--------------------
2015-02-12
--------------------


Is het mogelijk het op deze manier te verkrijgen, zodat alles met datum 2015-02-10 in een rij komt?

2015-02-05
----------------
2015-02-10
2015-02-10

--------------------
2015-02-12
--------------------
Gewijzigd op 30/03/2015 15:20:52 door Pierre Web
 
PHP hulp

PHP hulp

16/11/2024 00:30:54
 
Thomas van den Heuvel

Thomas van den Heuvel

30/03/2015 15:25:22
Quote Anchor link
Ik neem aan dat je een scripttaal gebruikt om e.e.a. af te drukken?

Dit kun je doen door bij te houden wat de datum van het huidige record is. Indien de volgende datum verschilt, start je eerst een nieuwe rij en sla je deze nieuwe datum op.
 
Pierre Web

Pierre Web

30/03/2015 15:43:02
Quote Anchor link
Bedankt voor reactie

PHP Mysqli

Heb je een voorbeeldje ?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

30/03/2015 16:05:45
Quote Anchor link
Je bedoelt denk ik dat je het in één rij wilt zetten als zowel id als datum hetzelfde zijn?

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

$lastId
= -1;
$lastDate = '';

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

    if($lastId != $row['id'] || $lastDate != $row['datum'])
    {

        $lastId = $row['id'];
        $lastDate = $row['datum'];

        // er begint een nieuwe id en/of datum
    } else {
        // nog steeds dezelfde id en datum
    }
}


?>
 
Thomas van den Heuvel

Thomas van den Heuvel

30/03/2015 16:23:24
Quote Anchor link
In het oorspronkelijke voorbeeld staan al verschillende id's, dus ik denk dat deze buiten beschouwing gelaten kunnen worden. Als ik het voorbeeld van de topicstarter exact volg, wil deze initieel (nog voordat er gegevens worden afgedrukt) geen nieuwe rij tonen, dus de eerste keer dat de datum verandert is anders dan de rest.

Zodoende zou ik tot de volgende code komen (verder niet getest):
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
<?php
$showDivider
= false;
$currentDate = '';

while ($row = mysqli_fetch_assoc($result)) {
    if ($currentDate != $row['datum']) {
        // update huidige datum
        $currentDate = $row['datum'];
        // toon scheiding?
        if ($showDivider) {
            // print scheiding hier
            // ...

        } else {
            // skip eerste scheiding
            $showDivider = true;
        }
    }

    // en wat je nog meer met $row wilt doen
    // ...

}
// print laatste scheiding hier
// ...

?>
 
Pierre Web

Pierre Web

30/03/2015 16:52:51
Quote Anchor link
Bedankt , moet het allemaal even bekijken.

Zoals in mij eerste post te zien is gaat het eigenlijk om een soort kalender,
ik wil de data uit table die op dezelfde dag zijn in een rij hebben

Uitgebreider voorbeeldje
+----+------------+----------+
| id | datum |aktiviteit|
+----+------------+----------+
| 1 | 2015-02-05 |werk |
| 2 | 2015-02-10 |vakantie |
| 3 | 2015-02-10 |markt |
| 4 | 2015-02-12 |test |
+----+------------+----------+

Dit geeft in een rij: (2015-02-10 2x apart, dus niet gewenst)

--------------------
2015-02-05
werk
--------------------
2015-02-10
vakantie
--------------------
2015-02-10
markt
------------------
2015-02-12
test
--------------------

wat ik zou willen

--------------------
2015-02-05
werk
--------------------
2015-02-10
vakantie
markt
--------------------
2015-02-12
test
--------------------


Ik heb volgende

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
<?php
$result
= $mysqli->query("SELECT *
FROM `gelijke_datums`
order by datum"
);
if ($mysqli->connect_errno) {
    printf("Connect failed: %s\n", $mysqli->connect_error);
    exit();
    }
?>



 <?php while ($row = $result->fetch_array())
                 {
                                
                $id = stripslashes($row['id']);                
                $datum = stripslashes($row['datum']);
                $activiteit = ($row['activiteit']);        
           ?>



 <p> <span><?php echo $datum ?></span> <a href="#<?php echo $id ?>" >
 <?php echo $activiteit ?></a> </p>
    <hr>
    <?php } ?>
Gewijzigd op 30/03/2015 20:16:30 door Pierre Web
 
Pierre Web

Pierre Web

24/04/2015 17:09:50
Quote Anchor link
Hoi,
Door tijdgebrek ff moeten laten liggen

Dit was voor mijn geval de oplossing

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
<?php
$showDivider
= false;
$currentDate = '';

while ($row = mysqli_fetch_assoc($result)) {
    if ($currentDate != $row['datum']) {
        // update huidige datum
        $currentDate = $row['datum'];
        // toon scheiding?
        if ($showDivider) {
            // print scheiding hier
            // ...

        } else {
            // skip eerste scheiding
            $showDivider = true;
        }
    }

    // en wat je nog meer met $row wilt doen
    // ...

}
// print laatste scheiding hier
// ...

?>


Ik krijg nu dezelfde datums en bijbehorende in EEN rij

----------------------
vrijdag 3 april
tekst A
vrijdag 3 april
tekst B
----------------------
enz

Is er een nog een mogelijkheid om EEN datum in een rij te printen of te laten zien :
----------------------
vrijdag 3 april
tekst A
tekst B
----------------------
 
Thomas van den Heuvel

Thomas van den Heuvel

24/04/2015 17:33:08
Quote Anchor link
Uhhh... Dit doe je toch gewoon door de datum te printen op het moment dat de datum verandert?

Moet je dat wel op de goede plaats doen natuurlijk...

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
<?php
$showDivider
= false;
$currentDate = '';

while ($row = mysqli_fetch_assoc($result)) {
    if ($currentDate != $row['datum']) {
        // update huidige datum
        $currentDate = $row['datum'];
        // *** PRINT HIER JE DATUM ***
        // toon scheiding?

        if ($showDivider) {
            // print scheiding hier
            // ...

        } else {
            // skip eerste scheiding
            $showDivider = true;
        }
    }

    // en wat je nog meer met $row wilt doen
    // *** PRINT HIER DE REST ***

}
// print laatste scheiding hier
// ...

?>
 
Pierre Web

Pierre Web

24/04/2015 19:17:03
Quote Anchor link
Mooi, heb je een voorbeeldje

@door de datum te printen op het moment dat de datum verander
 
Thomas van den Heuvel

Thomas van den Heuvel

24/04/2015 20:30:48
Quote Anchor link
Zie het bovenstaande codefragment en de toevoegingen *** TUSSEN STERRETJES ***.
 
Pierre Web

Pierre Web

24/04/2015 20:53:00
Quote Anchor link
Bedankt, moet het ff controleren krijg nou de tekst van een vorige dag bij rrn datum en geen scheiding van datums meer.
ik zal de volgorde hoe ik het heb eens nalopen.

Toevoeging op 25/04/2015 16:52:22:

Ik heb de scheiding hier gezet:(hr) en dat werkt nu goed.
bedankt voor je hulp Thomas!

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6

$currentDate = $row['datum'];

echo '<hr>';

 // *** PRINT HIER JE DATUM ***
Gewijzigd op 25/04/2015 16:53:21 door Pierre Web
 
Eddy E

Eddy E

26/04/2015 07:38:50
Quote Anchor link
Volgens mij wil je meer dit hebben:

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

    // stel $vorige_datum in
    $vorige_datum = false;

    while ($row = $result -> fetch_array())
    {

        $id = stripslashes($row['id']);
        $datum = stripslashes($row['datum']);
        $activiteit = $row['activiteit'];

        // datum en lijnen etc alleen tonen als het nodig is
        if ($vorige_datum != $datum)
        {

            // bij alle niet-eerste-rij de vorige <p> ook afsluiten
            if ($vorige_datum == false)
            {

                echo '</p>';
            }


            // paragraaf starten
            echo '    <p>';
            
            // een kopje plaatsen, want zo gebruik je het tenslotte
            echo '        <h4>' . $datum . '</h4>';
        }


        // elke activiteit printen, want hier gaat het om
        echo '<a href="#' . $id . '" >' . $activiteit . '</a>';

        // overschrijf datum
        $vorige_datum = $datum;
    }

    // laatste ook afsluiten uiteraard
    echo '</p><hr>';
?>


Daarnaast lijkt met een <hr> niet nodig: zet gewoon een lijn op je <p> met CSS.
 
Pierre Web

Pierre Web

26/04/2015 12:27:19
Quote Anchor link
Bedankt Eddy

Al is het nog niet goed met de P elementen, die heb ik er ff uitgelaten , want de uitvoer was:

</p> <p>

<h4>01-04-2015</h4><a href="#2076" >tekst 1</a>

<p><h4>02-04-2015</h4><a href="#2077" >tekst 2</a>

enz.

Wellicht goed om te zeggen dat ik de datum als tekst uiteindelijk in een div wil, al kan ik ook een ander element van een border enz. voorzien
 



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.