|
|
|
Jeg kunne godt tænke mig at når brugere prøver at oprette en profil, at der bliver tjekket om der allerede findes det brugernavn som de ønsker...
|
|
|
Dato : 11.04.2006, 20:09 |
Visninger : 1899 |
Points : 20 |
|
|
$query = "select * from bruger where username='$username' and password='$password'";
$result2=mysql_fetch_array($result);
if($result2)
{
echo '<span> din bruger er nu opretede';
}
else
{
print "fejl brugeren findes allerede";
|
|
|
Dato : 12.04.2006, 14:32 |
Kommentar af : david |
|
|
$que = mysql_query("select * from brugere where navn='$_POST[navn]'");
$antal = mysql_num_rows("$que");
if($antal > 0){
echo "Brugeren findes allerede";
} else {
\resten af dit script
}
|
|
|
|
|
Hmmm ved brug af Dj mini bævers forslag skriver den flg.:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource
|
|
|
Dato : 17.04.2006, 16:11 |
skrevet af : Gæst |
|
|
Mig der lige var gæst... glemte at logge på (:
|
|
|
|
|
Problemet er løst... havde glemt to '' i mit query...
|
|
|
|
|
Tak for hjælpen DJ mini bæver... (:
|
|
|
|
|
DJ´s script vist her nedenunder indeholder 2 performance fejl.
<?
$que = mysql_query("select * from brugere where navn='$_POST[navn]'");
$antal = mysql_num_rows("$que");
if($antal > 0){
echo "Brugeren findes allerede";
} else {
\resten af dit script
}
?>
Fejl 1:
I stedet for at bruge * skal man så vidt mulig altid skrive de felter man ønsker at hente ned, i dette eksempel skal man faktisk ikke hente nogen felter ned derfor er det forkert at bruge *. (Løsningen kommer i fejl 2)
Fejl 2.
I stedet for at bruge mysql_num_rows er det langt bedre at bruge sql til at finde ud af om der findes andre brugere. I sql kan du bruge count(). Dette er også løsningen til fejl 1, se koden herunder der ville være den bedste.
<?
$que = mysql_query("select count(id) as antal from brugere where navn='$_POST[navn]'"); //id er en kolonne i tabellen, det er altid bedst at bruge den kolonne man har valgt som primary
$rs = mysql_fetch_assoc($que);
if($rs["antal"] > 0){
echo "Brugeren findes allerede";
} else {
\resten af dit script
}
?>
Den afgørende forskel mellem mit script og DJ´s er at mit ikke henter nogen felter ned fra databasen, mens DJ´s henter alle felter ned der i tabellen, for så derefter at tælle antal rækker.
Det svarer lidt til at man rejser til usa for at tælle alle amerikanerer, men i stedet for at tælle dem i usa, tager man alle amerikanerne sammen med alle deres egendele med hjem til Danmark for så først at tælle dem i Danmark.
|
|
|
Dato : 17.04.2006, 20:31 |
skrevet af : Gæst |
|
|
Efter lige at have tænkt lidt nærmere, vil det aldrig betyde den store forskel om man bruger mysql_num_rows() eller om man bruger sql funktionen count i dette eksempel. Da det samlede antal rækker der bliver hentet ned da ingen kan hedde det samme.
|
|
|
Dato : 17.04.2006, 20:35 |
skrevet af : Gæst |
|
|
Hmmm... dj bæver har skrevet indlægget som kommentar så kan desværre ikke give ham pointene medmindre han lige vil poste et svar ;)
|
|
|
|
Login for at skrive et indlæg :
|