class select functie

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Yearupie Achternaamloos

Yearupie Achternaamloos

20/12/2009 17:28:00
Quote Anchor link
hallo,
Ik heb een class gemaakt met een functie die een select query uitvoerd.
Er zijn meerdere regels als output daarom zou dit eigenlijk in een while moeten staan, maar dat werkt niet. Weet iemand hoe ik dit kan maken?

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
<?php
class messaging{
    function
select_query($table,$aantal,$colum1,$colum2,$value1,$value2){
        
        $sql = "SELECT * FROM ".$table." WHERE ".$colum1." = '".$value1."'";
        if($aantal == 2)
        {

            $sql .= " AND ".$colum2." = '".$value2."'";
        }
    
        if(!$res = mysql_query($sql)){
            trigger_error(mysql_error().'<br />In query: '.$sql);
        }

        elseif(mysql_num_rows($res) == 0){
            echo 'Geen resultaten gevonden';
        }

        else
        {
            return mysql_fetch_assoc($res);
        }        
    }
        
    function
inbox(){ // inbox teruggeven in array
    
        $gebruiker = $this->select_query('members','1','username','',$_SESSION['username'],'');
        return $this->select_query('pm','1','msg_to','',$gebruiker['id'],'');
    }
}


$pm_class = new messaging;
$bericht = $pm_class->inbox();
foreach($bericht AS $bericht)
{

    echo $bericht['subject'];
}

?>
 
PHP hulp

PHP hulp

21/11/2024 19:45:42
 
Pim -

Pim -

20/12/2009 17:58:00
Quote Anchor link
Je kan er zoiets van maken
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
65
66
67
68
<?php

class messaging{
    
    // Twee parameter is een array, als je het volgende wilt hebben:
    //SELET * FROM table WHERE veld1 = 'Waarde1' AND veld2 = 'Waarde2'
    // select_query('table', array('veld1'=>'Waarde1', 'veld2'=>'Waarde2'));

    function select_query($table, array $conditions = array()){
        
        $sql = "SELECT * FROM ".$table;
        
        $first = true;
        foreach($conditions as $field => $value) {
            if($first) {
                $sql .= " WHERE ";
                $first = false;
            }
else {
                $sql .= " AND ";
            }

            $sql .= $field." = '".$value."'";
        }

        
        if(!$res = mysql_query($sql)){
            trigger_error(mysql_error().'<br />In query: '.$sql);
        }

        // Is niet meer nodig
        /*
        elseif(mysql_num_rows($res) == 0){
            // Probeer zo min mogelijk echo's te gebruiken in classes
            return false;
        }
        */

        else
        {
            // Maak een array
            $return = array();
            while($row = mysql_fetch_assoc($res)) {
                $return[] = $row;
            }

            
            return $return;
        }        
    }
        
    function
inbox(){ // inbox teruggeven in array
    
        //$gebruiker = $this->select_query('members','1','username','',$_SESSION['username'],'');

        $gebruiker = $this->select_query('members', array('username'=>$_SESSION['username']));
        
        //return $this->select_query('pm','1','msg_to','',$gebruiker['id'],'');
        $return = $this->select_query('pm', array('msg_to'=>$gebruiker[0]['id']));
        return $return[0];
    }
}


$pm_class = new messaging;
// Ik zou van alle berichten $berichten ipv $bericht maken
$berichten = $pm_class->inbox();
if(count($berichten) == 0) {
    echo 'Geen berichten';
}
else {
    foreach($berichten AS $bericht)
    {

        echo $bericht['subject'];
    }
}


?>
Gewijzigd op 01/01/1970 01:00:00 door Pim -
 
Yearupie Achternaamloos

Yearupie Achternaamloos

20/12/2009 18:14:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
 while(!$row = mysql_fetch_assoc($res))
?>


moet natuurlijk zonder ! toch?

edit:
$gebruiker['id'] moet dan dus $gebruiker[0]['id'] worden.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
return $this->select_query('pm', array('msg_to'=>$gebruiker['id']));
?>
Gewijzigd op 01/01/1970 01:00:00 door Yearupie Achternaamloos
 

20/12/2009 19:06:00
Quote Anchor link
Heb je geen aparte database class?
 
Pim -

Pim -

20/12/2009 19:21:00
Quote Anchor link
@Yearupie, je hebt idd gelijk.
Verder raad ik sowieso PDO aan.
Je kan hier trouwens ook een subquery van maken.
Gewijzigd op 01/01/1970 01:00:00 door Pim -
 
Yearupie Achternaamloos

Yearupie Achternaamloos

20/12/2009 19:30:00
Quote Anchor link
Karl schreef op 20.12.2009 19:06:
Heb je geen aparte database class?

Toevallig is dit de aller eerste class die ik in mijn leven schrijf :)
, dus helaas heb ik die nog niet.

Pim schreef op 20.12.2009 19:21:
@Yearupie, je hebt idd gelijk.
Verder raad ik sowieso PDO aan.


PDO lijkt me een heel andere soort van database aanroepen. Ik heb er even na gekeken en daar staat dat je vanaf php6 dit moet gaan gebruiken ipv dat was ik nu heb.

Wil je even naar onderstaande scriptjes kijken of ik het daar goed doe?

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
<?php
/* database connectie PDO */
$db = array (
    'host' => 'localhost',
    'dbname' => 'test',
    'user' => 'root',
    'pass' => ''
);

try
{
    $db = new PDO('mysql:host='.$db['host'].';dbname='.$db['dbname'], $db['user'], $db['pass']);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $db->query("SET SESSION sql_mode = 'ANSI,ONLY_FULL_GROUP_BY'");
}

catch(PDOException $e)
{

    $sMsg = '<p>
            Regelnummer: '
.$e->getLine().'<br />
            Bestand: '
.$e->getFile().'<br />
            Foutmelding: '
.$e->getMessage().'
        </p>'
;
    
    trigger_error($sMsg);
}

?>

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
<?php
$sql
= "INSERT INTO pm (msg_from,msg_to,subject,time,message) VALUES (".$from.",".$to.",'".$subject."',NOW(),'".$message."')"; # INSERT query

/* normaal */

if(!$res = mysql_query($sql)){
    trigger_error(mysql_error().'<br />In query: '.$sql);
}

else
{
    echo "Bericht succesvol verzonden.";
}


/* PDO */
$oStmt = $db->prepare($sQuery);
$oStmt->execute();
?>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php

$sql2
= "SELECT * FROM members"
$oStmt = $db->prepare($sQuery);
$oStmt->execute();

/* normaal */
while($row = mysql_fetch_assoc($sql2))

/* PDO */
while($row = $oStmt->fetch(PDO::FETCH_ASSOC))
?>
Gewijzigd op 01/01/1970 01:00:00 door Yearupie Achternaamloos
 
Joren de Wit

Joren de Wit

20/12/2009 20:32:00
Quote Anchor link
Zo op het eerste gezicht ziet het er prima uit. Maar dan de hamvraag: heb je het zelf al geprobeerd? Werkt het?
 



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.