pgSQL moelijk vraag
Ik heb dit stukje code :
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
$a=pg_query("SELECT id, speler, stad, geld FROM speler ORDER BY speler DESC LIMIT ".$max." OFFSET ".$cur."");
$e=(($page*$max)-$max)+1;
while ($b=pg_fetch_array($a)){
$c=pg_query("SELECT SUM(punt) AS punt FROM item_speler WHERE speler='".$b['speler']."'");
$d=pg_fetch_object($c);
if ($b['stad'] == ''){
$b['stad']='- Geen -';
}
if ($d->punt == ''){
$d->punt='0';
}
echo '
<tr>
<td class="frame3" width="30">'.$e.'</td>
<td class="frame3" width="250">'.$b['stad'].'</td>
<td class="frame3" width="250">'.$b['speler'].'</td>
<td class="frame3" width="110">'.$b['geld'].'</td>
<td class="frame3" width="120">'.$d->punt.'</td>
<td class="frame3" width="30">X</td>
</tr>';
$e++;
}
?>
$a=pg_query("SELECT id, speler, stad, geld FROM speler ORDER BY speler DESC LIMIT ".$max." OFFSET ".$cur."");
$e=(($page*$max)-$max)+1;
while ($b=pg_fetch_array($a)){
$c=pg_query("SELECT SUM(punt) AS punt FROM item_speler WHERE speler='".$b['speler']."'");
$d=pg_fetch_object($c);
if ($b['stad'] == ''){
$b['stad']='- Geen -';
}
if ($d->punt == ''){
$d->punt='0';
}
echo '
<tr>
<td class="frame3" width="30">'.$e.'</td>
<td class="frame3" width="250">'.$b['stad'].'</td>
<td class="frame3" width="250">'.$b['speler'].'</td>
<td class="frame3" width="110">'.$b['geld'].'</td>
<td class="frame3" width="120">'.$d->punt.'</td>
<td class="frame3" width="30">X</td>
</tr>';
$e++;
}
?>
Nu worden mijn resultaten gerangschikt volgens speler.
Maar nu wil ik dit laten rangschikken volgens de cijfers die bij $d->punt genereert.
Alvast bedankt
Edit:
Of bedoel je dit:
Let ook even op foutafhandeling
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
$a=pg_query("SELECT
sp.id,
sp.speler,
sp.stad,
sp.geld,
SUM(is.punt) AS sumpunt
FROM
speler AS sp
JOIN
item_speler AS is
ON is.speler = sp.speler
ORDER BY
sumpunt
DESC
LIMIT
".$max."
OFFSET
".$cur);
$e=(($page*$max)-$max)+1;
pg_fetch_array($a);
echo '<pre>'.print_r($result, true).'</pre>';
?>
$a=pg_query("SELECT
sp.id,
sp.speler,
sp.stad,
sp.geld,
SUM(is.punt) AS sumpunt
FROM
speler AS sp
JOIN
item_speler AS is
ON is.speler = sp.speler
ORDER BY
sumpunt
DESC
LIMIT
".$max."
OFFSET
".$cur);
$e=(($page*$max)-$max)+1;
pg_fetch_array($a);
echo '<pre>'.print_r($result, true).'</pre>';
?>
Let ook even op foutafhandeling
Gewijzigd op 01/01/1970 01:00:00 door PHP Newbie
Dus de gegevens van de table speler moeten gesorteerd worden volgens de table item_speler
Edit :
En hoe werkt da tnu juist ? Want kopieren vind ik wat nuteloos :p
leer je niks van bij he
Gewijzigd op 01/01/1970 01:00:00 door Mike D.
Kijk even of dat het resultaat geeft wat je verwacht. Als je wilt weten hoe het precies in elkaar steekt kun je even een tutorial zoeken over JOIN.
Warning: pg_query() [function.pg-query]: Query failed: ERROR: relation "punt" does not exist in /var/www/vhosts/***.nl/httpdocs/ledenlijst.php on line 31
Maar volgens mij word in die query nergens de table item_speler aangehaald ?
ergens in de sql van Newbie moet speler item_speler worden
en waar dan wel ?
kan er iemand antworden aub ?
edit:
Niet bumpen
Als er niemand reageert in je topic mag je pas na 24 uur zelf weer een bericht plaatsen
Als er niemand reageert in je topic mag je pas na 24 uur zelf weer een bericht plaatsen
Gewijzigd op 01/01/1970 01:00:00 door PHP Newbie
Ik heb die code gebruikt maar ik krijg de fout die ik enkle regels geleden gezet heb
Gewijzigd op 01/01/1970 01:00:00 door Mike D.
Ik heb mijn topic nogmaals ge-edit daarna.
Warning: pg_query() [function.pg-query]: Query failed: ERROR: syntax error at or near "." at character 133 in /var/www/vhosts/***.nl/httpdocs/ledenlijst.php on line 31
Dit is mijn lijn 31 :
".$cur);
Je zet dus ook NOOOOOOOIT een query rechtstreeks in de functie die hem uitvoert, dan kun je hem niet echoen...
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$query = "SELECT * FROM tabelnaam WHERE id = $1";
$result = pg_query_params($query, $_GET['id']);
echo $query;
?>
$query = "SELECT * FROM tabelnaam WHERE id = $1";
$result = pg_query_params($query, $_GET['id']);
echo $query;
?>
al kan je volgens mij ook geen getal als variable nemen, of ben ik nu erg oldschool?
Nee klopt. Maar enkele quotes om een INT-waarde is al overbodig. SQL accepteert INTs zonder quotes, tenminste: als je datatype goed is.
ik doe altijd enkele quotes, voor de zekerheid dan toch. Maar eventjes offtopic, heeft phphulp een sql manual? voor join etc, moet ik nog leren.
wesley schreef op 29.01.2009 15:22:
;)where id = '". $1 ."'
al kan je volgens mij ook geen getal als variable nemen, of ben ik nu erg oldschool?
al kan je volgens mij ook geen getal als variable nemen, of ben ik nu erg oldschool?
$1 is hier geen variabele binnen PHP, maar een placeholder binnen de query. De variabele $_GET['id'] wordt vervolgens op een veilige manier op de plek van $1 neergezet. Zo kun je uiteraard ook $2, $3, etc. gebruiken wanneer je meerdere parameters nodig hebt.
Zie de handleiding
Binnen SQL kun je dit ook doen wanneer je met prepared statements gaat werken:
En vervolgens aanroepen vanuit je PHP met:
De placeholder haal je dus ook niet buiten quotes, dan klopt er echt helemaal niets meer van.
Edit:
Zie ook dit voorbeeld met meerdere parameters.
Gewijzigd op 01/01/1970 01:00:00 door Frank -