Avatar billede webson Nybegynder
26. juni 2004 - 22:36 Der er 21 kommentarer og
2 løsninger

1=easy 2=medium 3=hard

--------------spørgsmål--------------------

Hvis ['difficulty'] = 1 så output 'easy'

Hvis ['difficulty'] = 2 så output 'medium'

Hvis ['difficulty'] = 3 så output 'hard'

-------------------------------------------

koden ser sådan ud --->

<?php
$query = mysql_query("SELECT difficulty, id FROM users ORDER BY id DESC limit 10") or die(mysql_error());
$i=0;
while($controlrow = mysql_fetch_array($query)) {
  if( ($i%2)==0 )
  print '<tr bgcolor="#ffffff">';
else
  print '<tr bgcolor="#dddddd">';
  print '<td>'.$myrow['difficulty'].'</td>';
  print '<td>'.$myrow['id'].'</td>';
  print "<tr>\n";
$i++;

}
?>
Avatar billede webcreator Nybegynder
26. juni 2004 - 22:37 #1
Hvad er spørgsmålet ?
Avatar billede webson Nybegynder
26. juni 2004 - 22:37 #2
hovsa, den her er den rigtige kode (:

<?php
$query = mysql_query("SELECT difficulty, id FROM users ORDER BY id DESC limit 10") or die(mysql_error());
$i=0;
while($controlrow = mysql_fetch_array($query)) {
  if( ($i%2)==0 )
  print '<tr bgcolor="#ffffff">';
else
  print '<tr bgcolor="#dddddd">';
  print '<td>'.$controlrow['difficulty'].'</td>';
  print '<td>'.$controlrow['id'].'</td>';
  print "<tr>\n";
$i++;

}
?>
Avatar billede webson Nybegynder
26. juni 2004 - 22:38 #3
det output jeg får er bare 1, 2, 3 istedetfor easy, medium, hard
Avatar billede nicklasb Nybegynder
26. juni 2004 - 22:41 #4
<?php
$array = ('', 'easy', 'medium', 'hard');
$query = mysql_query("SELECT difficulty, id FROM users ORDER BY id DESC limit 10") or die(mysql_error());
$i=0;
while($controlrow = mysql_fetch_array($query)) {
  if( ($i%2)==0 )
  print '<tr bgcolor="#ffffff">';
else
  print '<tr bgcolor="#dddddd">';
  print '<td>'.$array[$controlrow['difficulty']].'</td>';
  print '<td>'.$controlrow['id'].'</td>';
  print "<tr>\n";
$i++;

}
?>
Avatar billede retep Nybegynder
26. juni 2004 - 22:41 #5
i stedet for
print '<td>'.$myrow['difficulty'].'</td>';
så
if ($myrow['difficulty'] == 1) {
print '<td> easy </td>';

} elseif ($myrow['difficulty'] == 2) {
print '<td> medium</td>';

} elseif ($myrow['difficulty'] == 3){
print '<td> hard </td>';

}
Avatar billede nicklasb Nybegynder
26. juni 2004 - 22:45 #6
synes nu at løsningen med et array ville være langt lettere når resultatet er SÅ styret som det er i hans tilfælde.. Men ja, kan vel også løses med en masse if-sætninger.
Hvis det enelig er at du VIL lave noget tjek, kunne du tjekke om posten endelig fandes i array'et med is_in.. men hvis du allerede har valideret det der ligger i databasen en gang (hvad det ser ud til hvis du ikke skal validere dit resultat yderligere end det du har gjort i koden ovenfor), er det vist heller ikke strengt nødvendigt!
Men havde nu nok alligevel lige kontrolleret om der nu også VAR poster i dit udtræk.. men kan jo blot være en test-kode.. hvad ved jeg.. jeg sidder bare og spammer.. ;)
Avatar billede webcreator Nybegynder
26. juni 2004 - 22:46 #7
Smartere med en Switch.

switch ($query["difficulty"]) {
  case 1:
    $out = "Easy";
    break;
  case 2:
    $out = "Medium";
    break;
  case 3:
    $out = "Hard";
    break;
}

