distict
Ik heb een tabel prijslijst bestaande uit product, omschrijving, verpakking en prijs. Dezelfde omschrijving kan meerdere keren voorkomen alleen dan is de verpakking en de prijs anders. Mijn vraag:
Ik wil dezelfde omschrijving maar 1 maal tonen en dmv een combobox mensen laten kiezen uit de verpakkingen zodat hieruit de juiste prijs getoond wordt. Ik weet dat je met distinct de unieke waarde uit mysql kunt ophalen, maar hoe koppel ik deze weer aan de verpakking?
Ik zal nog even wat meer uitleg geven. De input van de tabel prijslijst is een csv file. Op de csv file staan bv omschrijving verpakking prijs
andijvie kg 2 euro
andijvie doos 8 euro
Het woord andijvie wil ik maar 1 maal tonen op mijn site en dmv een combobox waarin de keuze kg en doos staat wil ik laten bepalen welke prijs erbij hoort.
Ik denk dat het hier het makkelijkst is om met 2 queries te werken: 1 waarin je alle unieke omschrijvingen ophaalt en een 2e waarmee de combinaties behorende bij een omschrijving ophaalt.
Maar hoe zorg ik er dan voor dat de juiste waardes bij de juiste omschrijving komen?
Ik had zelf zoiets bedacht(nog zonder combobox)
$query = "SELECT DISTINCT `omschrijving` FROM `prijslijst` WHERE product='Groenten' ORDER BY 'omschrijving'";
$result = mysql_query($query,$dbh);
while ($record = mysql_fetch_assoc($result)) {
$query1 = "SELECT `verpakking`,`prijs` FROM `prijslijst` WHERE `omschrijving`='".mysql_real_escape_string($record['omschrijving'])."'";
$resultaat = mysql_query($query1,$dbh);
echo '
<tr>
<td>'.$record['type'].'</td>
<td>'.$record['omschrijving'].'</td>
<td>'.$resultaat['verpakking'].'</td>
<td>'.$resultaat['prijs'].'</td>
</tr><br>';
}
Gewijzigd op 01/01/1970 01:00:00 door Wouter Pronk
Code (php)
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
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
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL)
$sql = "
SELECT DISTINCT omschrijving
FROM prijslijst
WHERE product = 'Groenten'
";
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error());
}
else
{
echo '<form action="" method="post">';
while($row = mysql_fetch_assoc($res))
{
$sqlVerpakking = "
SELECT verpakking
FROM prijslijst
WHERE omschrijving = '".$row['omschrijving']."'
";
if(!$resVerpakking = mysql_query($sqlVerpakking))
{
trigger_error(mysql_error());
}
else
{
echo $row['omschrijving'];
echo '<select name="'.$row['omschrijving'].'">';
while($rij = mysql_fetch_assoc($resVerpakking))
{
echo '<option value="'.$rij['verpakking'].'">'.$rij['Verpakking'].'</option>';
}
echo '</select>';
}
}
echo '</form>';
}
?>
ini_set('display_errors', 1);
error_reporting(E_ALL)
$sql = "
SELECT DISTINCT omschrijving
FROM prijslijst
WHERE product = 'Groenten'
";
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error());
}
else
{
echo '<form action="" method="post">';
while($row = mysql_fetch_assoc($res))
{
$sqlVerpakking = "
SELECT verpakking
FROM prijslijst
WHERE omschrijving = '".$row['omschrijving']."'
";
if(!$resVerpakking = mysql_query($sqlVerpakking))
{
trigger_error(mysql_error());
}
else
{
echo $row['omschrijving'];
echo '<select name="'.$row['omschrijving'].'">';
while($rij = mysql_fetch_assoc($resVerpakking))
{
echo '<option value="'.$rij['verpakking'].'">'.$rij['Verpakking'].'</option>';
}
echo '</select>';
}
}
echo '</form>';
}
?>
Zoals je ziet heeft het in de eerste query geen zin om verpakking en prijs te selecteren, er wordt namelijk maar 1x een omschrijving opgehaald.
Pas z.s.m. het datamodel aan, de huidige opzet gaat gegarandeerd fout. Zie de tutorials hoe je kunt normaliseren.
Gewijzigd op 01/01/1970 01:00:00 door Frank -
Dit is wat ik zocht nog 1 vraagje van huishoudelijke aard: Waar plaats ik de <tr> en <td> om het op een mooie manier in tabel vorm te tonen?
Code (php)
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
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
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL)
$sql = "
SELECT DISTINCT omschrijving
FROM prijslijst
WHERE product = 'Groenten'
";
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error());
}
else
{
echo '<table>';
echo '<form action="" method="post">';
while($row = mysql_fetch_assoc($res))
{
$sqlVerpakking = "
SELECT verpakking
FROM prijslijst
WHERE omschrijving = '".$row['omschrijving']."'
";
if(!$resVerpakking = mysql_query($sqlVerpakking))
{
trigger_error(mysql_error());
}
else
{
echo '<tr><td>';
echo $row['omschrijving'];
echo '</td><td>';
echo '<select name="'.$row['omschrijving'].'">';
while($rij = mysql_fetch_assoc($resVerpakking))
{
echo '<option value="'.$rij['verpakking'].'">'.$rij['Verpakking'].'</option>';
}
echo '</select></td></tr>';
}
}
echo '</form>';
echo '</table>';
}
?>
ini_set('display_errors', 1);
error_reporting(E_ALL)
$sql = "
SELECT DISTINCT omschrijving
FROM prijslijst
WHERE product = 'Groenten'
";
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error());
}
else
{
echo '<table>';
echo '<form action="" method="post">';
while($row = mysql_fetch_assoc($res))
{
$sqlVerpakking = "
SELECT verpakking
FROM prijslijst
WHERE omschrijving = '".$row['omschrijving']."'
";
if(!$resVerpakking = mysql_query($sqlVerpakking))
{
trigger_error(mysql_error());
}
else
{
echo '<tr><td>';
echo $row['omschrijving'];
echo '</td><td>';
echo '<select name="'.$row['omschrijving'].'">';
while($rij = mysql_fetch_assoc($resVerpakking))
{
echo '<option value="'.$rij['verpakking'].'">'.$rij['Verpakking'].'</option>';
}
echo '</select></td></tr>';
}
}
echo '</form>';
echo '</table>';
}
?>
Maar ik zou het liever gewoon alleen met css doen. Een tabel is niet voor de layout van je website bedoeld!
Neem daarnaast ook nog de opmerking van Frank ter harte en neem je datamodel nog eens onder de loep.