Hoe meerdere afbeeldingen uit database halen?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Robin van houten

Robin van houten

14/01/2017 20:55:00
Quote Anchor link
hi!

Ik maak voor school een php project en moet een videotheek maken door een database te gebruiken. hier mijn code van wat ik al heb.

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
<?php
mysql_connect("localhost","root","usbw");
mysql_select_db("videotheek");

$sql = "SELECT * FROM genre";
$result = mysql_query("SELECT * FROM genre order by genre")
or die(mysql_error());

echo "<table border='1'>";
echo "<tr> <th>genre</th></tr>";

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

 echo "<tr><td>";
 echo "<a href='videotheek.php?id=" . $row['id'] ."'>" .  $row['genre']. "</a>";

 echo "</td></tr>";

}

$id = $_GET['id'];
$sqlletje1= "SELECT * FROM video where afbeelding=";
$sqlletje= "SELECT * FROM video where genre=". $id;
if (isset($sqlletje)) {

}

else {

}




$result = mysql_query($sqlletje)
or die(mysql_error());


echo "<table border='1'>";
echo "<tr> <th>Video</th></tr>";

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

 echo "<tr><td>";
 echo "<img src = '" . $row['afbeelding'] . "'></img>";
 echo "</td></tr>";


}



?>


ik krijg het dus voor elkaar als ik op de site een genre aanklik dat ik een aantal films te zien krijg in de des betreffende genre maar ik wil op de begin pagina graag alle films laten zien. zelf zat ik te denken aan een if else maar ik heb al van alles geprobeerd en kom er niet zo goed uit hoe ik dat nou het best kan doen.

Ik doe eerste jaars applicatie en mediaonwikkelaar dus het zal er nog niet perfect uit zien!
 
PHP hulp

PHP hulp

01/11/2024 01:18:44
 
Frank Nietbelangrijk

Frank Nietbelangrijk

15/01/2017 02:10:40
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
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
95
96
97
98
99
100
101
<?php

/*
 * gebruik mysqli in plaats van mysql omdat de laatste niet meer ondersteund wordt door de laatste PHP versie 7.x
 */

$con = mysqli_connect("localhost","root","usbw","videotheek");
if(!$con) {
    echo "Error: Unable to connect to MySQL." . PHP_EOL;
    echo "Error: " . mysqli_connect_error() . PHP_EOL;
    exit;
}


/*
 * variabelen aanmaken die we niet gebruiken heeft natuurlijk geen enkele zin behalve dat je app langzamer wordt en er onnodig geheugen gebruikt wordt :-)
 */
// $sql = "SELECT * FROM genre";


$genreResult = mysqli_query($con, "SELECT * FROM genre order by genre")
or die(mysqli_error($con));

/*
 * Statische html echo-en heeft geen enkele zin. Bovendien begin je hier pas mee als je app verder gereed is. Komt onderaan dus.
 * Daarnaast is het niet van deze tijd om je opmaak in de html mee te geven, dus wel of geen borders moet in je CSS komen te staan
 */
//echo "<table border='1'>";
//echo "<tr> <th>genre</th></tr>";

/*
 * gebruik mysqli_fetch_assoc!
 */
//while($row = mysql_fetch_array( $result )) {

/* dit gaat fout als  $_GET['id'] niet wordt meegegeven in de url.
//$id = $_GET['id'];
 *
 * doe het zo:
 */


$id = 0; // default waarde

if(isset($_GET['id']))
{

    $id = intval($_GET['id']);
}


// een geldig id uit een database is altijd groter dan nul
if($id > 0) {
    $sql = "SELECT * FROM video WHERE genre=" . $id;
}
else {
    $sql = "SELECT * FROM video";    
}


$videoResult = mysqli_query($con, $sql)
or die(mysqli_error($con));

?>

<!DOCTYPE html>
<html>
    <head>
        <title>Videotheek</title>
        <meta charset="UTF-8">
        <style>
            .table-border {
                border-collapse: collapse;
            }

            .table-border td,
            .table-border th {
                border: 1px solid black;
            }
        </style>
    </head>
    <body>
        <table class="table-border">
            <tr>
                <th>Genre</th>
            </tr>
            <?php while($row = mysqli_fetch_assoc($genreResult)) { ?>
            <tr>
                <td>
                    <?php echo '<a href="videotheek.php?id=' . $row['id'] . '">' .  $row['genre'] . '</a>'; ?>
                </td>
            </tr>
            <?php } ?>
        </table>
        <h3>Video's</h3>
        <table class="table-border">
            <tr>
                <th>Video</th>
            </tr>
            <?php while($row = mysqli_fetch_assoc($videoResult)) { ?>
            <tr>
                <td>
                    <!-- Het img element is een singleton en sluit je in HTML5 gewoon af met een >. bijvoorbeeld <img src="/images/plaatje.jpg"> -->
                    <?php echo '<img src="' . $row['afbeelding'] . '">'; ?>
                </td>
            </tr>
            <?php } ?>
        </table>
    </body>
</html>
Gewijzigd op 15/01/2017 02:31:06 door Frank Nietbelangrijk
 
Ben van Velzen

Ben van Velzen

15/01/2017 02:43:55
Quote Anchor link
Ik wil niet pedantisch zijn over boventaande script, want het is in beginsel een goede opzet, maar:
- or die() is not done, een betere foutafhandeling met bijhorende uitleg was wellicht beter geweest
- Het hardhandig casten naar int is niet altijd handig, nu is het in de opzet die je aandraagt wel correct, maar ik mis de beredenering. In dit geval mogelijk iets als: "accepteer het ID alleen als het een getal is, en wanneer deze groter dan 0 is. Immers: het casten van een string naar int lever een 0 op wanneer deze geen getal bevat binnen de precision ini setting."
- Waarom wordt er gebruik gemaakt van verschillende naamgevingen voor een result variabele? De query dichter bij de verwerking uitvoeren lijkt logischer om de zaak overzichtelijk te houden.
 
Robin van houten

Robin van houten

15/01/2017 11:35:21
Quote Anchor link
heel erg bedankt! ook voor de tips ga er zeker wat mee doen! dankjewel
 
Frank Nietbelangrijk

Frank Nietbelangrijk

15/01/2017 12:44:12
Quote Anchor link
Ben,

Er bestaat ook iets als smaak. Met name wat betreft je laatste punt ben ik het in dit geval niet met je eens.
Het gaat gewoon om twee variabelen met een resource set die je beiden nodig hebt in de 'view'. Daar is totaal niets mis mee. Je kan de resultaten ook eerst in een array zetten maar dat vergt wel meer geheugen hetgeen niet erg is maar ik zou dan zeker zorgen dat het aantal gelimiteerd wordt.
Hiermee ga ik niet zeggen dat mijn voorbeeld perfect is maar er zit voor Robin al heel erg veel informatie in die hem flink aan het denken zal zetten, althans dat hoop ik. Bepaalde zaken vind ik dan persoonlijk ook minder belangrijk.
Ik snap overigens ook niet dat men hier zo timide doet over de die() functie zonder te vertellen hoe het dan wel moet. In mijn opinie zou je als volwassen programmeur moeten zorgen dat er hoe dan ook een geldige HTML pagina uit komt maar dat gaat weer veel te ver voor een voorbeeldje op phphulp.
Gewijzigd op 15/01/2017 12:50:39 door Frank Nietbelangrijk
 



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.