Database gegevens in een array te plaatsen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Dick van de Wetering

Dick van de Wetering

12/03/2007 12:43:00
Quote Anchor link
Hallo ik hoop dat jullie me kunnen adviseren.

Ik heb een database met 4 artikelen met de naam artikel_A/D
, met het veld "prijs"
Op mijn aanbieding pagina heb ik een Table geplaatst met 4 rijen en 2 kolommen.
Op de rijen 1 en 3 zijn de blokken gevuld met de foto van artikel_A /D
Op de rijen 2 en 4 staan nu de tekst en de prijs. (in PHP geschreven)
Ik wil echter niet steeds de prijs handmatig op die site veranderen en zoek naar een mogelijkheid dat dit vanuit de database kan.

als ik de opdracht While gebruik komen de gegevens als lijst te voorschijn.
Moet ik nu voor ieder artikel voor het deel waar de prijs komt opnieuw een SELECT opdracht geven met WHERE? of is het mogelijk om $artikel rechtstreeks te benaderen in 0 /3 omdat dit schijnbaar een array is?

$artikel_SQL="SELECT * FROM aanbieding;
$artikel_result=mysql_query($artikel_SQL);
$artikel=mysql_fetch_array($artikel_result)

Graag jullie reactie hierover,
Groeten Dick
 
PHP hulp

PHP hulp

20/11/2024 11:48:04
 
Frank -

Frank -

12/03/2007 12:55:00
Quote Anchor link
Met een update-query kun je toch de prijs veranderen?
UPDATE aanbieding SET prijs = 23.95 WHERE artikel_naam = 'jouw artikel'
 
Dick van de Wetering

Dick van de Wetering

12/03/2007 13:06:00
Quote Anchor link
Hoi Frank
Bedankt voor je snelle reactie. Het probleem is niet dat er een UPDATE moet plaatsvinden, maar dat ik de te tonen gegevens van de database wil vereenvoudigen.

Na het inlezen van $artikel heb ik in PHP een zooi regels geschreven waarin ik 4 x $artikel["prijs"] wil plaatsen. (verschillende prijzen uiteraard)

Mijn vraag is eigenlijk hoe plaats ik de gegevens in een array, zodat ik gewoon kan zeggen echo $prijs(0..3) en dan de prijs op de goede plaats krijg.

groetjes Dick
 
Joren de Wit

Joren de Wit

12/03/2007 13:14:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
while($row = mysql_fetch_assoc($res))
{

    $prijs[] = $row['prijs'];
}

?>

Dit is een manier om de prijzen in een array te plaatsen. Je hebt nu echter geen idee meer welke prijs bij welk artikel hoort. En daarnaast: de foto's heb je wel statisch op je pagina neergezet?

Ik zou ervoor kiezen om de hele pagina dan dynamisch te genereren waarbij je dus de locatie van de foto's van een artikel ook in je database zet. Op die manier weet je altijd zeker dat je de juiste prijs bij de juiste foto hebt staan.
 
Dick van de Wetering

Dick van de Wetering

12/03/2007 13:30:00
Quote Anchor link
Hoi Blanche,
Bedankt voor je reachtie. De foto's worden geupload in de map foto's. Het zijn er slechts 4 en de naam is artikel_A tot artikel_D.
Met dit stukje heb ik geen probleem, de juiste foto's worden in de juiste kolom geplaatst.
 
Joren de Wit

Joren de Wit

12/03/2007 13:33:00
Quote Anchor link
Ja ok, dat geloof ik wel. Maar als je het op die manier doet, zou je dus eigenlijk 4 queries uit moeten voeren om ervoor te zorgen dat je de juiste prijs bij de juiste foto krijgt.

Als je de locatie (lees: bestandsnaam, dat is immers al voldoende) van de fotos ook opslaat in de database heb je aan 1 query voldoende.
 
Frank -

Frank -

12/03/2007 13:35:00
Quote Anchor link
Tip: Vergeet het aantal artikelen en/of foto's, dat maakt geen moer uit. Jij vraagt in je query een aantal records op, evt. met een LIMIT, en hierbij vraag je ook de naam van de foto op. Dit sla je dus ook op in de database.

Nu weet je zeker dat je alle benodigde informatie opvraagt en dus ook weer kunt geven. Belangrijker is nog dat je op deze manier een verband krijgt in de dataset die je retour krijgt (artikelnaam, foto en prijs) en dat je helemaal niets meer hardcoded in jouw php-script hoeft te zetten.
 
Dick van de Wetering

Dick van de Wetering

12/03/2007 14:07:00
Quote Anchor link
Blance en Frank

Het klopt dat het aantal artikelen er niet toe doet, die kunnen altijd wel worden opgeroepem, de foto's kan ik wel in de database vermelden maar dat heeft niet veel nut daar het er maximaal 4 stuks zijn en ze toch eerst geplaatst moeten worden in de map foto's, anders vind de database ze niet.
onderstaand de zooi in PHP waarvan artikel CD nog met hardcoded de prijzen hebben.

<table border="1" cellspacing="0" width="100%">
$werk_SQL="SELECT * FROM aanbieding;
$werk_result=mysql_query($werk_SQL);
$werk=mysql_fetch_array($werk_result)



