uitlezen van 2 verschillende soorten projecten

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Enrico van der List

Enrico van der List

28/08/2014 16:16:10
Quote Anchor link
Momenteel heb ik bijna alles werkend op mijn website alleen zit ik even in de knoop met mijn laatste probleem
Ik heb twee verschillende soorten projecten gemaakt één is een soort game die je kunt downloaden. En de andere is een website waar een link van de pagina staat weergeven. Ook heeft de websites één afbeelding die ik wil laten zien en games heeft twee afbeeldingen. hoe kan ik dat tegelijk uit laten lezen in een overzichtspagina.

want ik wil de projecten wel uiteindelijk op datum gesorteerd hebben.
hieronder een idee hoe ik erover dacht. maar dit was niet goed. ook wil dit script uiteindelijk kunnen uitbreiden met alleen voor video's(maar dat is latere zorg).

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
<?php
$id
= $_GET['id'];
$resultaat =  mysql_query ("SELECT id,titel, subtitel, url_plaatje, url_afbeelding_1, url_afbeelding_2, omschrijving, download_project, url_website FROM Project WHERE id ='$id'", $db) ;

while ($rij = mysql_fetch_array($resultaat))
{
    
 echo "<h2>".$rij['titel']. "</h2>"
 ."<p>".$rij['subtitel']."</p>"."<br>"
 ."<img src='".$rij['url_plaatje'].".jpg' width='400'/>"
 ."<p>".$rij['omschrijving']."</p>"
 ."<img src='".$rij['url_afbeelding_1'].".jpg' width='600'/>"
 ."<img src='".$rij['url_afbeelding_2'].".jpg' width='600'/>" // deze laten zien wanneer in database 2e afbeelding is
 ."<a href='".$rij['url_website']."' target='_blank' />".$rij['url_website']."</a>"
 ."<a href='".$rij['download_project'].".zip' target='_blank' />Download hier het resultaat</a>"; // deze laten zien wanneer er in de database een project staat ingevuld.
}
[
/code]
Gewijzigd op 28/08/2014 16:17:51 door Enrico van der List
 
PHP hulp

PHP hulp

22/12/2024 16:19:20
 
- Ariën  -
Beheerder

- Ariën -

28/08/2014 17:34:12
Quote Anchor link
- SQL-injection is mogelijk. Bescherm je $_GET met mysql_real_escape-string().
- Stap bij voorkeur over op de functies van MySQLi

Waar loop je nu op ast, en wat gebeurt er nu?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

28/08/2014 17:34:44
Quote Anchor link
een aparte tabel 'media' maken.

media_id (integer, primary, auto-increment)
type (varchar) // geeft aan of het om een image gaat of een video
url (varchar)
project_id (integer, index)


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT type, url FROM media WHERE project_id=2


Toevoeging op 28/08/2014 17:38:24:

zodra je kolomnamen gaat creëren als url_afbeelding_1 en url_afbeelding_2 etc dan klopt je database indeling niet meer.
 
Enrico van der List

Enrico van der List

28/08/2014 17:47:41
Quote Anchor link
- Aar - op 28/08/2014 17:34:12:
- SQL-injection is mogelijk. Bescherm je $_GET met mysql_real_escape-string().
- Stap bij voorkeur over op de functies van MySQLi

Waar loop je nu op ast, en wat gebeurt er nu?


momenteel kan ik projecten uitlezen en weergeven met 2 afbeeldingen en een downloadlink. Maar ik wil nu ook projecten weergeven met maar 1 afbeelding en een link naar de website. hoe kan ik die query uitlezen maar toch gescheiden houden.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

28/08/2014 18:07:38
Quote Anchor link
met een tweede query dus. eerst doe je wat je nu al doet, alleen kunnen die afbeeldingen er uit.
als je dat gedaan hebt dan weet je je project_id. daarmee kun je een tweede query doen die de media urls voor je uitleest zoals ik hierboven beschreven heb. Met een JOIN kan ook maar levert alleen maar records op met telkens dezelfde project data en alleen een andere media-url.


Toevoeging op 28/08/2014 18:13:16:

en als je tevreden bent over je huidige database indeling (wat je niet zou moeten zijn) dan is er nog altijd de NULL waarde. staat een van de kolommen op NULL dan skip je die gewoon
Gewijzigd op 28/08/2014 18:07:56 door Frank Nietbelangrijk
 
Enrico van der List

Enrico van der List

28/08/2014 18:16:14
Quote Anchor link
Frank Nietbelangrijk op 28/08/2014 18:07:38:
met een tweede query dus. eerst doe je wat je nu al doet, alleen kunnen die afbeeldingen er uit.
als je dat gedaan hebt dan weet je je project_id. daarmee kun je een tweede query doen die de media urls voor je uitleest zoals ik hierboven beschreven heb. Met een JOIN kan ook maar levert alleen maar records op met telkens dezelfde project data en alleen een andere media-url.



maar als ik dan meerdere projecten heb met een link naar een website hoe moet het dan want als ik eruit begrijp roep ik dan maar 1 project aan
 
Frank Nietbelangrijk

Frank Nietbelangrijk

28/08/2014 18:22:46
Quote Anchor link
voor de projecten behoudt je gewoon de tabel projecten:

Toevoeging op 28/08/2014 18:25:50:

projecten
==========
id
titel
subtitel
omschrijving
download_project
url_website

media
======
id
type
url
project_id ===> deze geeft dus aan bij welk project dit plaatje/video hoort!
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

28/08/2014 18:39:58
Quote Anchor link
Frank Nietbelangrijk op 28/08/2014 18:07:38:
met een tweede query dus. eerst doe je wat je nu al doet, alleen kunnen die afbeeldingen er uit.
als je dat gedaan hebt dan weet je je project_id. daarmee kun je een tweede query doen die de media urls voor je uitleest zoals ik hierboven beschreven heb. Met een JOIN kan ook maar levert alleen maar records op met telkens dezelfde project data en alleen een andere media-url.

Wat is daar het probleem van?
 
Enrico van der List

Enrico van der List

28/08/2014 18:47:53
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
<?php
$id
= $_GET['id'];
$resultaat =  mysql_query ("SELECT id,titel, subtitel, url_plaatje, url_afbeelding_1, url_afbeelding_2, omschrijving, download_project, url_website FROM Project WHERE id ='$id'", $db) ;

while ($rij = mysql_fetch_array($resultaat))
{
    
 echo "<h2>".$rij['titel']. "</h2>"
 ."<p>".$rij['subtitel']."</p>"."<br>"
 ."<img src='".$rij['url_plaatje'].".jpg' width='400'/>"
 ."<p>".$rij['omschrijving']."</p>"
 ."<img src='".$rij['url_afbeelding_1'].".jpg' width='600'/>";
echo join  <img src='".$rij['url_afbeelding_2'].".jpg' width='600'/>" ;// deze laten zien wanneer in database 2e afbeelding is
echo join  <a href='"
.$rij['url_website']."' target='_blank' />".$rij['url_website']."</a>";
echo join  <a href='".$rij['download_project'].".zip' target='_blank' />Download hier het resultaat</a>"; // deze laten zien wanneer er in de database een project staat ingevuld.
}
[
/code]

zou dit zo ook kunnen of heeft dit hetzelfde effect?
 
- Ariën  -
Beheerder

- Ariën -

28/08/2014 18:58:31
Quote Anchor link
We hebben het over JOIN's in MySQL, niet in PHP ;-)
 
Frank Nietbelangrijk

Frank Nietbelangrijk

29/08/2014 13:10:07
Quote Anchor link
Ger van Steenderen op 28/08/2014 18:39:58:
Wat is daar het probleem van?


Niets het gaat soms ook om voorkeur.

Hmm PHP heeft ook een functie met de naam JOIN 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
25
26
27
CREATE TABLE IF NOT EXISTS `projecten` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `titel` varchar(50) NOT NULL,
  `subtitel` varchar(50) NOT NULL,
  `omschrijving` varchar(50) NOT NULL,
  `download_project` varchar(50) NOT NULL,
  `url_website` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

INSERT INTO `projecten` (`id`, `titel`, `subtitel`, `omschrijving`, `download_project`, `url_website`) VALUES
(1, 'FC Knudde', 'voetbalsite', 'voetbal website', 'ergens', 'www.fcknudde.nl'),
(2, 'Webwinkel', 'Altijd de goedkoopste', 'De goedkoopste webwinkel van Nederland', 'ergens-anders', 'www.goedkoop-nederland.nl');

CREATE TABLE IF NOT EXISTS `media` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `type` varchar(10) NOT NULL,
  `url` varchar(50) NOT NULL,
  `project_id` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `project_id` (`project_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

INSERT INTO `media` (`id`, `type`, `url`, `project_id`) VALUES
(1, 'image', '/plaatje.jpg', 1),
(2, 'video', '/video.mpg', 1),
(3, 'image', '/plaatje2.jpg', 2);


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
SELECT
    projecten.id,
    projecten.titel,
    projecten.subtitel,
    projecten.omschrijving,
    projecten.download_project,
    projecten.url_website,
    media.type,
    media.url
FROM
    projecten
JOIN
    media
ON
    projecten.id=media.project_id


Toevoeging op 29/08/2014 17:10:26:

Resultaat:
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
Array
(
    [0] => Array
        (
            [id] => 1
            [titel] => FC Knudde
            [subtitel] => voetbalsite
            [omschrijving] => voetbal website
            [download_project] => ergens
            [url_website] => www.fcknudde.nl
            [type] => image
            [url] => /plaatje.jpg
        )

    [1] => Array
        (
            [id] => 1
            [titel] => FC Knudde
            [subtitel] => voetbalsite
            [omschrijving] => voetbal website
            [download_project] => ergens
            [url_website] => www.fcknudde.nl
            [type] => video
            [url] => /video.mpg
        )

    [2] => Array
        (
            [id] => 2
            [titel] => Webwinkel
            [subtitel] => Altijd de goedkoopste
            [omschrijving] => De goedkoopste webwinkel van Nederland
            [download_project] => ergens-anders
            [url_website] => www.goedkoop-nederland.nl
            [type] => image
            [url] => /plaatje2.jpg
        )

)
Gewijzigd op 29/08/2014 17:26:23 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.