3 fotos op pagina die willekeurig aan en uitgezet kunnen worden.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Alexander van den Hoek

Alexander van den Hoek

06/07/2013 15:14:24
Quote Anchor link
Hallo,

Ik heb mezelf met de volgende uitdaging opgescheept.
Ik heb in de database drie foto's staan. Deze foto's kan de ik aan en uit zetten voor weergave op het scherm.
De foto's staan naast elkaar op de website.
Als ze alle drie aanstaan dan moeten de foto's kleiner worden weergeven dat als er bijv twee of 1 aan staat.
Ik heb met if en else if dit stukje kunnen regelen.
Hieronder de code zoals ik het nu in een test gedaan heb Ik heb nu even tabellen gebruikt voor het gemak:
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
<?

//test waarde
$test ="25";

if ($test<"10")
{

// 1 foto met opmerking
echo'<table width="600" border="1"><tr><td>bovenste</td></tr><tr><td>onderste</td></tr></table>';
}

else if ($test<"20")
{

// 2 fotos met opmerkingen
echo '<table width="400" border="1"><tr><td>bovenlinks</td><td>bovenrechts</td></tr><tr><td>onderlinks</td><td>onderrechts</td></tr></table>';
}

else if ($test<"30")
{

// 2 fotos met opmerkingen.
echo '<table width="200" border="1"><tr><td>bovenlinks</td><td>bovenmidden</td><td>bovenrechts</td></tr><tr><td>onderlinks</td><td>ondermidden</td><td>onderrechts</td></tr></table>';
}

?>


Alleen ik heb dus drie foto's staan in mijn database en dus volgens mij 27 verschillende combinaties die gemaakt kunnen worden.

Het kan dus voorkomen dat foto 1 en 2 uitstaan en dat alleen foto 3 aanstaat. Deze moeten dan worden weergeven in tabel met 1 foto, maar het kan ook zijn dat 2 en 3 aanstaan en 1 uit dan moeten 2 en drie worden gegeven in de tabel waar twee foto's in staan.

Er kunnen dus 27 verschillende combinaties mogelijk zijn en deze wil ik dan voren naar mijn if else zodat de foto(s) optimaal kunnen weergegeven worden.


Kunnen jullie mij in de juiste richting wijzen?
Ik heb geen zin om alle 27 combinaties uit te typen en ik denk dat het ook niet nodig is.

met vriendelijke groeten,

Alexander
 
PHP hulp

PHP hulp

26/11/2024 18:35:44
 
Obelix Idefix

Obelix Idefix

06/07/2013 16:44:51
Quote Anchor link
Hoezo 27 combinaties?
Je kunt toch met een query opvragen hoeveel er aan staan?
Uitkomst is (0,) 1, 2 of 3.
 
Robert Wazzaa

Robert Wazzaa

06/07/2013 17:41:59
Quote Anchor link
ik denk dat als je de getallen neerzet zonder quotes dat het moet werken.
Je behandeld de getallen nu als 'text' en groter/kleiner dan snapt dit dan niet.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

06/07/2013 19:31:23
Quote Anchor link
Robert, onderschat PHP niet!
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if ('a' > 'b') echo 'groter';
else echo 'kleiner'
// geeft groter
?>

Maar Obelix heeft gelijk, je kan de foto's die aan staan gewoon met de query ophalen en dan met num_rows bepalen hoeveel foto's het zijn.
 
Alexander van den Hoek

Alexander van den Hoek

07/07/2013 12:00:15
Quote Anchor link
Hallo,
Ik heb het voor elkaar om de optelling te maken. Dank voor jullie opmerkingen hierover.

Alleen ik heb nog een vraag hoe laat ik nu de tabel weten welke foto hij moet laden laten zien? De foto's komen uit drie verschillende tabellen.
Het kan voorkomen dat als er maar 1 foto wordt weergeven dat deze uit tabel 2 komt i.p.v. 1 of bij twee kunnen er ook verschillende combinaties optreden.
Of maak ik ergens een denkfout en kan dit niet?

Hieronder staat de code zoals ik hem nu gemaakt heb en werkend.
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<?

include('./connection/connectdb.php');

// HomePageFotoMiddenLinks
$querypicmiddenlinks = "SELECT * FROM HomePageFotoMiddenLinks WHERE HomePageFotoMiddenLinksAanUit='aan' ORDER BY HomePageFotoMiddenLinksDatum DESC LIMIT 1";
$resulpicmiddenlinks = mysqli_query($db_connect, $querypicmiddenlinks);
$picmiddenlinkscount = mysqli_num_rows($resulpicmiddenlinks);

while($row1 = mysqli_fetch_array($resulpicmiddenlinks)) {
   $picmiddenlinkstitle = $row1['HomePageFotoMiddenLinksTitel'];
   $picmiddenlinksdate = $row1['HomePageFotoMiddenLinksDatum'];
   $picmiddenlinksonoff = $row1{'HomePageFotoMiddenLinksAanUit'};
   $picmiddenlinksfullsize = $row1['HomePageFotoMiddenLinksFoto'];
   $picmiddenlinkstumbsize = $row1['HomePageFotoMiddenLinksTumb'];
    }

    
$count = mysqli_num_rows($resulpicmiddenlinks);
// Als de waarde van de tabel aanuit aan is wordt het record weergeven. Als deze uit is niet.    
if ($picmiddenlinksonoff == 'aan') {
    echo '<center><a href="../'.$picmiddenlinksfullsize.'" title="'.$picmiddenlinkstitle.'" rel="lightbox[foto]"><img src="../'.$picmiddenlinkstumbsize.'" alt="'.$picmiddenlinkstitle.'"></a></center>';
}

// HomePageFotoMiddenmidden
$querypicmiddenmidden = "SELECT * FROM HomePageFotoMiddenMidden WHERE HomePageFotoMiddenMiddenAanUit='aan' ORDER BY HomePageFotoMiddenMiddenDatum DESC LIMIT 1";
$resulpicmiddenmidden = mysqli_query($db_connect, $querypicmiddenmidden);
$picpicmiddenmiddencount = mysqli_num_rows($resulpicmiddenmidden);

while($row2 = mysqli_fetch_array($resulpicmiddenmidden)) {
   $picmiddenmiddentitle = $row2['HomePageFotoMiddenMiddenTitel'];
   $picmiddenmiddendate = $row2['HomePageFotoMiddenMiddenDatum'];
   $picmiddenmiddenonoff = $row2{'HomePageFotoMiddenMiddenAanUit'};
   $picmiddenmiddenfullsize = $row2['HomePageFotoMiddenMiddenFoto'];
   $picmiddenmiddentumbsize = $row2['HomePageFotoMiddenMiddenTumb'];
    }

// Als de waarde van de tabel aanuit aan is wordt het record weergeven. Als deze uit is niet.    
if ($picmiddenmiddenonoff == 'aan') {
    echo '<center><a href="../'.$picmiddenmiddenfullsize.'" title="'.$picmiddenmiddentitle.'" rel="lightbox[foto]"><img src="../'.$picmiddenmiddentumbsize.'" alt="'.$picmiddenmiddentitle.'"></a></center>';
}


// HomePageFotoMiddenrechts
$querypicmiddenrechts = "SELECT * FROM HomePageFotoMiddenRechts WHERE HomePageFotoMiddenRechtsAanUit='aan' ORDER BY HomePageFotoMiddenRechtsDatum DESC LIMIT 1";
$resulpicmiddenrechts = mysqli_query($db_connect, $querypicmiddenrechts);
$picpicmiddenrechtscount = mysqli_num_rows($resulpicmiddenmidden);


while($row3 = mysqli_fetch_array($resulpicmiddenrechts)) {
   $picmiddenrechtstitle = $row3['HomePageFotoMiddenRechtsTitel'];
   $picmiddenrechtsdate = $row3['HomePageFotoMiddenRechtsDatum'];
   $picmiddenrechtsonoff = $row3{'HomePageFotoMiddenRechtsAanUit'};
   $picmiddenrechtsfullsize = $row3['HomePageFotoMiddenRechtsFoto'];
   $picmiddenrechtstumbsize = $row3['HomePageFotoMiddenRechtsTumb'];
    }

// Als de waarde van de tabel aanuit aan is wordt het record weergeven. Als deze uit is niet.    
if ($picmiddenrechtsonoff == 'aan') {
    echo '<center><a href="../'.$picmiddenrechtsfullsize.'" title="'.$picmiddenrechtstitle.'" rel="lightbox[foto]"><img src="../'.$picmiddenrechtstumbsize.'" alt="'.$picmiddenrechtstitle.'"></a></center>';
}


// test om te kijken of de waardes kloppen.
echo "<br>middenlinks:<br>";
// aantalfoto's uit deze tabel.
echo $picmiddenlinkscount;
echo "<br>middenmidden:<br>";
// aantalfoto's uit deze tabel.
echo $picpicmiddenmiddencount;
echo "<br>middenrechts:<br>";
// aantalfoto's uit deze tabel.
echo $picpicmiddenrechtscount;
echo "<br>";
// aantallen optellen
$totalcount = $picmiddenlinkscount + $picpicmiddenmiddencount + $picpicmiddenrechtscount;
echo "<br> opgeteld:<br>";
//uitkomst van de telling
echo $totalcount;
echo "<br>";echo "<br>";

//tabellen weergave uiteindelijk op de website.

if ($totalcount==1)
{

// als de som 1 is dan deze tabel voor de weergave als er maar 1 foto aanstaat
echo'<table width="600" border="1"><tr><td>Hier moet een foto komen als het er maar 1 is die aanstaat</td></tr><tr><td>Hier moet een foto komen als het er maar 1 is die aanstaat</td></tr></table>';
}

else if ($totalcount==2)
{

// als de som 2 is dan deze tabel voor de weergave als er 2 foto's aanstaan
echo '<table width="400" border="1"><tr><td>bovenlinks</td><td>bovenrechts</td></tr><tr><td>onderlinks</td><td>onderrechts</td></tr></table>';
}

else if ($totalcount==3)
{

// als de som 3 is dan deze tabel voor de weergave als er 2 foto's aanstaan
echo '<table width="200" border="1"><tr><td>bovenlinks</td><td>bovenmidden</td><td>bovenrechts</td></tr><tr><td>onderlinks</td><td>ondermidden</td><td>onderrechts</td></tr></table>';
}


?>
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

07/07/2013 14:30:03
Quote Anchor link
Ik vraag me af waarom je daarvoor 3 tabellen maakt, maar op antwoord te geven op je vraag, je kan de 3 queries met UNION aan elkaar plakken zodat je 1 resultaat krijgt.
Ik ga niet van die ellenlange kolomnamen typen dus een ingekort voorbeeld:
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
(SELECT
    titellinks,
    datumlinks,
    fotolinks,
    thumblinks
FROM
    fotoslinks
WHERE aan_uit = 'aan'
ORDER BY datumlinks DESC LIMIT 1
)
UNION
(SELECT
    titelrechts,
    datumrechts,
    fotorechts,
    thumbrechts
FROM
    fotosrechts
WHERE aan_uit = 'aan'
ORDER BY datumrechts DESC LIMIT 1
)
UNION
(SELECT
    titelmidden,
    datummidden,
    fotomidden,
    thumbmidden
FROM
    fotosmidden
WHERE aan_uit = 'aan'
ORDER BY datummidden DESC LIMIT 1
)

Let op dat de kolomnamen van de eerste select de kolomnamen worden voor het gehele resultaat
Gewijzigd op 07/07/2013 14:30:52 door Ger van Steenderen
 



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.