php variabelen van onbekend aantal mysql entries

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Koos jansen

koos jansen

25/06/2013 18:15:48
Quote Anchor link
Hoi,
ik heb de volgende mysql tabel:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
autoID | bla_index | bla2_index
1      | 1         |1
2      | 1         |2
3      | 1         |3
4      | 2         |4

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
 
PHP hulp

PHP hulp

24/04/2024 08:34:34
 
Frank Nietbelangrijk

Frank Nietbelangrijk

25/06/2013 18:26:04
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
<?php
$query
= 'SELECT bla2_index FROM tabelnaam WHERE bla_index='.$getal;
$result = mysqli_query($conn, $query);

echo 'aantal rijen: '.mysqli_num_rows($result).'<br/>';

while($row = mysqli_fetch_assoc($result))
{

    echo $row['bla2_index'].'<br/>';
}


mysqli_free_result($result);
?>
Gewijzigd op 25/06/2013 18:30:55 door Frank Nietbelangrijk
 
Erwin H

Erwin H

25/06/2013 18:38:25
Quote Anchor link
@Frank
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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$gevonden
= array();
while($row = mysqli_fetch_assoc($result)){
  if ( $row['bla1_index'] == 1 ){
    $gevonden[] = $row['bla1_index'];
  }
}


echo 'Het gevonden aantal is: '.count( $gevonden );
?>

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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
SELECT bla1_index, GROUP_CONCAT(bla2_index) AS alle_bla2
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.
 
Koos jansen

koos jansen

25/06/2013 19:37:23
Quote Anchor link
Bedankt voor de reacties, van arrays snap ik helaas nog niet al te veel maar ik zal je voorbeeld bestuderen.

Op de vraag wat ik concreet van plan ben het volgende:

Wat ik heb zijn 3 mysql tabellen
problemen
oplossingen
hoofdindex

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
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



Ieder probleem kan meerdere oplossingen hebben en het is de bedoeling dat hier een html table van wordt gegenereerd zoals dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
probleem | oplossing
pr1      | opl1
pr1      | opl2
pr1      | opl3
pr2      | opl4


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
 
Frank Nietbelangrijk

Frank Nietbelangrijk

25/06/2013 19:55:14
Quote Anchor link
Koos,

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.
 
Koos jansen

koos jansen

25/06/2013 20:01:04
Quote Anchor link
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.
 
Koos jansen

koos jansen

29/06/2013 08:38:59
Quote Anchor link
erwin, ik kom er nog niet uit, kun je misschien toch 1 keer voordoen hoe ik bv een echo regeltje maak dat zegt dat probleem1, oplossingen 1, 2 en 3 heeft?
Gewijzigd op 29/06/2013 08:39:40 door koos jansen
 
Frank Nietbelangrijk

Frank Nietbelangrijk

29/06/2013 09:44:56
Quote Anchor link
Ik heb erwin's voorbeeld even voorzien van commentaar en uitgebreid met een foreach loop:
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
<?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.', ';
}

?>
Gewijzigd op 29/06/2013 09:46:32 door Frank Nietbelangrijk
 
Koos jansen

koos jansen

29/06/2013 20:54:10
Quote Anchor link
dankjewel.. ik ga er mee aan de slag.
 
Koos jansen

koos jansen

01/07/2013 08:21:18
Quote Anchor link
bedankt. Dat werkte: )

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)
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
<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
++;

    }

?>

en de
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
            <TD width="10%"><a href="test.php"><? echo $oplossing; ?> </a>

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
 



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.