Mijn eerste Class en foutmelding

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

21/11/2006 19:18:00
Quote Anchor link
Voor het eerst probeer ik iets met classes. Leek me wel handig. Ik heb het script overgetypt en nagekeken op fouten maar ik krijg steeds de volgende foutmelding:

Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in /usr/home/domains/public_html/mijn_toegang.inc.php on line 62

Wat heb ik niet goed of het boek?


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
53
54
55
56
57
58
59
60
61
62
63
<?php
class mijn_toegang{
//Variabelen voor toegangsgegevens
var $user=""; //Gebruikersnaam voor MySql
var $password=""; //Wachtwoord
var $host="localhost"; //Naam (ip-adres) van computer met MySql
var $dbname=""; //Naam van de database
//Overige variabelen

var $db_verbinding=false; //Resultaat van verbinding
var $sql_result=false; //Resultaat van uitgevoerde Sql-opdracht

//Constructor definiëren

function mijn_toegang(){
    //Functie verbinden wordt uitgevoerd bij aanroepen klasse
            $this->verbinden();
}

//Als verbinding niet bestaat,
//verbinding opzetten en database als standaard definiëren

function verbinden(){
if ($this->db_verbinding==false){
    $this->db_verbinding = @mysql_connect($this->host, $this->user, $this->password);
    if (empty($this->db_verbinding)){
        $this->fout("Bij opzetten verbinding");
    }

    $keuze = @mysql_select_db($this->dbname, $this->db_verbinding);
    if(empty ($keuze)){
        $this->fout("Bij selecteren van DB");
    }

    return $this->db_verbinding;
}
}


//Geef foutmelding weer en sluit script af
function fout($foutpunt){
    echo $foutpunt . " is een fout opgetreden!<br />";
    echo mysql_error() . "<br />";    //beschrijving van fout
    echo mysql_errno();                //foutnummer
    echo "</body></html>";            //html-tags sluiten
    exit;
}
    

//Sql-opdracht uitvoeren
function sql_opdracht ($sql){
$this->sql_result = @mysql_query($sql, $this->db_verbinding);
if (empty($this->sql_result)){
        $this->fout("Bij verzenden query");
}

return $this->sql_result;
}


//Als er al eerder een Sql-opdracht is uitgevoerd,
//wordt hier de array met de records weergegeven

function sql_gegevens(){
if(!empty($this->sql_result)){
            $sql_array=@mysql_fetch_array($this->sql_result);
            return $sql_array;
}
else{
            $this->fout ("Bij het weergeven van de records");
}
}

//Aan het einde van het script wordt de klasse direct aangeroepen
$db=new mijn_toegang();                                                    
?>
Gewijzigd op 01/01/1970 01:00:00 door
 
PHP hulp

PHP hulp

19/11/2024 02:24:52
 

21/11/2006 19:24:00
Quote Anchor link
Je bent vergeten de class af te sluiten.

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
53
54
55
56
57
58
59
60
61
62
63
64
<?php
class mijn_toegang{
//Variabelen voor toegangsgegevens
var $user=""; //Gebruikersnaam voor MySql
var $password=""; //Wachtwoord
var $host="localhost"; //Naam (ip-adres) van computer met MySql
var $dbname=""; //Naam van de database
//Overige variabelen

var $db_verbinding=false; //Resultaat van verbinding
var $sql_result=false; //Resultaat van uitgevoerde Sql-opdracht

//Constructor definiëren

function mijn_toegang(){
    //Functie verbinden wordt uitgevoerd bij aanroepen klasse
            $this->verbinden();
}

//Als verbinding niet bestaat,
//verbinding opzetten en database als standaard definiëren

function verbinden(){
if ($this->db_verbinding==false){
    $this->db_verbinding = @mysql_connect($this->host, $this->user, $this->password);
    if (empty($this->db_verbinding)){
        $this->fout("Bij opzetten verbinding");
    }

    $keuze = @mysql_select_db($this->dbname, $this->db_verbinding);
    if(empty ($keuze)){
        $this->fout("Bij selecteren van DB");
    }

    return $this->db_verbinding;
}
}


//Geef foutmelding weer en sluit script af
function fout($foutpunt){
    echo $foutpunt . " is een fout opgetreden!<br />";
    echo mysql_error() . "<br />";    //beschrijving van fout
    echo mysql_errno();                //foutnummer
    echo "</body></html>";            //html-tags sluiten
    exit;
}
    

//Sql-opdracht uitvoeren
function sql_opdracht ($sql){
$this->sql_result = @mysql_query($sql, $this->db_verbinding);
if (empty($this->sql_result)){
        $this->fout("Bij verzenden query");
}

return $this->sql_result;
}


//Als er al eerder een Sql-opdracht is uitgevoerd,
//wordt hier de array met de records weergegeven

function sql_gegevens(){
if(!empty($this->sql_result)){
            $sql_array=@mysql_fetch_array($this->sql_result);
            return $sql_array;
}
else{
            $this->fout ("Bij het weergeven van de records");
}
}
}
//<<<<<<<<<<<<<<<<<
//Aan het einde van het script wordt de klasse direct aangeroepen

$db=new mijn_toegang();                                                    
?>
 
Mebus  Hackintosh

Mebus Hackintosh

21/11/2006 19:25:00
Quote Anchor link
laat ook maar:)
Gewijzigd op 01/01/1970 01:00:00 door Mebus Hackintosh
 

