hallo allemaal,
hoe kan ik aan dit script een limit toevoegen


<?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>';
     }
}
?>


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
Zie Mysql documentatie Select

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
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
Zoals als ik in je andere topic ook al heb aangegeven kan dit vrij simpel in één query.
Je gaat eerst bepalen wie de vrienden zijn:

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)

Dit zet je dan in een subquery (inline view), en dan ga je de andere tabellen eraan koppelen:

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

maar hoe kan ik dat verwerken in mijn phpscript dan?
als ik gewoon een limit 0, 25 toevoeg werkt het niet
mischien ben ik niet echt duidelijk geweest maar ik bedoel dat

<?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>';
     }
?>

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?

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.

sorry dat ik dit topic weer open maar ik ben erachter gekomen dat
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

$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";
Ik weet niet waarom je het niet handig vind om je eigen berichten niet te zien, maar een probleem is het niet (mijn motto is: er zijn geen problemen alleen maar uitdagingen):
Maar wat jij wilt is vrij simpel, voeg de volgende regel toe tussen lijn 15 en 16:

UNION SELECT $user_id

Reageren