array laat maar 1 resultaat zien uit de database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Michiel v

michiel v

16/11/2011 12:19:11
Quote Anchor link
Ik heb de onderstaande functie geschreven. Het probleem is dat er 30 resultaten in de database staan onder "productPRICE" maar het programma laat er maar 1 zien.

Wat doe ik verkeerd?

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php
//*Program:  prijzen weergeven

function prijs(){

//onderstaand maakt connectie met de database
    include ("../include.php");

    
    $query = "SELECT * FROM useraccount, product WHERE useraccount.PIDID = product.PIDID ";
    $result = mysql_query($query);
    
    # Query controleren
    if( mysql_num_rows( $result ) == 0 )
    {

        return 'None of the requested data is found.';
  
    }

    else
    {

        
        while( $rec = mysql_fetch_assoc( $result ) )
        {

            $totaal[] = $rec['productPRICE'];        
        }

        
        # Weergaven
        foreach( $totaal as $totaalprijs )
        {

            if($totaalprijs > 0)
            {

                return  $totaalprijs;    
            }

            elseif( $totaalprijs < 0 )
            {

                return 'Nader overeen te komen';
            }

            elseif ($totaalprijs == 'prijsPerPartij')
            {

                return 'Per partij';
            }
        }
    }
}


    //-----------------------------------------------

    // resultaten echoen op de pagina    

        echo prijs();
    //-----------------------------------------------
?>
Gewijzigd op 16/11/2011 12:29:58 door Michiel v
 
PHP hulp

PHP hulp

08/09/2024 04:11:40
 
- SanThe -

- SanThe -

16/11/2011 13:12:31
Quote Anchor link
In de foreach() doe je zodra je iets gevonden hebt een return. Dan is de function klaar en heb je inderdaad maar één antwoord.
 
Michiel v

michiel v

16/11/2011 13:24:37
Quote Anchor link
Beste SanThe,

Wat zou ik dan op de plek van de return moeten zetten. Iets van " . $row['productPRICE'] . "

?
 
- SanThe -

- SanThe -

16/11/2011 13:29:11
Quote Anchor link
Wat is je doel?
 
Michiel v

michiel v

16/11/2011 13:38:43
Quote Anchor link
De functie op een andere pagina ophalen. En daar alle gegevens in een listing laten zien.
 
- SanThe -

- SanThe -

16/11/2011 13:52:28
Quote Anchor link
Vanaf de else:
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
<?php
else
{
    $array = array();
    while( $rec = mysql_fetch_assoc( $result ))
    {

        if($rec['productPRICE'] > 0)
        {

            $array[] = $rec['productPRICE'];
        }

        elseif($rec['productPRICE'] < 0)
        {

            $array[] = 'Nader overeen te komen';
        }

        else
        {
            $array[] = 'Per partij';
        }
    }

    return $array;
}

?>
Gewijzigd op 16/11/2011 13:53:52 door - SanThe -
 
Michiel v

michiel v

16/11/2011 14:11:50
Quote Anchor link
thanks ga er even mee aan slag!

Toevoeging op 16/11/2011 15:26:35:

hmmm.... kom er niet helemaal uit. Heb je code iets aangepast want het werkte niet helemaal. Nu met de nieuwe code is geeft de array als resultaat het woord "Array". Enig idee hoe dit kan is de array soms leeg?

zie code:
$array = array();

while( $rec = mysql_fetch_assoc( $result ))
{
if($rec['productPRICE'] < 0)
{
$array[] = 'Nader overeen te komen';
}
else
{
$array[] = $rec['productPRICE'];
}
}
return $array;

}
}
 
- SanThe -

- SanThe -

