Avatar billede frustrator Nybegynder
14. december 2003 - 13:10 Der er 6 kommentarer og
1 løsning

Henter fejlagtigt sidste MySQL indlæg

Hey Eksperter - gør jer klar til en lidt længere smøre!

Jeg har en MySQL tabel med kolonnerne LyricID, Artist, Forfattere, Sangtekst og Keywords. På Side 1 (fordelt alfabetisk) henter jeg LyricID, Artist og Sangtekst ud med følgende:

          <?
mysql_connect ("min_host", "min_db", "mit_pass") or die(mysql_error());
mysql_select_db ("min_db") or die(mysql_error());

$sqlquery = "SELECT LyricID, Artist, Titel FROM 80er_lyrics WHERE Artist LIKE '$letter' ORDER BY Artist asc";
$result = mysql_query($sqlquery);

echo "<table align=center border=0 width=610>";
while($row = mysql_fetch_array($result)) {
extract($row);
echo "<tr><td width=195 valign=top><p>$Artist</p></td><td valign=top><p><a href='http://url/til/side2.php?LyricID=$row[LyricID]'>$Titel</p></a></td>\n";
echo "</tr>\n";
}

echo "</table>";
?>
          <? 
mysql_free_result($result);
mysql_close();
?>

Dette giver så en oversigt, hvor man kan klikke på Sangtekst og blive sendt videre til Side 2, hvor pågældende sangtekst vises. Denne side indeholder følgende:

  <?
mysql_connect("min_host","min_db","mit_pass");
mysql_select_db("min_db");
$query = mysql_query("SELECT * FROM 80er_lyrics");
while($r = mysql_fetch_array($query)) {
$Artist = $r["Artist"];
$Titel = $r["Titel"];
$Forfattere = $r["Forfattere"];
$Sangtekst = $r["Sangtekst"];
?>

Alt dette fungerer fint nok - den alfabetiske oversigt er i orden med de rette LyricID-links, og den sidste side viser også alle info rigtigt nok... lige bortset fra at siden kategorisk ALTID viser det seneste indlæg i tabellen (altså altid det med højeste LyricID). Dvs. klikker jeg på et link med LyricID=7, så viser side 2 ALTID den række i tabellen, der har den højeste LyricID (f.eks. 37). Og det på trods af, at linket fra Side 1 indeholder det RETTE LyricID i variablen.

Nogen der har en anelse hvad problemet kan være?
Avatar billede eagleeye Praktikant
14. december 2003 - 13:18 #1
Du skal prøve at tilføje en WHERE til din SQL som hedter på side2, sådan den hendter den post hvor lyricsID er lig den ID du overføre til siden:

$query = mysql_query("SELECT * FROM 80er_lyrics where LyricID='$LyricID'");
Avatar billede frustrator Nybegynder
14. december 2003 - 13:19 #2
Never mind, folkens... problemet er løst

Var en lille tanketorsk, hvor jeg havde glemt at medtage følgende på Side 2:

WHERE id = '$id'

Sorry ' bout that :o)
Avatar billede detox Nybegynder
14. december 2003 - 13:20 #3
Side skal nok være i den her stil:

<?
if (isset($_GET['LyricID'])) {
  mysql_connect("min_host","min_db","mit_pass");
  mysql_select_db("min_db");
  $query = mysql_query("SELECT * FROM 80er_lyrics WHERE LyricID='".$_GET['LyricID']."'");
  $r = mysql_fetch_array($query);
  $Artist = $r["Artist"];
  $Titel = $r["Titel"];
  $Forfattere = $r["Forfattere"];
  $Sangtekst = $r["Sangtekst"];
}
?>
Avatar billede detox Nybegynder
14. december 2003 - 13:23 #4
Ja, og så skal du ikke bruge en while løkke, når der kun er et resultat ;o)
Avatar billede frustrator Nybegynder
14. december 2003 - 13:25 #5
Eagle Eye >> På trods af at det var en simpel og dum fejl, jeg selv fik løst, så kan du da godt få tildelt pointene, eftersom du var hurtigt ude med en kommentar... men så skal du jo lige oprette et svar først, oder?
Avatar billede eagleeye Praktikant
14. december 2003 - 13:27 #6
Ok ;) Eller kan vi da alle dele dem. Det jo inden for få sekunder.
Avatar billede frustrator Nybegynder
14. december 2003 - 13:40 #7
Eagle Eye >> Ret skal være ret, og manmå jo betale for sine egne dumheder ;o)
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