Hoi PHPers 8-).
Ik heb een tijdje niks van me laten horen, dit omdat ik even ben wezen expirimenteren met PHP (zonder MySQL).

Ik ben nu echter bezig met iets, en heb een vraag:
Als je een registreersysteem hebt, hoe laat je dan de 3 nieuwste gebruikers zien?
Ik weet dat je de hoogste IDs nodig hebt (bijv. 5, 4 en 3) en dat het waarschijnlijk met de COUNT functie (DSC ofzo) moet doen.
Want hij moet de IDs van hoog naar laag tellen.
Maar als je dan gebruikt:

<?php
$sql = "
    SELECT COUNT(id) DSC id
    FROM gebruikers
";

if(!$res = mysql_query($sql))
{
    trigger_error(mysql_error().'<br />In query: '.$sql);
}
else
{
    $row = mysql_fetch_assoc($res);
    echo $row['naam'];
}
?> 


Wat moet ik doen dat de hoogste 3 IDs (5, 4, 3) worden weeergegeven?

Alvast bedankt,
Jeroen
MikeY schreef op 25.02.2008 14:38
ik doe altijd IP2LONG($_SERVER['.........

kan je altijd daarna makkelijk een range uitlezen
Dat heeft niks met het opslaan van een ip-adres te maken. Je gaat dan een getal opslaan, waarvan jij in je PHP-code beweert dat het een ip-adres is. In de database is het echter géén ip-adres!

Edit:
Jeroen schreef op 25.02.2008 14:41
@Frank Ik ben niet meer dat PostgreSQL doen..
Ik ben nu bezig met MySql.
En daar kent ie INET in.
En dat is dus weer een tekortkoming van MySQL, weer een reden om afscheid te nemen van deze verzameling bugs en andere ellende. Ga toch eens met een echte database werken, alles is beter dan MySQL.
waarom zou je het ip adres als ip adres opslaan en niet als integer ?
@Frank laat me gewoon ff,
dit is gewoon om te oefenen :S
Btw; Dat PostgreSQL is lekker duidelijk als j ut probeert te downloade ofzo -.-''
MikeY schreef op 25.02.2008 14:44
waarom zou je het ip adres als ip adres opslaan en niet als integer ?
Omdat een ip-adres geen integer is. Daarnaast kun je met een ip-adres ook vergelijkingen op netwerk doen, zie bv. de functie network(). Dit werkt zowel voor IPv4 als IPv6, in tegenstelling tot ip2long() die uitsluitend met IPv4 uit de voeten kan.

MySQL heeft een paar ip-functies, maar die kunnen (bij mijn weten) evenmin met IPv6 uit de voeten en kennen nog wel meer beperkingen.
IP-adress zijn tog gewoon een paar cijfertjes die de database meot opslaan (met de . ertussen) en vervolgens weer moet late zien?
Jeroen :
Les 1 : Ga nooit maar dan ook nooit met frank in discussie. Of jou nou gelijk hebt of niet (wat ik in dit geval laat ik dat in het middel) frank zal het toch nooit toegeven :P
Jeroen schreef op 25.02.2008 14:57
IP-adress zijn tog gewoon een paar cijfertjes die de database meot opslaan (met de . ertussen) en vervolgens weer moet late zien?
Nee, dat is het niet, zie Wikipedia voor een goede uitleg.
@Jacco bedankt voor de tip, zal um nadat ik dit ding heb gepost in gebruik zetten ^^

@Frank
Ja, gewoon wat cijfertjes met een . ertussen wat 'het getal van je computer' als het waren is. Gewoon opslaan in de database als wat en weer op de site weergeven.

Bumpen:


Ook al excuseer jij je, regels zijn regels en zover ik het natuurlijk kan bijhouden (kan niet alles in de gaten houden) heeft niemand, zelfs ik niet
privileges om de regels te buigen voor welke reden dan ook.

Dus :

Twee of meer keer achter elkaar in een topic posten heet bumpen. Bumpen is pas na 24 uur toegestaan en kan een reden zijn voor de admins en moderators om een topic te sluiten. Gebruik indien nodig de knop om je tekst aan te passen.



Sorry voor het bumpen maar dit is omdat ik anders een nieuw topic moet aanmaken en deze stond er nog tussen dus kon ik net zo goed deze gebruiken!
Hoi mensen :D
Ik heb advice van Jacco opgevolgd en ben nu bezig met gastenboek,
dit heb ik nu:

<html>
<head>
<title>Gastenboek</title>
</head>
<body>
<center>
Welkom bij mijn Gastenboek!
<hr>
[code]<?php
error_reporting(E_ALL);

if (isset($_POST['verzonden'])) { 				// afhandelen

        $fouten = array(); // fouten opslaan in een array

if (!isset($_POST['naam']) OR empty($_POST['naam'])) {		// naam valideren
		$fouten[] = 'naam';
		}

if (!eregi('^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})
$', $_POST['email'])) {					// email valideren
		$fouten[] = 'email';
}

if (!isset($_POST['bericht']) OR empty($_POST['bericht'])) {	// bericht valideren
		$fouten[] = 'bericht';
}

if (empty($fouten)) { 						// dus als de array met de fouten leeg is
								// willen we dat graag POSITIEF laten weten
			echo "Bericht verzonden!<br>Klik hier om terug te gaan";
} else { 							// en als het niet gelukt is willen we dat ook laten weten!
			echo "Er zijn problemen gevonden voor de volgende velden:<ul>";

			foreach ($fouten as $fout) {
			echo "<li>$fout</li>\n";
}
			echo "</ul>";
}

} 								// einde van afhandeling
?>
<table>
<form method="post">
<tr><td>Naam:</td><td><input type="text" name="naam"></td></tr>
<tr><td>E-mail:</td><td><input type="text" name="email"></td></tr>
<tr><td>Bericht:</td><td><input type="text" width="50" rows="10" name="bericht"></td></tr>
<tr><td><center><input type="submit" name="verzenden"><input type="reset" name="reset"></center></td></tr>
</form>
</table>
<hr>
<small>Je IP-adress word ook weergegeven bij je bericht!</small>
</center>
</body>
</html>
[/code]

Geen errors, nagekeken met WAMP en Ecplise.
Alleen als ik iets fouts in tik, gebeurt er niks,
en ook als ik iets goeds in tik gebeurt er niks.

Komt dit omdat het nog niet word opgeslagen in de database, of omdat er geen andere pagina aanvast zit, of omdat er gewoon een fout inzit?
<form method="post">
Nu nog je action formulier :p

Reageren