Gå til innhold

[LØST] Finnes den i tabellen?


Anbefalte innlegg

Skrevet (endret)

Si jeg har for eksempel skal finne ut om det allerede finnes et brukernavn i en tabell i databasen som har madompa som innhold, hvordan kan jeg gjøre det på en enkelst mulig måte? Jeg kan jo bruke løkker og sjekke alle radene "manuelt", eller jeg kan gjøre noe lignende

 

$finnes = false;

$resultat = @mysql_query("select brukernavn from brukere where brukernavn = 'madompa';", $tilkobling);

while ( $rad = @mysql_fetch_array($resultat) )
{
$finnes = true;
}

if ( $finnes == true )
{
osv.
}

 

men det må da finnes en enklere måte ?

 

På forhånd takk ^^

Endret av madompa
Videoannonse
Annonse
Gjest Slettet+142
Skrevet (endret)

$finnes = false;

$resultat = @mysql_query("select brukernavn from brukere where brukernavn = 'madompa';", $tilkobling);

if ( @mysql_num_rows($resultat) > 0 )
{
$finnes = true;
}

if ( $finnes == true )
{
osv.
}

 

denne skal virke?

 

ellers kan du bare lage brukernavn-feltet unikt :)

 

edit: du hadde en @ der ja.. :p

Endret av Slettet+142
Skrevet (endret)

Kan vel gjøre noe sånt:

<?php

$res = $db->query("SELECT * FROM tabell WHERE username = 'brukernavn'");
$finnes = ($res->num_rows > 0);
?>

Endret av PHPdude
Skrevet

$resultat = @mysql_query("select brukernavn from brukere where brukernavn = 'madompa';", $tilkobling);

 

if(mysql_num_rows($resultat) != 0) {

$finnes = true;

 

osvosv

 

}

else $finnes = false;

 

 

kanskje?

Gjest Slettet+142
Skrevet (endret)

man kan vel korte den enda mer.. men blir en lang linje da:

 

if( mysql_num_rows( ( $resultat = @mysql_query( "select brukernavn from brukere where brukernavn = 'madompa';", $tilkobling ) ) ) != 0){
  //osv.
}

 

hvis den over skaper feilmelding, virker kanskje denne bedre?

if( mysql_num_rows( @mysql_query( "select brukernavn from brukere where brukernavn = 'madompa';", $tilkobling )) != 0){
  //osv.
}

Endret av Slettet+142
Skrevet (endret)

Jøss, nå har fire brukere svart på det samme spørsmålet her... Vil tro at en er nok? Jaja, da har han hvertfall fått mye å velge i :p

 

Registrerer også at dere legger til @ foran mysql_* funksjoner, hvorfor? Blir jo bare tull å fjerne en og en eventuell feilmelding. Kjører man på localhost for å teste så ønsker man jo å se feilmeldinger for å finne feilen. Kjører man på en produksjons-server så tar man heller og skrur av all visning av feilmeldinger med "error_reporting(0);"

http://no2.php.net/manual/en/function.error-reporting.php

Endret av PHPdude
Gjest Slettet+142
Skrevet

mhm.. mye å ta i :innocent:

 

der sa du noe jeg aldri har tenkt på til serveren min.. error_reporting(0)..

takker :)

Skrevet

Så klart det er irriterende, men hvordan har du tenkt å løse det vis du ikke ser hva feilen er, eller at det er en feil i hele tatt? Feilmeldingene lages ikke for å pynte heller, de lages for å fortelle at noe er feil og må fikses.

Under utviklingen (på localhost) så bør man sette error_reporting(E_ALL | E_STRICT); så man ser alle feilene og kan luke dem ut med en gang. Mange småfeil her og der, blir et gigantisk problem en dag.

Skrevet (endret)
Så klart det er irriterende, men hvordan har du tenkt å løse det vis du ikke ser hva feilen er, eller at det er en feil i hele tatt? Feilmeldingene lages ikke for å pynte heller, de lages for å fortelle at noe er feil og må fikses.

Under utviklingen (på localhost) så bør man sette error_reporting(E_ALL | E_STRICT); så man ser alle feilene og kan luke dem ut med en gang. Mange småfeil her og der, blir et gigantisk problem en dag.

7806630[/snapback]

 

Ja, så klart. Men mener at når man vet, og når det er "meningen" for å få frem riktig resultat, at det skal skje en feil som i eksemplene tidligere i tråden, så er det jo greit å luke de ut ved å bruke @. Mener nå jeg.

 

Edit: Off-topic btw

Endret av madompa
Gjest Slettet+142
Skrevet

vel.. du har fått svaret du trengte sant? du har ikke sagt om det virket slik som du ville :p

 

men det som PHPdude sier er jo riktig. holder på å lage siden min på nytt for tredje gang på rad nå, og hver gang har jeg laget den på localhost.. når jeg har lagt den ut, popper det plutselig feilmeldinger på alt. enten inkluderes ikke en side, ellers så mengler det "plutselig" et tegn her og der =/

Skrevet (endret)
vel.. du har fått svaret du trengte sant? du har ikke sagt om det virket slik som du ville :p

7807093[/snapback]

Ja, det funket flott :D Som sagt; takk takk :D

 

