mysql data echo't array
Ik heb een probleem met een php code. De bedoeling is dat deze code verticaal gaat orderen, maar als ik de data uit de database haal en echo't komt er heletijd array
Dit is zover de code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<? $data = array();
$qmerk = mysql_query("SELECT MODEL_CAR FROM New_tablecars WHERE CAR_BRANDS = '$merk' GROUP BY MODEL_CAR");
while($qmerke = mysql_fetch_row($qmerk))
$data[] = $qmerke ;
$modelcar = $qmerke['MODEL_CAR'];
echo count($data);
for ($i = 0; $i < count($data) / 3; $i++){
echo '<table><tr>';
for ($j = 0; $j < 3; $j++){
echo '<td>' . $data[ $i + $j * 3] . '</td>';
}
echo '</tr><tr>';
}
echo '</tr></table>';
?>
$qmerk = mysql_query("SELECT MODEL_CAR FROM New_tablecars WHERE CAR_BRANDS = '$merk' GROUP BY MODEL_CAR");
while($qmerke = mysql_fetch_row($qmerk))
$data[] = $qmerke ;
$modelcar = $qmerke['MODEL_CAR'];
echo count($data);
for ($i = 0; $i < count($data) / 3; $i++){
echo '<table><tr>';
for ($j = 0; $j < 3; $j++){
echo '<td>' . $data[ $i + $j * 3] . '</td>';
}
echo '</tr><tr>';
}
echo '</tr></table>';
?>
Gewijzigd op 26/05/2013 16:07:56 door Daniyal hussain
Merk op dat je mysql_fetch_row gebruikt, waardoor de rij uit je database een array met numerieke keys wordt. Gebruik je mysql_fetch_array dan krijg je een associatieve array.
Maar ik krijg niet alle resultaten soms krijg ik het dubbel
- Sowieso is je naamgeving enigzins krom ($qwerk / $qwerke).
- En dat toevoegen in $data[] is ook heel dubbel, want het staat al in $qwerke....
- Je gebruikt mysql_fetch_row(), terwijl je hem wel als ASSOC aanspreekt.
- Je hebt namen van kolommen in alleen maar hoofdletters? Dat moet je wijzigen (niet voor de werking, wel voor de duidelijkheid)
- Je doet niets met het model-car.....???
- Hoe wil je orderen? Is een SORT BY in je query niet beter/makkelijker?
Deze code is beter dan wat je nu hebt.
Kijk even regel voor regel na WÁT er beter/anders is.
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
// schrijf de query voluit, nieuwe regels. Handiger, en makkelijk als je deze query wilt debuggen (zie bij de foutmeldingen)
$sql = " SELECT model_car
FROM New_tablecars
WHERE car_brands = '".$merk."'
GROUP BY model_car
ORDER BY **************
LIMIT 0, 100";
// voer uit
$result = mysql_query($sql);
// ging het fout?
if($result === false)
{
echo 'Er ging iets fout in de query:<hr>'.$sql.'<hr>';
}
// het ging goed
else
{
// teller bijhouden
$i = 0;
// tabel starten
echo '<table>
<tr>'.PHP_EOL;
// elke rij aflopen
while($data = mysql_fetch_assoc($result))
{
// print de rij
echo '<td>'. $data['model_car'] .'</td>';
// eventueel rij sluiten
if($i % 3 == 0)
{
echo '</tr>
<tr>'.PHP_EOL;
}
}
// tabel sluiten
echo ' </tr>
</table>'.PHP_EOL;
}
?>
// schrijf de query voluit, nieuwe regels. Handiger, en makkelijk als je deze query wilt debuggen (zie bij de foutmeldingen)
$sql = " SELECT model_car
FROM New_tablecars
WHERE car_brands = '".$merk."'
GROUP BY model_car
ORDER BY **************
LIMIT 0, 100";
// voer uit
$result = mysql_query($sql);
// ging het fout?
if($result === false)
{
echo 'Er ging iets fout in de query:<hr>'.$sql.'<hr>';
}
// het ging goed
else
{
// teller bijhouden
$i = 0;
// tabel starten
echo '<table>
<tr>'.PHP_EOL;
// elke rij aflopen
while($data = mysql_fetch_assoc($result))
{
// print de rij
echo '<td>'. $data['model_car'] .'</td>';
// eventueel rij sluiten
if($i % 3 == 0)
{
echo '</tr>
<tr>'.PHP_EOL;
}
}
// tabel sluiten
echo ' </tr>
</table>'.PHP_EOL;
}
?>
In jouw code wordt de tabel per rij gesorteerd en niet per kolom. Dat valt in een SQL-query volgens mij ook niet eenvoudig te doen. Uiteraard moet in de query wel gesorteerd worden, maar vervolgens heb je toch nog die for-loopjes (of een soortgelijke constructie) nodig om de gegevens op de juiste plaats in de tabel te krijgen.
Het is sowieso niet mogelijk om, zoals je in jouw code doet, de tabel op te bouwen tijdens het uitlezen van de resultset. Je zult eerst alle results moeten hebben opgehaald uit de database voor je de tabel kan maken.
Gewijzigd op 27/05/2013 00:18:05 door Willem vp