php variabelen van onbekend aantal mysql entries
ik heb de volgende mysql tabel:
nu wil ik graag een apparte php variabele aanmaken voor iedere bla2_index waarvan de bla_index een bepaald getal is, bv 1.
In dit geval dus
bla2_index1 = 1
bla2_index2 = 2
bla2_index3 = 3
Iemand enig idee hoe ik dit kan bereiken?
**vervolgvraag:
Als ik eenmaal een variabele heb voor iedere betreffende entry, dan weet ik voor het gebruiken ervan nog niet hoeveel het er zijn geworden,
hoe kom ik hier achter en spreek ik ze aan?
Gewijzigd op 25/06/2013 18:24:24 door Koos jansen
Code (php)
Gewijzigd op 25/06/2013 18:30:55 door Frank Nietbelangrijk
En hoe lost dat het probleem van de TS op?
Wat ik zou doen is niet aparte variabelen gebruiken, maar gewoon een array. Binnen de while loop waarin je alle rijen ophaalt voeg je dan de waardes uit bla2_index toe aan de array als bla1_index een bepaalde waarde heeft.
Code (php)
Overigens kan je dit ook al doen binnen de query, maar dan is het even de vraag wat je verder ermee wilt doen
Code (php)
1
2
3
2
3
SELECT bla1_index, GROUP_CONCAT(bla2_index) AS alle_bla2
FROM table
GROUP BY bla1_index
FROM table
GROUP BY bla1_index
'alle_bla2' wordt nu een string met alle waardes van de verschillende rijen, met komma's ertussen. Wil je dat in een array hebben, dan moet je het dus even exploden op de komma.
Op de vraag wat ik concreet van plan ben het volgende:
Wat ik heb zijn 3 mysql tabellen
problemen
oplossingen
hoofdindex
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
hoofdindex:
autoID | problemenID | oplossingenID
1 | 1 |1
2 | 1 |2
3 | 1 |3
4 | 2 |4
problemen:
autoID | probleem
1 | pr1
2 | pr2
oplossingen:
autoID | oplossing
1 | opl1
2 | opl2
autoID | problemenID | oplossingenID
1 | 1 |1
2 | 1 |2
3 | 1 |3
4 | 2 |4
problemen:
autoID | probleem
1 | pr1
2 | pr2
oplossingen:
autoID | oplossing
1 | opl1
2 | opl2
Ieder probleem kan meerdere oplossingen hebben en het is de bedoeling dat hier een html table van wordt gegenereerd zoals dit:
Het maken van die html table lukt me opzich wel, en het populaten van 'probleem' ook, maar voor 'oplossing' moet ik de hoofdindex raadplegen, en het oplossingindexnummer gebruiken in een opdracht om de oplossingen uit de mysql oplossingen tabel te vinden,en ze daarna omzetten naar variabelen zodat ik ze in de html table kan plaatsen..althans, denk ik ;)
Gewijzigd op 25/06/2013 19:45:37 door koos jansen
als je met een database gaat werken dan zijn arrays een must. Je zou je dus eerst in arrays moeten verdiepen alvorens verder te gaan. op phptuts.nl vind je wel een leuke tutorial over arrays.
Het probleem is dat ik er volgens mij echt te stom voor ben. Ik heb weleens zo'n tut gevolgd en er niets aan overgehouden. Bovendien is de complexiteit van wat ik wil beperkt tot het voorbeeld dat ik gaf, en ik hoop dat dat nog net binnen de grens ligt van dat arrays niet per definitie nodig zijn.
Gewijzigd op 29/06/2013 08:39:40 door koos jansen
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
// maak een nieuwe lege array
$gevonden = array();
while($row = mysqli_fetch_assoc($result)){
if ( $row['bla1_index'] == 1 )
{
// voeg de inhoud van cell bla_index toe aan de array als een nieuw item.
$gevonden[] = $row['bla1_index'];
}
}
echo 'Het gevonden aantal is: '.count( $gevonden );
echo '<br/>';
echo 'wat is er gevonden: ';
// behandel de items in array $gevonden 1 voor 1 en noem dat item $value
foreach($gevonden as $value)
{
echo $value.', ';
}
?>
// maak een nieuwe lege array
$gevonden = array();
while($row = mysqli_fetch_assoc($result)){
if ( $row['bla1_index'] == 1 )
{
// voeg de inhoud van cell bla_index toe aan de array als een nieuw item.
$gevonden[] = $row['bla1_index'];
}
}
echo 'Het gevonden aantal is: '.count( $gevonden );
echo '<br/>';
echo 'wat is er gevonden: ';
// behandel de items in array $gevonden 1 voor 1 en noem dat item $value
foreach($gevonden as $value)
{
echo $value.', ';
}
?>
Gewijzigd op 29/06/2013 09:46:32 door Frank Nietbelangrijk
dankjewel.. ik ga er mee aan de slag.
Nu blijkt het alleen toch niet zo eenvoudig om dat stukje code in mijn tabel te krijgen,
Dit is hoe ik mijn tabel vul:
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
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
<TABLE width="100%" border="1">
<TR>
<TD width="10%"><a href="test.php" TITLE="test">probleem</a>
<TD width="10%"><a href="test.php" TITLE="test">oplossing</a>
</TABLE>
<?php
$i=0;
while ($i < $num)
{
require ($_SERVER["DOCUMENT_ROOT"]."/onderdelen/db_verbinding.php");
$id=mysql_result($result,$i,"autoID");
$problemenautoID=mysql_result($result,$i,"problemenautoID");
$resultaat = mysql_query("SELECT probleem FROM problemen WHERE autoID = '$problemenautoID' ") or die(mysql_error());
$rij = mysql_fetch_array( $resultaat );
$probleem = $rij['probleem'];
?>
<TABLE width="100%" border="1">
<TR>
<TD width="10%"><a href="test.php"><? echo $probleem; ?> </a>
<TD width="10%"><a href="test.php"><? echo $oplossing; ?> </a>
</TABLE>
<?php
$i++;
}
?>
<TR>
<TD width="10%"><a href="test.php" TITLE="test">probleem</a>
<TD width="10%"><a href="test.php" TITLE="test">oplossing</a>
</TABLE>
<?php
$i=0;
while ($i < $num)
{
require ($_SERVER["DOCUMENT_ROOT"]."/onderdelen/db_verbinding.php");
$id=mysql_result($result,$i,"autoID");
$problemenautoID=mysql_result($result,$i,"problemenautoID");
$resultaat = mysql_query("SELECT probleem FROM problemen WHERE autoID = '$problemenautoID' ") or die(mysql_error());
$rij = mysql_fetch_array( $resultaat );
$probleem = $rij['probleem'];
?>
<TABLE width="100%" border="1">
<TR>
<TD width="10%"><a href="test.php"><? echo $probleem; ?> </a>
<TD width="10%"><a href="test.php"><? echo $oplossing; ?> </a>
</TABLE>
<?php
$i++;
}
?>
en de
regel zou dan vervangen moeten worden door dat stukje array code dat jullie voor hebben gedaan.
maar na een heleboel knip en plakwerk is het me nog steeds niet gelukt, dus ik hoop dat jullie me misschien nog een keertje op weg willen helpen