echo $out;
Avatar billede nicklasb Nybegynder
26. juni 2004 - 22:50 #8
hmm... vel en smagssag. Ser INTET smart i at bruge en switch.. så er if'erne da lige så gode?
Hvorfor ikke bare et simpelt array? hvis det er den tomme plads der virker "forkert" at placere i en kode, kan den første record jo bare registreres med array(1 => 'easy ... osv..
men gør da ikke noget med den tomme, hvis den alligevel ikke bruges ?
Avatar billede webson Nybegynder
26. juni 2004 - 22:53 #9
begge forslag virker efter hensigten, i må dele :P
Avatar billede webson Nybegynder
26. juni 2004 - 22:54 #10
nicklasb, ja du spammer (:
Avatar billede webcreator Nybegynder
26. juni 2004 - 22:56 #11
Tak for points.

Switchen og IF'erne virker på samme måde - jeg anser bare mindst mulig kode for den bedste løsning.
Avatar billede nicklasb Nybegynder
26. juni 2004 - 22:58 #12
hahaha.. er det mindre kode end mit eksempel må du gerne kalde mig knud! knud med den lange tud!! haha.. lad være at komme med sådanne påstande i tilfælde hvor det er SÅ let at finde det rigtige resultat. Det er jo blot at tælle tegn.. ;)
haha.. :)
Avatar billede webcreator Nybegynder
26. juni 2004 - 23:01 #13
Ja, netop - hver bit tæller når det kommer til optimering. Det er muligt at du kan finde en bedre metode end min - så vis os et eksempel på dette. Bryder mig ærligt talt ikke om din hoverende og selvophøjede attitude.
Avatar billede nicklasb Nybegynder
26. juni 2004 - 23:07 #14
hvad snakker du om med hoverende og selvophøjede attitude? kom med et langt kortere og lettere eksempel langt tid før dig! tror blot du skal læse spørgsmålet engang igennem før du dømmer! :)
Avatar billede nicklasb Nybegynder
26. juni 2004 - 23:09 #15
dog er der lige en fejl.. men er blevet rettet lige efter dit svar.. mangler lige 'array' foran paranteserne.. så der står:

$array = array('', 'easy', 'medium', 'hard');
Avatar billede webcreator Nybegynder
26. juni 2004 - 23:14 #16
"lang tid før" - nej..
Når jeg siger et eksempel, så mener jeg et eksempel - ikke en beskrivelse af hvordan det kan løses.. Dette bliver mit sidste indlæg..
Avatar billede nicklasb Nybegynder
26. juni 2004 - 23:16 #17
ehhhh... regner med at du HAR læst det igennem nu, hvad de jo øjensynligt ikke havde sidst jeg kommenterede?
du HAR godt set min kommentar 26/06-2004 22:41:51 ikk? eller er der noget galt med eksperten.. for den bliver da vist her!!
Avatar billede webcreator Nybegynder
26. juni 2004 - 23:18 #18
Jo, det beklager jeg - den havde jeg overset - så må du undskylde. Men jeg bryder mig stadig ikke om din attitude.
Avatar billede nicklasb Nybegynder
26. juni 2004 - 23:20 #19
hmm... må du selv om.. men hvis du læser spørgsmålet kommer det vel i en meget god sammenhæng? eller er jeg stadig langt ude? for så må du da undskylde..
men lig mærke til at jeg lagde et svar hvorefter du kommer med en langt mere besværlig metode, og efterfølgende skriver at du fortrækker optimerede og lette koder.. virkede YDERST underligt på mig!! sorry hvis jeg fik svaret forkert, men lød sgu lidt ironisk fra din side!!
Avatar billede webcreator Nybegynder
26. juni 2004 - 23:31 #20
Heh, det kan jeg selvfølgelig godt se - men jeg synes i hvertfald at min kode virker nemmere at overskue - men jeg er heller ikke så hård til PHP. Nevertheless, så slår en switch aldrig fejl :)
Avatar billede nicklasb Nybegynder
26. juni 2004 - 23:40 #21
hmm.. godt ord igen så :) virkede bare som en imition af Amin Jensen eller lignende, men bundede jo så blot i en enkelt fejl.. ;)

og nej, ser stadig ingen fordele ved en switch. Der ser jeg en if lige så brugbar, mindst! (Switchen vil dog nok som nybegynder fremstå mere enkelt idet kendte begræber som default og case bruges rette steds).
Men i et tilfælde som det spørger i denne situation tilspørger, hvor resultaterne allerede før ER valideret og bestemt ud fra et forudbestemt id er et arrays absoulut det letteste og mest enkle!

Jeg havde dog nok oprettet endnu en tabel i databasen hvori statusene var oprettet med unikt ide, og idet herefter hevet ud ved en JOIN i databasekaldet. Dette for ikke efterfølgende at behøve at opdatere i koden ved sprogskift, rettelse af stavefejl, tilføjelse af nye stati etc. etc.

men ja, en switch er også en mulighed, om ikke andet så i hvert falde en alternativ mulighed i netop denne situation, hvis jeg skulle bedømme!
Avatar billede nicklasb Nybegynder
26. juni 2004 - 23:42 #22
og stavefejlene er gratis på denne tid af døgnet. "glemmer" vist at læse igennem hvad jeg skriver.. ;)
Avatar billede webcreator Nybegynder
26. juni 2004 - 23:42 #23
Hehe, kender jeg kun alt for godt :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester