class select functie
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)
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
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'];
}
?>
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'];
}
?>
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
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'];
}
}
?>
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 -
moet natuurlijk zonder ! toch?
edit:
$gebruiker['id'] moet dan dus $gebruiker[0]['id'] worden.
Gewijzigd op 01/01/1970 01:00:00 door Yearupie Achternaamloos
Heb je geen aparte database class?
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 -
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.
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)
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
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);
}
?>
/* 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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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();
?>
$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)
1
2
3
4
5
6
7
8
9
10
11
12
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))
?>
$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
Zo op het eerste gezicht ziet het er prima uit. Maar dan de hamvraag: heb je het zelf al geprobeerd? Werkt het?