Leden zoeksysteem
Beste,
Voor mijn site ben ik bezig om een leden zoeksysteem te maken.
Nu heb ik dus het volgende scriptje geschreven:
Dit werkt hartstikke goed, maar nu leek het me handig om in de 2e kolom (username) een hyperlink te maken naar settings.php?u=<--!Hier dan de username waar net op is geklikt !-->
Hoe kan ik dit doen?
Groetjes,
Tim
Voor mijn site ben ik bezig om een leden zoeksysteem te maken.
Nu heb ik dus het volgende scriptje geschreven:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<html>
<form method=post action=>
Fill in a username: <input type=text name=userzoek><br>
<input type=submit name=submit value=Search><br>
</html>
<?php
if(isset($_POST['submit'])){
echo "<BR><BR><B>Geregistreerde leden:</B><BR><BR>";
ECHO "<TABLE border=\"1\"><TR><TD><B>ID </b></TD><TD><B>Username</b></TD><TD><b>First name</b></TD><TD><B>Email</b></TD><TD><B>Level</b></TD><TD><B>Rank </b></TD><TD><B>Registration date </b><TD><B>IP</b></TD></TD></TR>";
$query = mysql_query("SELECT id,username,fname,email,level,rank, datum,ip FROM leden WHERE username LIKE '%".mysql_real_escape_string($_POST['userzoek'])."%' ");
for($teller=0;$teller<mysql_num_rows($query);$teller++) {
$leerling = mysql_fetch_row($query);
echo "<TR><TD>$leerling[0] </TD><TD>$leerling[1] </TD><TD>$leerling[2] </TD><TD>$leerling[3] </TD><TD>$leerling[4] </TD><TD>$leerling[5] </TD><TD>$leerling[6] </TD><TD>$leerling[7] </TD></TR>";
}
ECHO "</TABLE>";
}
?>
<form method=post action=>
Fill in a username: <input type=text name=userzoek><br>
<input type=submit name=submit value=Search><br>
</html>
<?php
if(isset($_POST['submit'])){
echo "<BR><BR><B>Geregistreerde leden:</B><BR><BR>";
ECHO "<TABLE border=\"1\"><TR><TD><B>ID </b></TD><TD><B>Username</b></TD><TD><b>First name</b></TD><TD><B>Email</b></TD><TD><B>Level</b></TD><TD><B>Rank </b></TD><TD><B>Registration date </b><TD><B>IP</b></TD></TD></TR>";
$query = mysql_query("SELECT id,username,fname,email,level,rank, datum,ip FROM leden WHERE username LIKE '%".mysql_real_escape_string($_POST['userzoek'])."%' ");
for($teller=0;$teller<mysql_num_rows($query);$teller++) {
$leerling = mysql_fetch_row($query);
echo "<TR><TD>$leerling[0] </TD><TD>$leerling[1] </TD><TD>$leerling[2] </TD><TD>$leerling[3] </TD><TD>$leerling[4] </TD><TD>$leerling[5] </TD><TD>$leerling[6] </TD><TD>$leerling[7] </TD></TR>";
}
ECHO "</TABLE>";
}
?>
Dit werkt hartstikke goed, maar nu leek het me handig om in de 2e kolom (username) een hyperlink te maken naar settings.php?u=<--!Hier dan de username waar net op is geklikt !-->
Hoe kan ik dit doen?
Groetjes,
Tim
Even een paar tips:
- Gebruik de tab-toets om je if'jes, while's en foreach()'s eens in te springen. Dat maakt het beter leesbaarder
- Zorg voor goede foutafhandeling op je query's
- Houd je variabelen buiten quotes.
- Waarom gebruik je een for-loop, i.p.v. een while($row = mysql_fetch_assoc($queryresult))?
- Gebruik om te controleren of iets verstuurd is: if($_SERVER['REQUEST_METHOD']=='POST') {, dat is een stuk veiliger, en je wilt namelijk weten of een formulier verstuurd is via POST, i.p.v. te weten of er op een knop geklikt is.
Ik hoop dat je geen verouderde tutorial hebt gebruikt hiervoor. Als je mijn tips toepast, en met name de variabelen buiten quotes, dan zou je wel een link moeten toevoegen met minder moeite.
- Gebruik de tab-toets om je if'jes, while's en foreach()'s eens in te springen. Dat maakt het beter leesbaarder
- Zorg voor goede foutafhandeling op je query's
- Houd je variabelen buiten quotes.
- Waarom gebruik je een for-loop, i.p.v. een while($row = mysql_fetch_assoc($queryresult))?
- Gebruik om te controleren of iets verstuurd is: if($_SERVER['REQUEST_METHOD']=='POST') {, dat is een stuk veiliger, en je wilt namelijk weten of een formulier verstuurd is via POST, i.p.v. te weten of er op een knop geklikt is.
Ik hoop dat je geen verouderde tutorial hebt gebruikt hiervoor. Als je mijn tips toepast, en met name de variabelen buiten quotes, dan zou je wel een link moeten toevoegen met minder moeite.
Gewijzigd op 08/04/2014 09:58:57 door - Ariën -
Heb het zelf opgelost!
dit heb ik toegepast in het veld waar normaal de gebruikersnaam kwam te staat:
<a href=$leerling[1]>$leerling[1]</a>
Alles werkt nu.
dit heb ik toegepast in het veld waar normaal de gebruikersnaam kwam te staat:
<a href=$leerling[1]>$leerling[1]</a>
Alles werkt nu.
Dat het werkt wil niet zeggen dat het ook goed is.
In HTML gebruik je nog altijd dubbele quotes.
Door je echo te beginnen met enkele quotes hoef je de dubbele quotes niet te escapen.
Door je variabelen buiten de quotes te plaatsen is het overzichtelijker.
MySQL functies gaan met pensioen. Kijk eens naar MySQLi of PDO.
Door alles op één regel te zetten is het onoverzichtelijk en rommelig.
<table> buiten </html> kan niet.
isset($_POST['submit']) is geen controle.
etc. etc. etc.
Als je deze en de tips van Aar nou eens zou opvolgen ben je al een stuk beter op weg.
In HTML gebruik je nog altijd dubbele quotes.
Door je echo te beginnen met enkele quotes hoef je de dubbele quotes niet te escapen.
Door je variabelen buiten de quotes te plaatsen is het overzichtelijker.
MySQL functies gaan met pensioen. Kijk eens naar MySQLi of PDO.
Door alles op één regel te zetten is het onoverzichtelijk en rommelig.
<table> buiten </html> kan niet.
isset($_POST['submit']) is geen controle.
etc. etc. etc.
Als je deze en de tips van Aar nou eens zou opvolgen ben je al een stuk beter op weg.
kijk eens naar het verschil tussen mysql_fetch_row en mysql_fetch_assoc:
http://php.net/mysql-fetch-row en http://php.net/mysql-fetch-assoc
Met 0 en 1 is het nog wel te overzien, en met 3 of 4 kolommen met een beetje puzzelen ook wel.
Zelf heb ik moeten werken met query's waar over de 30 kolommen (met sowieso al cryptische namen als wflatt).
Dan zit je je suf te tellen op "is kolom 21 nu dit of dat?"
$row['username'] werkt zo veel duidelijker dan $row[1]
En blijft bovendien werken als je je query aanpast door een extra kolom toe te voegen. (nog als van de fantastische combinatie van SELECT * en mysql_fetch_row natuurlijk. maar dat gebruik jij gelukkig niet)
http://php.net/mysql-fetch-row en http://php.net/mysql-fetch-assoc
Met 0 en 1 is het nog wel te overzien, en met 3 of 4 kolommen met een beetje puzzelen ook wel.
Zelf heb ik moeten werken met query's waar over de 30 kolommen (met sowieso al cryptische namen als wflatt).
Dan zit je je suf te tellen op "is kolom 21 nu dit of dat?"
$row['username'] werkt zo veel duidelijker dan $row[1]
En blijft bovendien werken als je je query aanpast door een extra kolom toe te voegen. (nog als van de fantastische combinatie van SELECT * en mysql_fetch_row natuurlijk. maar dat gebruik jij gelukkig niet)