17/11/2011 14:06:00
Quote Anchor link
Bij de aanroep hoort een if().

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
<?php
$var
= prijs();
if(is_array($var))
{

    foreach($var as $value)
    {

        echo $value . '<br />';
    )
{

else
{
    echo $var;
}

?>
Gewijzigd op 17/11/2011 14:06:19 door - SanThe -
 
Michiel v

michiel v

17/11/2011 18:59:22
Quote Anchor link
Hoi SanThe,

Bedankt weer voor je code! Kom er nog steeds niet uit. Onderstaand vindt je de code van de pagina/listing waarin de functie moet worden opgeroepen. Hoe moet ik jou code dan hiertussen plaatsen?


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
31
32
33
34
35
36
37
38
<?php
   while ($row = mysql_fetch_array($result)){
          
        echo "  <tr style='background:#f3f3f3;'>";
    
        echo " <td align='center' valign='top'><img src='http://'></td>";
    
         echo "<td align='left' valign='top'>[ Aangeboden ] <a href='http://'>" . $row['productNAME'] . "</a><br>";
      
        echo "<div align='left' valign='top'><strong>Van: </strong> " . $row['name'] . "</div> </td>";
    
         echo "<td align='center' valign='top'>" . $row['totalMinimum'] . "</td>";
      
        echo "<td align='left' valign='top'><strong>Prijs: </strong>
  
                    <?php
                    $var = prijs();
                        if(is_array($var))
                        {
                                foreach($var as $value)
                                {
                                        echo $value . '<br />';
                                )
                        {
                        else
                        {
                                echo $var;
                        }
                    ?>

            </td>"
;
      
          echo "<td align='center' valign='top'>Nederland</td>";

        echo "<td align='left' valign='top'>" . $row['createDATUM'] . " </td>";
}
{
?
 
- SanThe -

- SanThe -

17/11/2011 19:09:21
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
14
15
16
17
18
19
20
21
22
23
24
25
<?php
while ($row = mysql_fetch_array($result)){
    echo "<tr style='background:#f3f3f3;'>";
    echo "<td align='center' valign='top'><img src='http://'></td>";
    echo "<td align='left' valign='top'>[ Aangeboden ] <a href='http://'>" . $row['productNAME'] . "</a><br>";
    echo "<div align='left' valign='top'><strong>Van: </strong>" . $row['name'] . "</div></td>";
    echo "<td align='center' valign='top'>" . $row['totalMinimum'] . "</td>";
    echo "<td align='left' valign='top'><strong>Prijs: </strong>";
    $var = prijs();
    if(is_array($var))
    {

        foreach($var as $value)
        {

            echo $value . '<br />';
        )
    }

    else
    {
        echo $var;
    }

    echo "</td>";
    echo "<td align='center' valign='top'>Nederland</td>";
    echo "<td align='left' valign='top'>" . $row['createDATUM'] . " </td>";
}
?
 
Michiel v

michiel v

17/11/2011 19:18:34
Quote Anchor link
Hoi Santhe,

We komen steeds een stukje verder:). Maar hij geeft nu alle resultaten binnen 1 kolom zie: http://www.voteforthevoice.com/s4new/listingrubriek_test_22santhe1.php

Kijk bij het kopje prijs van de listingpagina.

Groetjes michiel
 
- SanThe -

- SanThe -

17/11/2011 19:30:02
Quote Anchor link
Ik heb alleen getracht jouw code werkend te maken. Verder heb ik er geen zicht op.
 
Michiel v

michiel v

17/11/2011 19:37:41
Quote Anchor link
Het punt is dat bij prijs nu alle prijzen uit de database worden getoond binnen 1 <td> </td> op de pagina. Maar hoe krijg ik nou de resultaten appart in de kolom onder elkaar?

Nu zorgt de volgende code ervoor dat ik de resultaten kan listen met:while ($row = mysql_fetch_array($result)){

en dan oproepen met: ". $row['totalMinimum'] . "

Maar bij mijn functie prijs() zet hij het niet goed in de listing. Hmmmm... misschien nog een idee?
 
- SanThe -

- SanThe -

17/11/2011 19:46:27
Quote Anchor link
Eerst is het probleem dat ie maar één resultaat laat zien. Nu is het probleem dat ie meerdere resultaten laat zien. En beiden zijn niet okee volgens jou. Mijn conclusie is dan al snel dat je opzet dus verkeerd is. Probeer alles zo simpel en logisch mogelijk te zien.
 
Mitchel V

Mitchel V

17/11/2011 19:47:28
Quote Anchor link
Michiel,

Om je functie schoon te houden en makkelijker voor hergebruik zou ik geen plain tekst er in zetten, het is mooier als je een array er uit laat komen, stel je wilt het ooit ergens anders gebruiken in een andere form dan kan je dit makkelijk hergebruiken.


Zie code.


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
31
32
33
34
35
36
37
38
39
<?php

//*Program:  prijzen weergeven

function prijs(){
    //onderstaand maakt connectie met de database
    include ("../include.php");

    $query = "SELECT * FROM useraccount, product WHERE useraccount.PIDID = product.PIDID ";
    $result = mysql_query($query);

    # Query controleren
    if( mysql_num_rows( $result ) == 0 ) {
        return false;
    }
else {
        while( $rec = mysql_fetch_assoc( $result ) ) {
            $totaal[] = $rec['productPRICE'];        
        }
    }
}


//-----------------------------------------------

// resultaten echoen op de pagina    

if( prijs() ){
    foreach( prijs() as $totaalprijs ) {
        if($totaalprijs > 0) {
            echo $totaalprijs;    
        }
elseif( $totaalprijs < 0 ) {
            echo 'Nader overeen te komen';
        }
elseif ($totaalprijs == 'prijsPerPartij') {
            echo 'Per partij';
        }
    }
}
else {
    echo 'Er zijn geen prijzen gevonden.';
}

//-----------------------------------------------
?>
 



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.