limit toevoegen aan php code
hoe kan ik aan dit script een limit toevoegen
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
$user_id = mysqli_real_escape_string($con, $_SESSION['user_id']);
$select = "SELECT
*
FROM
status
ORDER BY time DESC ";
$queryse = mysqli_query($con, $select);
if($queryse == false)
{
echo '<font color="red">Error: ' . mysqli_error($con) . '</font><br>';
exit();
}
while($row = mysqli_fetch_array($queryse))
{
$usermessage = mysqli_real_escape_string($con, $row['user_id']);
$check_friend= "SELECT
*
FROM
friends
WHERE
status='vrienden'
AND
(
user_id='$user_id'
OR
friend_id='$user_id'
)";
$querycf = mysqli_query($con, $check_friend);
if($querycf == false)
{
echo '<font color="red">Error: ' . mysqli_error($con) . '</font><br>';
exit();
}
$controle = mysqli_num_rows($querycf);
if($controle != 0)
{
$selectu = "SELECT
*
FROM
users
WHERE
id='$usermessage'";
$query = mysqli_query($con, $selectu);
$user = mysqli_fetch_array($query);
if($user['profielfoto'] != '')
{
$pf = $user['profielfoto'];
}
else
{
$pf = 'persoon.jpg';
}
echo '<div class="message" onclick="persoon(' . $user['id'] . ')">';
echo '<div class="profielfoto">';
echo '<img src="pf/' . $pf . '" height="80" width="80">';
echo '</div><div class="name"><h2 style="float: right;">';
echo $user['voornaam'] . ' ' . $user['achternaam'] . '</h2></div>';
echo '<div class="txt">';
echo $row['message'] . '</div><br>';
echo '</div>';
}
}
?>
$user_id = mysqli_real_escape_string($con, $_SESSION['user_id']);
$select = "SELECT
*
FROM
status
ORDER BY time DESC ";
$queryse = mysqli_query($con, $select);
if($queryse == false)
{
echo '<font color="red">Error: ' . mysqli_error($con) . '</font><br>';
exit();
}
while($row = mysqli_fetch_array($queryse))
{
$usermessage = mysqli_real_escape_string($con, $row['user_id']);
$check_friend= "SELECT
*
FROM
friends
WHERE
status='vrienden'
AND
(
user_id='$user_id'
OR
friend_id='$user_id'
)";
$querycf = mysqli_query($con, $check_friend);
if($querycf == false)
{
echo '<font color="red">Error: ' . mysqli_error($con) . '</font><br>';
exit();
}
$controle = mysqli_num_rows($querycf);
if($controle != 0)
{
$selectu = "SELECT
*
FROM
users
WHERE
id='$usermessage'";
$query = mysqli_query($con, $selectu);
$user = mysqli_fetch_array($query);
if($user['profielfoto'] != '')
{
$pf = $user['profielfoto'];
}
else
{
$pf = 'persoon.jpg';
}
echo '<div class="message" onclick="persoon(' . $user['id'] . ')">';
echo '<div class="profielfoto">';
echo '<img src="pf/' . $pf . '" height="80" width="80">';
echo '</div><div class="name"><h2 style="float: right;">';
echo $user['voornaam'] . ' ' . $user['achternaam'] . '</h2></div>';
echo '<div class="txt">';
echo $row['message'] . '</div><br>';
echo '</div>';
}
}
?>
het moet een limit van 25 zijn maar hoe kan ik dat toevoegen? want hij selecteerd dan maar
25 berichten uit de database
en controleert hij van de 25 berichten
of ze gestuurt zijn door een vriend
maar het probleem is als ze dat niet zijn
zal hij hem niet echoen en dus geen 25 berichten als limit laten zien
Mysql documentatie Select
Zie Quote:
With two arguments, the first argument specifies the offset of the first row to return, and the second specifies the maximum number of rows to return. The offset of the initial row is 0 (not 1):
SELECT * FROM tbl LIMIT 5,10; # Retrieve rows 6-15
With one argument, the value specifies the number of rows to return from the beginning of the result set:
SELECT * FROM tbl LIMIT 5; # Retrieve first 5 rows
SELECT * FROM tbl LIMIT 5,10; # Retrieve rows 6-15
With one argument, the value specifies the number of rows to return from the beginning of the result set:
SELECT * FROM tbl LIMIT 5; # Retrieve first 5 rows
PS: De font-tag mag je inmiddels wel vervangen naar CSS. ;-)
- Aar - op 30/01/2014 15:51:29:
PS: De font-tag mag je inmiddels wel vervangen naar CSS. ;-)
Mee eens! Maar dan val je daar wel over, maar die inline style bij H2 niet? :P
edit: .message > h2{float:right;} had ook in de css gekund
Gewijzigd op 30/01/2014 15:57:12 door Michael -
Je gaat eerst bepalen wie de vrienden zijn:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
SELECT
(CASE user_id
WHEN 2 THEN friend_id
ELSE user_id END) AS friend_id
FROM
friends
WHERE status='vrienden' AND (friend_id = 2 OR user_id = 2)
(CASE user_id
WHEN 2 THEN friend_id
ELSE user_id END) AS friend_id
FROM
friends
WHERE status='vrienden' AND (friend_id = 2 OR user_id = 2)
Dit zet je dan in een subquery (inline view), en dan ga je de andere tabellen eraan koppelen:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
SELECT
f.friend_id,
u.first_name,
u.last_name,
m.time,
m.message
FROM
(SELECT
(CASE user_id
WHEN 2 THEN friend_id
ELSE user_id END) AS friend_id
FROM
friends
WHERE status='vrienden' AND (friend_id = 2 OR user_id = 2)
) f
JOIN
users u ON f.friend_id = u.user_id
JOIN
status m ON f.friend_id = m.user_id
ORDER BY m.time DESC
LIMIT 25
f.friend_id,
u.first_name,
u.last_name,
m.time,
m.message
FROM
(SELECT
(CASE user_id
WHEN 2 THEN friend_id
ELSE user_id END) AS friend_id
FROM
friends
WHERE status='vrienden' AND (friend_id = 2 OR user_id = 2)
) f
JOIN
users u ON f.friend_id = u.user_id
JOIN
status m ON f.friend_id = m.user_id
ORDER BY m.time DESC
LIMIT 25
als ik gewoon een limit 0, 25 toevoeg werkt het niet
mischien ben ik niet echt duidelijk geweest maar ik bedoel dat
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
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
<?php
if($controle != 0)
{
$selectu = "SELECT
*
FROM
users
WHERE
id='$usermessage'";
$query = mysqli_query($con, $selectu);
$user = mysqli_fetch_array($query);
if($user['profielfoto'] != '')
{
$pf = $user['profielfoto'];
}
else
{
$pf = 'persoon.jpg';
}
echo '<div class="message" onclick="persoon(' . $user['id'] . ')">';
echo '<div class="profielfoto">';
echo '<img src="pf/' . $pf . '" height="80" width="80">';
echo '</div><div class="name"><h2 style="float: right;">';
echo $user['voornaam'] . ' ' . $user['achternaam'] . '</h2></div>';
echo '<div class="txt">';
echo $row['message'] . '</div><br>';
echo '</div>';
}
?>
if($controle != 0)
{
$selectu = "SELECT
*
FROM
users
WHERE
id='$usermessage'";
$query = mysqli_query($con, $selectu);
$user = mysqli_fetch_array($query);
if($user['profielfoto'] != '')
{
$pf = $user['profielfoto'];
}
else
{
$pf = 'persoon.jpg';
}
echo '<div class="message" onclick="persoon(' . $user['id'] . ')">';
echo '<div class="profielfoto">';
echo '<img src="pf/' . $pf . '" height="80" width="80">';
echo '</div><div class="name"><h2 style="float: right;">';
echo $user['voornaam'] . ' ' . $user['achternaam'] . '</h2></div>';
echo '<div class="txt">';
echo $row['message'] . '</div><br>';
echo '</div>';
}
?>
25 keer word uitvoerd
want als er 25 berichten worden toegevoegt door mensen
die je vriend niet zijn zal er niks op je scherm komen te staan
Toevoeging op 30/01/2014 16:11:55:
ja de <font> ga ik vervangen maar de <h2> hoeft niet toch
dat is toch nog gewoon html5?
Met de query uit mijn vorige reactie heb je heel die controle niet meer nodig, dit gebeurt al in de query zelf. Je krijgt dan de 25 laatste berichten van personen waarmee je bevriend bent.
ja dit werkt hartelijk bedankt voor je goede hulp
Christian k op 30/01/2014 16:11:06:
Toevoeging op 30/01/2014 16:11:55:
ja de <font> ga ik vervangen maar de <h2> hoeft niet toch
dat is toch nog gewoon html5?
ja de <font> ga ik vervangen maar de <h2> hoeft niet toch
dat is toch nog gewoon html5?
De <h2> kan prima. Dit heeft niks met html5 te maken, maar is gewoon html. Het gaat om de inline style. Je gaat in de h2 een style="float:right" aanmaken, met daarom heen een div, en nog een div, en nog een div... Terwijl je met één van die omliggende div's ook die float:right aan de h2 kunt toekennen. Of als je alle h2's rechts wil is dit natuurlijk helemaal makkelijk. CSS en HTML houd je gescheiden.
er een probleem is met de sqlcode van Ger van Steenderen.
je kunt wel prima de berichten van je vrienden zien
maar als je zelf berichten post zie je ze zelf niet alleen je vrienden zien je bericht
en het is niet handig dat je je eigen bericht niet kan zien
weet iemand hoe ik het kan aanpassen?
dit is mijn sql 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$selectf = "SELECT
f.friend_id,
u.profielfoto,
u.voornaam,
u.achternaam,
m.time,
m.message
FROM
(SELECT
(CASE user_id
WHEN $user_id THEN friend_id
ELSE user_id END) AS friend_id
FROM
friends
WHERE status='vrienden' AND (friend_id = '$user_id' OR user_id = '$user_id')
) f
JOIN
users u ON f.friend_id = u.id
JOIN
status m ON f.friend_id = m.user_id
ORDER BY m.time DESC
LIMIT $limit";
f.friend_id,
u.profielfoto,
u.voornaam,
u.achternaam,
m.time,
m.message
FROM
(SELECT
(CASE user_id
WHEN $user_id THEN friend_id
ELSE user_id END) AS friend_id
FROM
friends
WHERE status='vrienden' AND (friend_id = '$user_id' OR user_id = '$user_id')
) f
JOIN
users u ON f.friend_id = u.id
JOIN
status m ON f.friend_id = m.user_id
ORDER BY m.time DESC
LIMIT $limit";
Maar wat jij wilt is vrij simpel, voeg de volgende regel toe tussen lijn 15 en 16:
Gewijzigd op 07/02/2014 20:54:37 door Ger van Steenderen
maar nu werkt het
hartelijk bedankt
(sorry dat ik dit probleem niet eerder zag ik had een week vakantie)