<tr>
<td width="50%" bgcolor="#0000FF">
<p align="center"><b><font size="6" color="#FFFF00">ARTIKEL A</font></b></td>
<td width="50%" bgcolor="#FFFF00">
<p align="center"><b><font size="6" color="#0000FF">ARTIKEL B</font></b></td>
</tr>
<tr>
<td width="50%" bgcolor="#0000FF" bordercolor="#FFFF00">
<p align="center"><img border="0" src="../foto/artikel_A.JPG" width="225" height="262"></td>
<td width="50%" bgcolor="#FFFF00" bordercolor="#FFFF00">
<p align="center"><img border="0" src="../foto/artikel_B.JPG" width="225" height="252"></td>
</tr>
<tr>
<td width="50%" bgcolor="#0000FF" align="center" bordercolor="#FFFF00"><b>
<font size="2" color="#FFFF00">Nu slechts</font>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $werk['prijs'] ?>
<font color="#FFFF00">
</font>
</b>
<font size="6" color="#FFFF00"><b>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php XXXXXXX ?>
</b></font><b><font color="#FFFF00">
</font> <font size="2" color="#FFFF00">(excl.BTW 19 %)</font></b></td>
<td width="50%" bgcolor="#FFFF00" align="center" bordercolor="#0000FF"><b>
<font color="#0000FF"><font size="2">Nu slechts</font>
</font></b><font size="6" color="#0000FF"> $werk[2]["prijs"] </b></font><b><font color="#0000FF">
</font> <font size="2" color="#0000FF">(excl.BTW 19 %)</font></b></td>
</tr>
<tr>
<td width="50%" bgcolor="#FFFF00" bordercolor="#FFFF00">
<p align="center"><b><font size="6" color="#0000FF">ARTIKEL C</font></b></td>
<td width="50%" bgcolor="#0000FF" bordercolor="#FFFF00">
<p align="center"><b><font size="6" color="#FFFF00">ARTIKEL&nbsp; D</font></b></td>
</tr>
<tr>
<td width="50%" bgcolor="#FFFF00" align="center">
<p align="center"><img border="0" src="../foto/artikel_C.JPG" width="249" height="282"></td>
<td width="50%" bgcolor="#0000FF" align="center">
<p align="center"><img border="0" src="../foto/artikel_D.JPG" width="249" height="283"></td>
</tr>
<tr>
<td width="50%" bgcolor="#FFFF00" align="center"><b>
<font size="2" color="#0000FF">Nu slechts</font><font color="#0000FF">
</font></b>
<font size="6" color="#0000FF"><b>18,50 euro</b></font><b><font color="#0000FF">
</font> <font size="2" color="#0000FF">(excl.BTW 19 %)</font></b></td>
<td width="50%" bgcolor="#0000FF" align="center"><font color="#FFFF00"><font size="2">Nu slechts</font>
</font><font size="6" color="#FFFF00"><b>12,50 euro</b></font><font color="#FFFF00">
</font> <font size="2" color="#FFFF00">(excl.BTW 19 %)</font></td>
</tr>
</table>
 
Joren de Wit

Joren de Wit

12/03/2007 14:16:00
Quote Anchor link
Ja, en op deze manier zul je dus 4 queries moeten uitvoeren om bij elk artikel de juiste prijs op te halen! Lees nu nog eens mijn eerdere reacties en de reactie van Frank. Misschien dat het dan begint te dagen.

En ja, natuurlijk moeten die foto's ergens in een map staan. Maar op dit moment heb je de fotos nog steeds hard coded in je script staan. Zodra je de fotos ook opneemt in de database, kun je deze hele pagina dynamisch laten genereren wat je een aantal voordelen biedt:

- Een veel kortere code aangezien je elke combinatie van foto/prijs maar 1 keer hoeft de scripten en dit vervolgens in een loop plaatst.
- Minder sql queries aangezien je er nu al een onderlinge relatie bestaat in je resultaat set tussen een foto en een prijs. Anders gezegd: je weet al welke prijs bij welke foto hoort.
 
Frank -

Frank -

12/03/2007 14:20:00
Quote Anchor link
En nog een tip: Gebruik css in een extern stylesheet, dat is vele malen handiger dan alle opmaak in de html te zetten. Is sneller te maken, beter te onderhouden, beter te debuggen en de html-code wordt een stuk eenvoudiger, met ook weer alle voordelen van dien.

<font> is overigens al sinds jaar en dag vervallen.
 
Dick van de Wetering

Dick van de Wetering

12/03/2007 16:14:00
Quote Anchor link
Oke, bedankt voor jullie hulp / advies.
ik zal eens kijken wat css voor mogelijkheden bied, anders moet ik gewoon weer in frontpage werken.
groeten Dick
 
Frank -

Frank -

12/03/2007 16:21:00
Quote Anchor link
Quote:
anders moet ik gewoon weer in frontpage werken.
Niet lullig bedoelt, maar ik mag toch hopen dat je niet zo diep zinkt! Die teringzooi staat toch wel met superstip op 1 wat betreft het meest beroerde programma om webpagina's te maken. Nog slechter kun je het niet treffen!

Google eens op 'html php editor' en je krijgt genoeg (betere) resultaten. Bv. Eclipse met PHP-plugin.
 



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.