21/11/2006 19:37:00
Quote Anchor link
Bedankt jongens, stom dat dat in het boek vergeten is. Daar moet ik het tenslotte van leren.

(Het boek heet: MySQL zonder stress, nou ik heb dus al zitten stressen !!)
 

21/11/2006 19:55:00
Quote Anchor link
Klopt het hoe ik dit aanroep in mijn script?

Of moet ik $data steeds een andere naam geven.
Nu laat hij namelijk de artikelen niet zien die onder categorie komen(groep)

?
<div class="categorie" >
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
            $db
->sql_opdracht("SELECT cat_id,cat_naam FROM categorie ORDER BY cat_naam");
            
            echo '<form method="POST" >';
            echo '<select name="categorie" class="select">';

            while ($data = $db->sql_gegevens()){
            echo '<option value="'.$data['cat_id'] .'">'.$data['cat_naam'].'</option>';
            }

            echo '</select>';
            echo '<input name="submit" type="image" value="categorie" src="plaatjes/pijlrechts.gif" alt="Bekijk deze categorie" />';
            echo '</form>';
            ?>

</div> <!-- einde div categorie in het menulinks-->
<h1>Groep</h1>

<div class="groep" >
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
            $db
->sql_opdracht = ("SELECT groep_id,groep_naam FROM groep ORDER BY groep_naam");
            
            while ($data = $db->sql_gegevens()){
            echo '<a href="?groep_id='.$data['groep_id'] .'">'.$data['groep_naam'].'</a><br />';
            }

            
            ?>

</div> <!-- einde div groep in menulinks -->
?>
 
Martijn B

Martijn B

21/11/2006 20:10:00
Quote Anchor link
Volgens mij gaat het helemaal goed.

In de variabele $data zit voor iedere loop een array met daarin de kolommen van de query (Ofwel 1 record uit bijvoorbeeld 1 of meer tabellen). Als er geen records meer zijn dan wordt $data gelijk aan (boolean) false en stopt dus de while loop (of lus).

edit:

Dit bedoelt u:
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
<?php
//Dit gaat goed:
while ($data = $db->sql_gegevens())
{
...
}

while ($data = $db->sql_gegevens())
{
...
}


// MAAR, dit niet:
while ($data = $db->sql_gegevens())
{

  while ($data = $db->sql_gegevens())
  {
  ...
  }
}

?>


In het onderste geval wordt $data overschreven door de binnenste while lus. Als dit het gewenste resultaat is dan hoeft het natuurlijk niet fout te zijn.
Maar we kunnen na de binnenste while lus niet meer met de $data uit de buitenste while lus werken.
Gewijzigd op 01/01/1970 01:00:00 door Martijn B
 

21/11/2006 20:49:00
Quote Anchor link
Oke, dat begrijp ik.

Maar ik heb mijn while lussen afgesloten voordat ik met een nieuwe begin. Maar hij laat de gegevens niet zien.

Testpagina

Toen ik het op de oude manier deed, dus het selecteren van de database, stond er bij groepen: Algemeen, kinderen, vrouwen, mannen, dieren.
 



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.