[PHP] Classes, IF-statement

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Rainmaker1987
  • Registratie: Juni 2005
  • Laatst online: 08-12-2024
Ik ben bezig om voor mezelf een classe te schrijven om gegevens uit een database te halen aan de hand van een aantal korte statements. Dit gaat tot nu toe aardig, de gegevens worden eruit gehaald, alleen het verwerken van deze gegevens gaat niet goed.

Het gedeelte wat de gegevens binnenhaald. In regel 7 gaat het naar het verwerkingsproces toe
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
        //Het aanmaken van de query + omzetten naar arrays
        $query      = "SELECT $rijen FROM $tabellen WHERE $voorwaarde LIMIT 1";
        $result     = mysql_query($query);
        $num_rows   = mysql_num_rows($result);
        
        $naam       = explode(",", $naam);
        $rijen      = explode(",", $rijen);
        $soort      = explode(",", $soort);
        $aantal     = count($rijen);

        //Het uiteindelijke maken van het overzicht
        echo "<TABLE class=\"tabel\" border=1>";        

        for($a = 0; $a < $num_rows; $a++){
            $rij    = mysql_fetch_array($result);
            for($b = 0; $b < $aantal; $b++){
                $waarde     = $this->verwerken_gegevens($rij[$b], $soort[$b]);
                echo "<TR><TD>".$naam[$b]."<TD>".$waarde;   
            }
        }   
        echo "</TABLE>";
        echo $query;


Het verwerkingsproces
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
    //Het verwerken van de gegevens uit de database
    function verwerken_gegevens($waarde, $soort){
        echo $soort;
        if ($soort == "text"){
            echo "test";
            }
        ELSEIF ($soort == "date"){
                echo "datum";
                $waarde = $this->datum($waarde);
        }
        return $waarde; 
    }


Het vervelende is dat de code maar 1 keer door de IF statements wordt gebruikt. Als resultaat van echo $soort krijg ik:
- text
- text
- date

Alleen ik krijg maar 1 keer test uit mijn php. Voor $soort gebruik ik overigens een array die ik eerder heb aangemaakt. De gegeven worden overigens wel braaf uit de database gehaald.

Hoe krijg ik het voor elkaar dat deze meerdere keren wordt bekeken door de IF-statements? Het lijkt mij namelijk dat deze bij elke keer dat de functie wordt aangeroepen het gewoon gevolgd moet worden.

(er is overigens geen verschil of ik bij de tweede keer ELSEIF of IF gebruik)

[ Voor 14% gewijzigd door Rainmaker1987 op 17-02-2007 17:56 . Reden: aanvulling van gegevens ]


Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Kijk eens in je broncode of daar wel staat wat je verwacht. Omdat je tabel niet goed opgebouwd wordt, kan het namelijk goed zijn dat je browser een deel niet laat zien.

Acties:
  • 0 Henk 'm!

  • Mr. Bondt
  • Registratie: Februari 2005
  • Laatst online: 27-08 14:50
Ik zou je <TD>'s even afsluiten met </TD> :) en de <TR> ook even afsluiten natuurlijk met </TR>.

En wat ^ zegt.

[ Voor 45% gewijzigd door Mr. Bondt op 17-02-2007 17:49 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Mr. Bondt schreef op zaterdag 17 februari 2007 @ 17:48:
Ik zou je <TD> even afsluiten met </TD> :)
Hoeft niet hoor, het is duidelijk HTML 4.x, maar dat neemt niet weg dat het wel verstandig is ja. In dit geval zal het waarschijnlijk geen problemen opleveren.

Acties:
  • 0 Henk 'm!

  • Rainmaker1987
  • Registratie: Juni 2005
  • Laatst online: 08-12-2024
Broncode bekeken hier zit niet het probleem in. Daar komt niets uit. De controlestukjes komen we altijd 1 regel erboven, maar dat is logisch omdat die er eerst uit worden gegooid dan het gedeelte waar de volgende regel (<TR> etc) wordt aangemaakt.

Pagina (uitkomst) is overigens te kijken of:
http://test.jeugdschaken.nl/classes/test.php

Overigens is de HTML idd 4.x maar dat gedeelte is nu nog niet zo heel erg belangrijk. Eerst de gegevens er maar eens goed uitkrijgen

[ Voor 16% gewijzigd door Rainmaker1987 op 17-02-2007 17:51 . Reden: aanvulling ]


Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Ik zie daar één tabel met drie rijen (in de volgorde text, text, date). Wat is dan precies het probleem?

Acties:
  • 0 Henk 'm!

Verwijderd

Waar wordt $aantal geset?

Acties:
  • 0 Henk 'm!

  • Rainmaker1987
  • Registratie: Juni 2005
  • Laatst online: 08-12-2024
@glowmouse Als je kijkt in het stukje verwerken dan zou er 2 maal eruit moeten komen: test en 1 maal datum. Er komt echter maar 1 keer test eruit.

Dit kan alleen maar komen als de IF-statements maar 1 keer worden doorlopen. Ik wil logischerwijs dat dit bij al mijn waardes gebeurt.

@alterlife: deze wordt al eerder gedaan. Het probleem zit hem hier zeker niet aangezien de data wel netjes uit de database komt zetten. Maar ik heb het even aan mn startpost toegevoegd

[ Voor 27% gewijzigd door Rainmaker1987 op 17-02-2007 17:57 ]


Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
code:
1
2
3
4
5
6
<TABLE class="tabel" border=1>
texttest
<TR><TD>Id<TD>1 text
<TR><TD> Titel<TD>Nieuwe tariefstructuur taxivervoer date
<TR><TD> Datum<TD>2006-12-04
</TABLE>

Op regel 2 zie je 'texttest' zoals je verwacht. Op regel 3 alleen 'text' zonder 'test'. Ik denk dat dit komt door de spatie voor text. Geen van beide IF's wordt gematcht, dus krijg je ook geen tweede echo :)

Acties:
  • 0 Henk 'm!

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02 23:12

SchizoDuckie

Kwaak

Ik denk toch echt dat je de rest van je class ook even zal moeten posten want hier kunnen we weinig mee vrees ik (of ik iig niet)

Stop uploading passwords to Github!


Acties:
  • 0 Henk 'm!

  • Rainmaker1987
  • Registratie: Juni 2005
  • Laatst online: 08-12-2024
Glowmouse, hartstikke bedankt, zoals je kan zien werkt hij nu netjes. Had ik echt totaal niet aan gedacht. Ik ga eerst maar even zorgen dat die spaties eruit worden gesloopt. Voor de rest werkt het perfect _/-\o_

Zal ik aan denken als ik verder ga. Ik zal hier dan ook mn oplossing neerzetten.

Oplossing:

PHP:
1
2
3
4
//weghalen van overbodige spaties
$soort      = str_replace(' ','',$soort);
$naam       = trim($naam);
$naam       = str_replace(', ',',',$naam);


Toevoegen op regel 5 van eerste stuk code. Niet direct ook str_replace(' ','',$naam) omdat anders ook de spaties na de komma worden weggehaald.

[ Voor 65% gewijzigd door Rainmaker1987 op 18-02-2007 16:49 . Reden: oplossing toegevoegd ]


Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
psst

Overigens is het niet zo gebruikelijk om dingen te echo'en in een class. Dat is voornamelijk handig bij debuggen, maar voor de overzichtelijkheid van code kun je HTML-code beter via een template doen.
Pagina: 1