Gå til innhold

Anbefalte innlegg

Jeg ønsker meg en setning på siden min som sier "Vi har nå (id_1) medlemmer. Siste medlem var (navn_1)". Jeg vil altså ha nyeste verdien av id_1 og navn_1 fra tabell_1.

 

Jeg er ganske grønn på å skrive mysql-script, så jeg håper noen her kan hjelpe meg i gang!

Endret av TaklampeX
Lenke til kommentar
Videoannonse
Annonse

Det er ikkje noko problem slik eg ser det..

Berre legg inn ei spørring som teller radene, og ta den høgaste verdien og print ut. Mange måter å gjere dette på sikkert, men eg hadde berre tatt ei spørring som printer ut ID fra høgast til lavast, for så å leggje til LIMIT 1 (berre eit resultat - det blir då den høgaste ID'en, altså siste medlem).

Noko slik:

 


$result = mysql_query("SELECT * FROM tabellnamn ORDER BY id DESC LIMIT 1"); // Desc gjer sorteringa feil veg. Altså nyaste til første.
$antallbrukare = mysql_num_rows($result); //Berre skriv ut denne for antall brukare.

while($row = mysql_fetch_array($result))
 {
 $sistebrukar = $row['brukarnamn'];
 }

echo "Me har no $antallbrukare medlemmer. Siste medlem var $sistebrukar";

Lenke til kommentar

KONGE! Tusen takk! Viste det ikke var så mye som skulle til, men jeg klarer ikke skrive script fra bånn... Om jeg derimot får noe å starte med klarer jeg som regel å prøve og feile til det funker. $antallbrukare ga meg bare 1, sikkert fordi den teller etter limit 1. La til en $sistebrukarid = $row['id_1']; og det funka.

 

Igjen, takk!

Lenke til kommentar

Berre hyggeleg du, kjekt å høyre at det fungerte! Mogleg det var ein feil der ja, eg prøvde det ikkje ut - berre skreiv slik eg tenkte det kunne vere enklast!

Ikkje så vanskeleg å gjere slike elementære ting egentleg, berre ein tenkjer seg litt om. Sleit og litt med å skrive desse før, men har arbeida mykje med å berre hugse alt i hovudet. Kan vere greitt og nytte dømene på W3Schhols om ein gløymer noko. :)

Lenke til kommentar

En primærnøkkel er ingen garanti for riktig rekkefølge i henhold til når en bruker ble registrert. Du vil sannsynligvis en gang allikevel vise når en bruker registrerte seg, så sorter heller etter en slik verdi. Til slutt spør jeg, steffenz og mange andre, hvorfor bruke while-løkker til å hente ut én rad?

Lenke til kommentar

Joda, du har eit poeng der. Eg tenkte ikkje så langt. Eit tidsstempel er sikkert betre å sortere etter..

Grunnen til at eg nytter while er berre fordi det er god praksis. Eg nytter alltid while, og det blir sjeldent berre ein ting eg henter ut. Derfor liker eg å berre nytte while slik at eg kan hente ut fleire ting. Eg har vanskeleg for å tro at stjel så mykje meir ressurser, sjølv om det er litt meir arbeid for meg å skrive.

Lenke til kommentar

Wow, wow, wow. Hold on there, slick. God praksis? Jeg tror du trenger en liten lekse i hva god praksis egentlig betyr. En while-løkke signaliserer til en leser at det forventes eller at det i hvert fall finnes et potensiale for flere iterasjoner. For det første så finnes ikke dette, fordi SQLen er begrenset til én rad og for det andre så overskrives forrige verdier satt i eventuelle tidligere iterasjoner. Dette er ulogisk og forvirrende. På hvilken måte er det god praksis?

Endret av Jonas
Lenke til kommentar

For meg, fordi eg somregel kjem til å skrive ut fleire ting på sikt, og derfor lager eg berre ei while løkke så eg har den klar.

Om det er god praksis eller ei er jo opp til kvar enkelt å bestemme. Eg har min måte, du har din. Eg er ikkje verdensmester i dette, men eg får ting til å fungere. Det er nok for meg. Kva som til ein kvar tid er heilt korrekt bryr eg meg ikkje så mykje om, berre det er sikkert nok.

Lenke til kommentar

Hele innlegget ditt fremstår for meg bare som en gigantisk rasjonalisering av et tåpelig kode. Jeg har sett denne typen bruk av while-løkker så utrolig mange ganger her på forumet og det er virkelig bare amatørmessige. Dette har ingen verdens ingen ting om subjektiv mening å gjøre, det er simpelthen bare feil. Skal du hente du én rad, så skal det ikke forekomme noen løkke. Riktig måte følger.

 

For meg, fordi eg somregel kjem til å skrive ut fleire ting på sikt, og derfor lager eg berre ei while løkke så eg har den klar.

Koden kommer aldri til å iterere over noe annet enn én rad. Ikke en gang på "sikt".

 

Om det er god praksis eller ei er jo opp til kvar enkelt å bestemme.

God praksis i kodemiljøet er på ingen måte noe som bestemmes av hver enkelt. Det finnes klare regler og konvensjoner og eventuelle uenigheter er blant disse. Lest f.eks. agile manifesto? Selv et søk etter «programmering guidelines» på google gir deg treff som sier mer eller mindre akkurat det samme.

 

Eg har min måte, du har din. Eg er ikkje verdensmester i dette, men eg får ting til å fungere. Det er nok for meg. Kva som til ein kvar tid er heilt korrekt bryr eg meg ikkje så mykje om, berre det er sikkert nok.

Du påstår først at du praktiserer god kode, for så å innrømme at du ikke er verdensmester og at det at det fungerer er godt nok for deg, og at resten ikke betyr noe så lenge det er sikkert. Noe henger ikke helt på grep her.

 

<?php
   $resource = mysql_query ( 'SELECT username FROM users ORDER BY time_registered DESC LIMIT 1' );
   $last_user = mysql_fetch_assoc ( $resource );
   echo "Nyeste medlem er {$last_user['username']}";
?>

Skal ellers nevnes at jeg definitivt ville opprettet modell-objekter og abstrahert bort hele prosessen med å finne siste registrerte bruker til et factory lag, men jeg tror ikke trådstarter er helt der ennå.

Endret av Jonas
Lenke til kommentar

$result = mysql_query("SELECT * FROM tabellnamn ORDER BY <felt> DESC LIMIT 1"); 
$antallbrukare = mysql_num_rows($result); //Berre skriv ut denne for antall brukare.

Siden det er brukt LIMIT 1 så vil $antallbrukere alltid være 1.

 

Dette vil nok fungere mer som tiltenkt, men er kanskje ikke den mest effektive måten å gjøre det på.

$result = mysql_query("SELECT * FROM tabellnamn ORDER BY <felt> DESC"); 
$antallbrukare = mysql_num_rows($result); 

$bruker= mysql_fetch_assoc($result);
echo 'Siste medlem '.$bruker['felt_med_brukers_navn'];

Lenke til kommentar

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...