[PHP] arrays fout in declaratie of initialisatie *

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ha Mensen

Ik heb dit stuk 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
<?php

$nummer = array();
$formule = array();
$bedragen = array();
$gebruikers = array();

$qu_gebruikers = mysql_query("SELECT * FROM gebruikers");
for($i = 0; $obj = mysql_fetch_object($qu_gebruikers); $i++)
{
    $gebruikers[$i] = $obj->id;
}

for($tel = 0; $tel > $i; $tel++)
{
    $qu_sel_gebruikers = mysql_query("SELECT * FROM gebruikers WHERE id = '".$gebruikers[$i]."'");
    while($gebruiker = mysql_fetch_object($qu_sel_gebruikers)){
        $totaal = 0;
    $query = mysql_query("SELECT * FROM abonnement WHERE verk_nr = '".$gebruikers[$i]."' || deel_nr = '".$gebruikers[$i]."'");
    while ($obj = mysql_fetch_object($query))
    {
        if($obj->deel_nr == "0"){
            $totaal = $totaal + $obj->Nt_bonus;
        }
        else{
            $totaal = $totaal + ($obj->Nt_bonus/2);
        }
    }
    $bedragen[$i] = $totaal;
    $formule[$i] = $totaal / $gebruiker->uren;
    $nummer[$i] = $totaal / $gebruiker->uren; 
    }
}   
for($x = 0; $x < $tel; $x++) {
    for($y = 0; $y < $tel; $y++) {
        if($nummer[$x] < $nummer[$y]) {
            $hold = $nummer[$x];
            $nummer[$x] = $nummer[$y];
            $nummer[$y] = $hold;
        }       
    }
}
    
for($teller = 0; $teller < $tel; $teller++)
{
    echo $gebruikers[$teller]."<br>";
}

?>


Wat doe ik hier ?

Eerst maak ik een paar array's aan (daar gaat het volgens mij fout:$)

Dan zet ik de gebruikers in een array, omdat niet alle id's van de gebruikers opeen volgend zijn. (zo kan ik ze later beter verwerken)

Dan tel ik alle bedragen die verdient hebben op, en zet deze ook in array. Hier zet ik ook even een berekeningetje in.

Daarna sorteer ik de berekende array dmv Bubble sort

De laatste for is voor het weergeven, eigenlijk meer voor de test. maar deze geeft niks weer :o :o

Misschien weten jullie de oplossing

Greetz Hendrik

Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Uhm, wat gaat er fout? Wat is je probleem, wat wil je en wat lukt er niet? Ik zie hier een stuk code en jouw uitleg met wat het doet. Dat is leuk om te weten, maar heeft niet echt een discussiewaarde ;)

offtopic:
Verder is je code verre van optimaal. Je haalt eerst alles op. Vervolgens haal je -per gebruiker0 nog een keer die gegevens op en wat extra informatie. Dit kan gemakkelijk in een enkele query en vergroot je prestaties drastisch!

[ Voor 37% gewijzigd door mithras op 12-12-2008 15:05 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het probleem is dat er blijkbaar niks in de array's word gezet.

In de laatste for, zou ik graag alle items van de array $gebruikers willen zien.

@offtopic: Dit is inderdaad waar, ik ga de code waar nodig nog even optimaliseren. Maar dan wil ik eigenlijk eerst even dit stuk code werkend hebben

[ Voor 36% gewijzigd door Verwijderd op 12-12-2008 15:08 ]


Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Heb je al een debug ronde gedaan? Wat zijn tussendoor je verwachte waardes van de variabelen? var_dump() is een krachtige methode om je variabelen te controleren. Loop stapsgewijs door je code heen en dump een aantal keer de uitkomst van je variabelen. Als er niet het verwachtte uitkomt, zit er dus een fout in je code :)

Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Wat doe ik hier ?
Dat vraag ik me ook af ;) Zoals je hier kan lezen, Waar hoort mijn topic?, horen PHP problemen en vragen in Programming. Ik verplaats daarom je topic ook even.

Ik wil je daarnaast vragen om een betere beschrijvende titel te verzinnen en via de Afbeeldingslocatie: http://tweakimg.net/g/forum/images/icons/icon_hand.gif knop bovenin een betere suggestie te doen. Je hebt een bepaald probleem met arrays, dus probeer je voorstel iets beschrijvender te doen ;)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
mithras schreef op vrijdag 12 december 2008 @ 15:08:
Heb je al een debug ronde gedaan? Wat zijn tussendoor je verwachte waardes van de variabelen? var_dump() is een krachtige methode om je variabelen te controleren. Loop stapsgewijs door je code heen en dump een aantal keer de uitkomst van je variabelen. Als er niet het verwachtte uitkomt, zit er dus een fout in je code :)
ha, oke deze functie wist ik niet.

Acties:
  • 0 Henk 'm!

Verwijderd

Dit lijkt me ook niet helemaal lekker werken :

PHP:
1
2
3
4
5
6
7
for($i = 0; $obj = mysql_fetch_object($qu_gebruikers); $i++)
{
    $gebruikers[$i] = $obj->id;
}

for($tel = 0; $tel > $i; $tel++)   // rara, wat gaat hier fout....
// etc.

Acties:
  • 0 Henk 'm!

  • OxiMoron
  • Registratie: November 2001
  • Laatst online: 08-07 14:27
Ehhm..

1. Je doet een query op alle gebruikers, hiervan sla je de ID op.
2. Je doet een query waarbij je een enkele gebruiker ophaald adhv het eerder opgehaalde ID.
3. Vervolgens loop je nog 2-3 keer door hetzelfde lusje.

Waarschijnlijk je met een paar simpele joins al je logica in 1 query stoppen waardoor je dat hele stuk PHP code kunt reduceren tot 3-4 regels.


P.S. || als OR (hint) statement gebruiken in je query is niet handig, zeker aangezien het in postgres een concat is.

Albert Einstein: A question that sometime drives me hazy: Am I or are the others crazy?


Acties:
  • 0 Henk 'm!

  • Krooswijk.com
  • Registratie: Mei 2000
  • Laatst online: 17-08-2024
Werkt dit niet?
code:
1
2
3
4
while ( $obj = mysql_fetch_object($qu_gebruikers) )
{
    $gebruikers[] = $obj->id;
}


En dus niet $i gebruiken, maar count( $gebruikers).
Verder zal je tweede loop niet werken, waardoor $tel fout gezet wordt, en bij echoen op het eind er geen waarden geprint worden.

[ Voor 61% gewijzigd door Krooswijk.com op 12-12-2008 16:09 ]


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Je moet dus gewoon 1 query maken waarin je de tabellen kunt joinen op elkaar, kun je direct de boel sorteren zoals jij dit wil hebben. Neem eens een paar tutorials voor MySQL door.

Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

debuggen in tools doen we nu in PHP en Debuggen: hoe, wat, waar en waarmee?

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.

Pagina: 1