Random plaatje laten zien eens per dag

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

29/09/2010 15:13:15
Quote Anchor link
Hoe laat je een plaatje eens per dag zien en dan ook nog random uit de database gehaald?

EDIT: ik bedoel dat één plaatje de hele dag moet blijven staan en de volgende dag vervangen moet worden door een andere.

Je krijgt dan een soort "tip van de dag".
Gewijzigd op 29/09/2010 15:14:40 door
 
PHP hulp

PHP hulp

22/11/2024 09:14:11
 
Hidde Oost

Hidde Oost

29/09/2010 15:36:31
Quote Anchor link
Je zet een datum in de tabel waar ook de path staat naar het plaatje?
 
Tobias Tobias

Tobias Tobias

29/09/2010 15:38:45
Quote Anchor link
maak een databasetabel:

plaatje:
- datum (date)
- afbeelding (varchar)

In je site kijk je of er al een item in je tabel staat met de datum van vandaag date('Y-m-d'). Zo niet, maak er dan een aan met bv $afbeelding = rand(0,9999)."jpg" en gooi deze waarde in de tabel met de datum vandaag erbij: date('Y-m-d')

Haal de gegevens uit de database en echo ze als echo "<img scr=".$afbeelding.">"
 

29/09/2010 15:43:46
Quote Anchor link
@Hidde en @Tobias

Het moet anders kunnen...

Ik heb allemaal linken in een database staan met plaatjes.
Die zijn dus al eerder toegevoegd.

Op deze manier haal ik er al eentje random uit: ORDER BY RAND()
Dus bij iedere pageview van een bezoeker wijzigt dit plaatje.
Maar nu nog hetzelfde plaatje de hele dag laten staan en pas laten wijzigen als het de volgende dag is.
 

29/09/2010 15:45:34
Quote Anchor link
Hoe staan de afbeeldingen in je db? Hoeveel afbeeldingen heb je?
Gewijzigd op 29/09/2010 15:46:31 door
 

29/09/2010 16:01:13
Quote Anchor link
@ Karl

De database heet linken.
Een van de kolom namen is "plaatje".
Zo zet ik ze erin: plaatje/camera.jpg
Ongeveer 600 plaatjes.
 
Hidde Oost

Hidde Oost

29/09/2010 16:02:47
Quote Anchor link
Dus als ik naar jouw website ga, zie ik plaatje 32 de heledag lang maar Tobias bijvoorbeeld plaatje 33 de heledag lang?

Zo ja, iets met cookies doen?

setcookie("naampje", "plaatje id", time()+1440000);
Gewijzigd op 29/09/2010 16:04:59 door Hidde Oost
 
- SanThe -

- SanThe -

29/09/2010 16:12:30
Quote Anchor link
Maak een extra tabelletje met de velden: datum (DATE) en plaatje (VARCHAR)

Bij het openen van de pagina waar het plaatje moet komen:
SELECT datum, plaatje FROM tabelletje WHERE datum = DATE(NOW())
Als mysql_num_rows is 0
{
SELECT plaatje FROM ..... ORDER BY RAND() LIMIT 1
UPDATE tabelletje SET datum = DATE(NOW()), plaatje is plaatje_uit_de_select
}
echo plaatje
 
Hidde Oost

Hidde Oost

29/09/2010 16:15:08
Quote Anchor link
SanThe Nvt op 29/09/2010 16:12:30:
Maak een extra tabelletje met de velden: datum (DATE) en plaatje (VARCHAR)

Bij het openen van de pagina waar het plaatje moet komen:
SELECT datum, plaatje FROM tabelletje WHERE datum = DATE(NOW())
Als mysql_num_rows is 0
{
SELECT plaatje FROM ..... ORDER BY RAND() LIMIT 1
UPDATE tabelletje SET datum = DATE(NOW()), plaatje is plaatje_uit_de_select
}
echo plaatje


Het moet per gebruiker verschillend zijn, begrijp ik hier uit:

Elsy Vriens op 29/09/2010 15:43:46:
Dus bij iedere pageview van een bezoeker wijzigt dit plaatje.
Maar nu nog hetzelfde plaatje de hele dag laten staan en pas laten wijzigen als het de volgende dag is.
Gewijzigd op 29/09/2010 16:15:30 door Hidde Oost
 
Tobias Tobias

Tobias Tobias

29/09/2010 16:22:00
Quote Anchor link
dan zou ik idd met coockies gaan werken.
Of in de tabel het ip-adres van bezoeker (zou ik wel regelmatig laten legen, anders word thij snel vol)
 
- SanThe -

- SanThe -

29/09/2010 16:24:48
Quote Anchor link
Hidde Statema op 29/09/2010 16:15:08:

Het moet per gebruiker verschillend zijn, begrijp ik hier uit:

Elsy Vriens op 29/09/2010 15:43:46:
Dus bij iedere pageview van een bezoeker wijzigt dit plaatje.
Maar nu nog hetzelfde plaatje de hele dag laten staan en pas laten wijzigen als het de volgende dag is.



Volgens mij bedoelt Elsy daar mee dat het nu per view wijzigt en wil ze dat per dag laten wijzigen. Dat dan elke bezoeker op die bepaalde dag hetzelfde plaatje ziet lijkt mij geen probleem. Maar Elsy heeft uiteraard het laatste woord. ;-)
 

29/09/2010 16:32:03
Quote Anchor link
@Hidde

Nee, dat was het voorbeeld van wat ik nu heb met "favoriet deze maand"
Het plaatje moet de hele dag blijven staan, ongeacht hoeveel pageviews er zijn of hoe veel bezoekers.

@SanThe

Ik begrijp:
- hij zoekt een plaatje met de datum van vandaag.
- als deze datum er niet is zet hij de datum van vandaag erin.
- zo kun je dus 1 plaatje laten zien.

Ik ga er mee aan de slag....

Toevoeging op 29/09/2010 22:52:54:

@SanThe

Misschien kun je me nog even helpen met het script want daar ben ik niet zo goed in.

Dit is wat ik nu heb en er wordt niets getoond.

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
<?php
          //    laat de tip van de dag zien                    
            $query = "
                SELECT
                    plaatje,
                    date
                FROM
                    linken_nieuw
                WHERE
                    date = DATE(NOW())"
;
            $row = mysql_fetch_assoc($result);
            
                                    
            if(mysql_num_rows($result) == 0){
            $query = "
                SELECT
                    plaatje
                FROM
                    linken_nieuw
                ORDER BY RAND()
                LIMIT 0,1
                UPDATE
                    linken_nieuw
                SET
                    date = DATE(NOW())"
;
                                   }

            $result = mysql_query($query);
                if(!$result){
                            trigger_error(mysql_error().'<br />In query: '.$query) ;
                            }
else{
                            $row = mysql_fetch_assoc($result);
            //laat 1 maal daags een plaatje zien.
            echo $row['plaatje'];
            }

            ?>
 
- SanThe -

- SanThe -

30/09/2010 22:47:29
Quote Anchor link
Hallo Elsy, ik was even een dagje weg. Maar hier alsnog het scriptje waarvan ik denk dat het moet werken.
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
48
<?php
//    laat de tip van de dag zien                    
$query = "    SELECT
                plaatje
            FROM
                linken_nieuw
            WHERE
                date = DATE(NOW())"
;
$result = mysql_query($query);
if(!$result)
{

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

else
{
    $row = mysql_fetch_assoc($result);
    if(mysql_num_rows($result) == 0)
    {

        $query = "    SELECT
                        plaatje
                    FROM
                        linken
                    ORDER BY RAND()
                    LIMIT 0,1"
;
        $result = mysql_query($query);
        if(!$result)
        {

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

        else
        {
            $row = mysql_fetch_assoc($result);
            $query = "    UPDATE
                            linken_nieuw
                        SET
                            date = DATE(NOW()),
                            plaatje = "
. $row['plaatje'] . "'";
            $result = mysql_query($query);
            if(!$result)
            {

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

//laat 1 maal daags een plaatje zien.
echo $row['plaatje'];
?>
Gewijzigd op 30/09/2010 22:49:57 door - SanThe -
 

30/09/2010 23:16:57
Quote Anchor link
@SanThe

Hij laat inderdaad 1 plaatje zien en in de database staat de datum van vandaag ingevuld.

Wat ik niet goed begrijp in het script is dit:
- je zegt dat als het resultaat == 0 dan laat je 1 plaatje random zien.
- heb je wel een resultaat dan update je dus de database met de datum van vandaag.
Ik zou denken dat dit andersom moet staan, of niet?

Het script is nu zo geworden, ik heb alleen de output gewijzigd.


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
48
49
50
51
52
53
54
55
56
<?php
//    laat de tip van de dag zien                    
$query = "    SELECT
                plaatje,
                url,
                naam
            FROM
                linken_nieuw
            WHERE
                date = DATE(NOW())"
;
$result = mysql_query($query);
if(!$result)
{

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

else
{
    $row = mysql_fetch_assoc($result);
    if(mysql_num_rows($result) == 0)
    {

        $query = "    SELECT
                        plaatje,
                        url,
                        naam
                    FROM
                        linken_nieuw
                    ORDER BY RAND()
                    LIMIT 0,1"
;
        $result = mysql_query($query);
        if(!$result)
        {

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

        else
        {
            $row = mysql_fetch_assoc($result);
            $query = "    UPDATE
                            linken_nieuw
                        SET
                            date = DATE(NOW()),
                            plaatje = "
. $row['plaatje'] . "'";
            $result = mysql_query($query);
            if(!$result)
            {

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

//laat 1 maal daags een plaatje zien.
echo '<div align="center">';
echo '<a href="'.$row['url'].'"><img src="'. $row['plaatje'].'" border="0"></a>';
echo '<div style="clear:both"></div>';    
echo '<div class="naam"><a class="favoriet" href="'.$row['url'].'" target="_blank" alt="Naar de website van '.$row['naam'].'" title="Naar de website van '.$row['naam'].'">'.$row['naam'].'</a></div>';
echo '</div>';
?>


EDIT: hij laat wel de laatste invoer zien die ik in de database heb gezet. Dit kan natuurlijk toeval zijn. Ik zal morgen kijken of er een ander plaatje komt te staan.
Gewijzigd op 30/09/2010 23:26:55 door
 
- SanThe -

- SanThe -

30/09/2010 23:37:05
Quote Anchor link
Elsy Vriens op 30/09/2010 23:16:57:

Wat ik niet goed begrijp in het script is dit:
- je zegt dat als het resultaat == 0 dan laat je 1 plaatje random zien.
- heb je wel een resultaat dan update je dus de database met de datum van vandaag.
Ik zou denken dat dit andersom moet staan, of niet?


Ik neem aan dat je eerst even een nieuwe kolom hebt gemaakt in de database met de velden 'plaatje' en 'datum'. Zo te zien heet die 'linken_nieuw'. Daar kijk je of de datum de datum van vandaag is. Zo niet, dus resultaat == 0 rijen gevonden, dan haal je een random plaatje uit jouw 'oude' tabel waar alle plaatjes in staan. Die tabel heet volgens mij 'linken'. Dat opgehaalde plaatje is het nieuwe plaatje van vandaag en wordt in de tabel 'linken_nieuw' gezet, evenals de datum van vandaag. Ik hoop dat het zo duidelijk is.

Bij de tweede select heb jij van de tabelnaam 'linken' weer 'linken_nieuw' gemaakt, dat moet dus niet. Daar moet de tabelnaam staan waar alle plaatjes in staan. In 'linken_nieuw' staat altijd maar één plaatje.
 

30/09/2010 23:41:31
Quote Anchor link
Oké, ik heb het dus fout gedaan.
Ik had een nieuwe kolom aangemaakt in de bestaande linken database.
Zal het even aanpassen....
 
- SanThe -

- SanThe -

30/09/2010 23:44:11
Quote Anchor link
Je begrijpt wel het idee wat er achter zit toch?
 

30/09/2010 23:55:17
Quote Anchor link
Ik geloof het wel.

Om de verwarring van de tabellen weg te halen, even uitleg.

De originele tabel met alle plaatjes en linken heet: linken_nieuw.
De nieuw aangemaakte tabel heb ik zo genoemd: tip_van_de_dag.

Ik weet niet of ik op de juiste manier de url en de naam goed uit de database haal. Dit moet namelijk ook bij het plaatje vermeld worden.
Nu krijg ik een foutmelding en het plaatje wijzigt bij iedere pageview.

Script nu:
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
48
49
50
51
52
53
54
<?php
//    laat de tip van de dag zien                    
$query = "    SELECT
                plaatje
            FROM
                tip_van_de_dag
            WHERE
                date = DATE(NOW())"
;
$result = mysql_query($query);
if(!$result)
{

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

else
{
    $row = mysql_fetch_assoc($result);
    if(mysql_num_rows($result) == 0)
    {

        $query = "    SELECT
                        plaatje,
                        url,
                        naam
                    FROM
                        linken_nieuw
                    ORDER BY RAND()
                    LIMIT 0,1"
;
        $result = mysql_query($query);
        if(!$result)
        {

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

        else
        {
            $row = mysql_fetch_assoc($result);
            $query = "    UPDATE
                            tip_van_de_dag
                        SET
                            date = DATE(NOW()),
                            plaatje = "
. $row['plaatje'] . "'";
            $result = mysql_query($query);
            if(!$result)
            {

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

//laat 1 maal daags een plaatje zien.
echo '<div align="center">';
echo '<a href="'.$row['url'].'"><img src="'. $row['plaatje'].'" border="0"></a>';
echo '<div style="clear:both"></div>';    
echo '<div class="naam"><a class="favoriet" href="'.$row['url'].'" target="_blank" alt="Naar '.$row['naam'].'" title="Naar '.$row['naam'].'">'.$row['naam'].'</a></div>';
echo '</div>';
?>


Foutmelding:
Notice: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''' at line 5
In query: UPDATE tip_van_de_dag SET date = DATE(NOW()), plaatje = plaatje/vistaprint_plaatje.jpg' in /home/***/domains/***.nl/public_html/index-test.php on line 964

964 is het einde van het script:
if(!$result)
{
trigger_error(mysql_error().'<br />In query: '.$query) ;
}
 
- SanThe -

- SanThe -

01/10/2010 00:06:36
Quote Anchor link
Ik zie dat je nu ook de url en naam wilt hebben. Dat houdt in dat je deze twee velden ook even moet toevoegen aan tip_van_de_dag. Als je dat hebt gedaan zou dit moeten werken. Ik heb het foutje eruit gehaald en de aanpassingen er bij gedaan.
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
48
49
50
51
52
53
54
55
56
57
58
<?php
//    laat de tip van de dag zien                    
$query = "    SELECT
                plaatje,
                url,
                naam
            FROM
                tip_van_de_dag
            WHERE
                date = DATE(NOW())"
;
$result = mysql_query($query);
if(!$result)
{

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

else
{
    $row = mysql_fetch_assoc($result);
    if(mysql_num_rows($result) == 0)
    {

        $query = "    SELECT
                        plaatje,
                        url,
                        naam
                    FROM
                        linken_nieuw
                    ORDER BY RAND()
                    LIMIT 0,1"
;
        $result = mysql_query($query);
        if(!$result)
        {

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

        else
        {
            $row = mysql_fetch_assoc($result);
            $query = "    UPDATE
                            tip_van_de_dag
                        SET
                            date = DATE(NOW()),
                            plaatje = '"
. $row['plaatje'] . "',
                            url = '"
. $row['url'] . "',
                            naam = '"
. $row['naam'] . "'";
            $result = mysql_query($query);
            if(!$result)
            {

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

//laat 1 maal daags een plaatje zien.
echo '<div align="center">';
echo '<a href="'.$row['url'].'"><img src="'. $row['plaatje'].'" border="0"></a>';
echo '<div style="clear:both"></div>';    
echo '<div class="naam"><a class="favoriet" href="'.$row['url'].'" target="_blank" alt="Naar '.$row['naam'].'" title="Naar '.$row['naam'].'">'.$row['naam'].'</a></div>';
echo '</div>';
?>
Gewijzigd op 01/10/2010 00:08:01 door - SanThe -
 

04/10/2010 14:55:29
Quote Anchor link
@SanThe

Het werkt nog niet goed.
Ik heb dit in de tabel staan:
- id
- date
- plaatje
- url
- naam

Hij geeft nu een ander plaatje weer bij iedere pageview.

Wat ik begrijp van het script hoe hij nu is:

- selecteer een plaatje uit tip_van_de_dag
- als er geen plaatje inzit selecteer er dan 1 uit linken_nieuw
- zet deze in tip_van_de_dag
- laat deze op de pagina zien

Hij laat wel een plaatje zien maar waarschijnlijk komt dit plaatje uit het stukje waar je hem opvraagt uit linken_nieuw.
Er wordt niets in de tabel tip_van_de_dag gezet.
 
- SanThe -

- SanThe -

04/10/2010 17:03:46
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
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?php
//    laat de tip van de dag zien                    
$query = "    SELECT
                plaatje,
                url,
                naam
            FROM
                tip_van_de_dag
            WHERE
                date = DATE(NOW())"
;
$result = mysql_query($query);
if(!$result)
{

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

else
{
    $row = mysql_fetch_assoc($result);
    if(mysql_num_rows($result) == 0)
    {

        $query = "    SELECT
                        plaatje,
                        url,
                        naam
                    FROM
                        linken_nieuw
                    ORDER BY RAND()
                    LIMIT 0,1"
;
        $result = mysql_query($query);
        if(!$result)
        {

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

        else
        {
            $row = mysql_fetch_assoc($result);
            $query = "    INSERT INTO
                            tip_van_de_dag
                        (
                            date,
                            plaatje,
                            url,
                            naam
                        )
                        VALUES
                        (
                            DATE(NOW()),
                            '"
. $row['plaatje'] . "',
                            '"
. $row['url'] . "',
                            '"
. $row['naam'] . "'
                        )"
;
            $result = mysql_query($query);
            if(!$result)
            {

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

//laat 1 maal daags een plaatje zien.
echo '<div align="center">';
echo '<a href="'.$row['url'].'"><img src="'. $row['plaatje'].'" border="0"></a>';
echo '<div style="clear:both"></div>';    
echo '<div class="naam"><a class="favoriet" href="'.$row['url'].'" target="_blank" alt="Naar '.$row['naam'].'" title="Naar '.$row['naam'].'">'.$row['naam'].'</a></div>';
echo '</div>';
?>
 

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.