men det som PHPdude sier er jo riktig. holder på å lage siden min på nytt for tredje gang på rad nå, og hver gang har jeg laget den på localhost.. når jeg har lagt den ut, popper det plutselig feilmeldinger på alt. enten inkluderes ikke en side, ellers så mengler det "plutselig" et tegn her og der =/

7807093[/snapback]

Ja, jeg er fortsatt enig, men som jeg har sagt så er ikke alltid @ dumt å bruke. Det er sikkert alltid måter å unngå det, men det kan jo ofte gå mye raskere hvis man bruker det. Ta fra eksemplene ovenfor;

 

if( mysql_num_rows( ( $resultat = @mysql_query( "select brukernavn from brukere where brukernavn = 'madompa';", $tilkobling ) ) ) != 0){
 //osv.
}

 

Hadde ikke det vært en @ foran mysql_query'en, ville det ha kommet en feilmelding hvis brukeren ikke fantes. Dette vet jeg, derfor kan jeg sette en @ foran, fordi det er meningen at spørringen ikke skal fungere hvis ikke brukeren finnes. Da er det bare irriterende med en feilmelding som popper opp.

 

Det er i slike tilfeller jeg mener @ kan brukes, ser ingen skade ved det? Men uansett, det var ikke det denne tråden handlet om, hvis noen vil lage en krøllalfa-tråd så får de gjøre det ;)

 

God natt

 

 

Edit: Skrivefeil en sen fredagskveld..

Endret av madompa
Skrevet
Ja, så klart. Men mener at når man vet, og når det er "meningen" for å få frem riktig resultat, at det skal skje en feil som i eksemplene tidligere i tråden, så er det jo greit å luke de ut ved å bruke @. Mener nå jeg.

7807030[/snapback]

 

Meningen å lage feil? Vis du koder på en måte som lager feil med vilje bør du virkelig tenke deg om igjen. I hvilke situasjoner skulle det være smart? Eksempler?

 

 

mariyo: Du for prøve å få det riktig den tredje gangen da! :p Vil tro at alle erfarne utviklere har vært gjennom det samme. Husker at jeg etter lang tids strev endelig begynte å bli "ferdig" med et prosjekt da jeg en uke etterpå fant ut at jeg trengte mer funksjonalitet og at koden var så dårlig strukturert at det bare var å begynne på nytt...

Etter at den samme historien gjentok seg så tok jeg to måneder pause hvor jeg fordypet meg i teori og studerte gode designvaner. Etterpå designet jeg prosjektet fra bånn av og har siden ikke hatt behov for særlig endring i grunnsystemet.

Min gyldne regel:

For hver time med teori, sparer man to timer med koding! :love:

Gjest Slettet+142
Skrevet

heh.. 14 år, lest én bok..

bør jeg lese flere?

 

jeg klarer absolutt ikke design og har ikke peiling på hva funksjonen av siden skal være, men har eget domene og server, så.. rart egentlig :p

Skrevet
Meningen å lage feil? Vis du koder på en måte som lager feil med vilje bør du virkelig tenke deg om igjen. I hvilke situasjoner skulle det være smart? Eksempler?

Nå mener jeg bare i spesifikke ting som jeg synes det er hensiktsmessig å la det kunne bli feil, slik at som kommer koden under ikke vil bli utført.

 

Hvis jeg f.eks. ikke skulle ha brukt @ i koden nedenfor, ville jeg ha fått en feilmelding hvis brukeren ikke fantes. Da er altså ikke eksemplene som jeg har fått ovenfor brukbare, siden de baserer seg på om spørringen kan utføres eller ikke; ergo vil vise en feilmelding hvis den ikke kan utføres. Rett meg hvis jeg har feil.

 

if( mysql_num_rows( @mysql_query( "select brukernavn from brukere where brukernavn = 'madompa';", $tilkobling )) != 0){
 //osv.
}

Skrevet

Nå vil koden i eksempelet ditt ikke egentlig lage noen feil da, bare vis du kjøre en eldgammel versjon av mysql, har vertfall ikke klart å produsere noen feil på min server.

 

Hadde også skrevet en forklaring på hvorfor det du skriver er feil og hvilke alternativer du har, men teksten forsvant og orker ikke skrive den igjen, nå vertfall.

Skrevet
Nå vil koden i eksempelet ditt ikke egentlig lage noen feil da, bare vis du kjøre en eldgammel versjon av mysql, har vertfall ikke klart å produsere noen feil på min server.

 

Hadde også skrevet en forklaring på hvorfor det du skriver er feil og hvilke alternativer du har, men teksten forsvant og orker ikke skrive den igjen, nå vertfall.

7850378[/snapback]

 

Mulig jeg da kjørte en gammel versjon, eller at det var noe annet som gjorde at jeg gjorde fikk feil den gangen jeg prøvde det første gangen. Ser at det funker nå. Men står fortsatt inne for at jeg synes at bruk av @ kan gå an. Selv om dere innlysende har mer innsikt enn meg på dette feltet.. Det viktigste er vel at det virker. Men gidder ikke henge meg opp i det nå, det var ikke det tråden var om, og jeg har fått svar på det jeg lurte på.

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...