Avatar billede moddi100 Seniormester
23. januar 2008 - 20:13 Der er 18 kommentarer og
1 løsning

Fejl: "Unable to jump to row 0 on MySQL result" Kan I hjælpe mig?

Hejsa allesammen

Jeg har et php script der ser sådan ud:

$entry_id = $_GET["besked"];

$query = mysql_query("SELECT navn, website, besked FROM gaestebog WHERE id='$entry_id'");

$navn = mysql_result($query, 0, "navn");
$website = mysql_result($query, 0, "website");
$besked = mysql_result($query, 0, "besked");

Men når jeg så kører scriptet får jeg fejlen:

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 7 in *MIN_URL*.php on line 21

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 7 in *MIN_URL*.php on line 22

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 7 in *MIN_URL*.php on line 23

Hvad kan jeg gøre for at få det til at virke??

Mvh. Morten
Avatar billede kjeldsted Novice
23. januar 2008 - 20:38 #1
Udskrift

$query = mysql_query("SELECT navn, website, besked FROM gaestebog WHERE id='$entry_id'");

$navn = mysql_result($query, 0, "navn");
$website = mysql_result($query, 0, "website");
$besked = mysql_result($query, 0, "besked");

med

$query = mysql_query("SELECT navn, website, besked FROM gaestebog WHERE id='$entry_id'");
while($row = mysql_fetch_array($query))
  {
  $navn = $row['navn'];
  $website = $row['website'];
  $besked = $row['besked'];
  }

Det burde løse dit problem.
Avatar billede moddi100 Seniormester
23. januar 2008 - 21:05 #2
Hvad så hvis jeg ønsker det sat ind i en formulat? Den er jo uden for løkken hvordan sættes dataerne så ind i den?
Avatar billede kjeldsted Novice
23. januar 2008 - 21:24 #3
Jeg er ikke helt med på overstående. Hvad er det er præcist ønskes?
Avatar billede erikjacobsen Ekspert
23. januar 2008 - 21:27 #4
Dit problem opstår når der ikke er en række med det anførte id. Hvad skal der ske i det tilfælde?
Avatar billede moddi100 Seniormester
23. januar 2008 - 21:41 #5
jeg har en gæstebog som jeg gerne vil kunne rette i. Det vil sige ændre på hvad andre har skrevet i den. Den er opbygget i php. Variablerne skulle gerne indlæses i felter magen til dem man skrev i da man oprettede beskeden. Så skal jeg kunne ændre i den, f.eks. stavefejl og så opdatere den i MySql databasen.
Avatar billede kjeldsted Novice
23. januar 2008 - 21:45 #6
I din form skal du fx så i det felt der hedder navn sætte

value="<?=$navn?>"

og ligeledes med $website og $besked. Det skal dog se lidt anderledes ud hvis formen ligger i en echo i et php script.
Avatar billede erikjacobsen Ekspert
23. januar 2008 - 21:45 #7
Ja, og det kommer de vel også til hvis du angiver et id, der er i tabellen. Du får fejlen fordi du angiver et id, der ikke er i tabellen. Når det sker, hvad vil du så have dit script skal gøre?
Avatar billede kjeldsted Novice
23. januar 2008 - 21:47 #8
Du kan også i stedet sætte formen ind i den kode jeg tidligere skrev:

while($row = mysql_fetch_array($query))
  {
  echo "<form>
<input type=\"text\" name=\"navn\" value=\"$row['navn']\">

og det samme med resten af felterne....
Avatar billede moddi100 Seniormester
24. januar 2008 - 07:57 #9
Id'et vil altid være rigtigt, da jeg har lavet det sådan at jeg vælger det indlæg jeg ønsker at rette i, hvorefter jeg bliver sendt til den nye side, som så er den jeg har problemer med. Eller vil det?

Mht. value="<? echo $navn; ?>" virker det ikke, men jeg tror jeg vil indsætte formen i while løkken istedet for. Det bliver dog ikke lige nu men først en gang over middag, da jeg ikke har adgang til en computer med ftp før.

Mange tak for hjælpen ind til videre. Jeg skriver lige igen hvis det ikke virker.
Morten
Avatar billede dkfire Nybegynder
24. januar 2008 - 10:10 #10
Problemet ligger vel i at din forespørgelse er forkert.
Lige nu går den ud fra at id er tekst(/varchar) og ikke tal(int).
Ret:
$query = mysql_query("SELECT navn, website, besked FROM gaestebog WHERE id='$entry_id'");
Til:
$query = mysql_query("SELECT navn, website, besked FROM gaestebog WHERE id=$entry_id");
Avatar billede erikjacobsen Ekspert
24. januar 2008 - 10:33 #11
'...' eller ikke omkring talværdier i Mysql er ligemeget - det er ikke der fejlen er. (Andre databasesystemer har andre meninger om den sag)
Avatar billede moddi100 Seniormester
24. januar 2008 - 14:35 #12
Det virker ikke. Hverken det med at indsætte <form> eller det med at fjerne ' ' i $query. Her har i lige et udsnit af hvordan scriptet ser ud:

mysql_connect($server, $bruger, $kodeord);
mysql_select_db($database);

$entry_id = $_GET["besked"];


$query = mysql_query("SELECT navn, website, besked FROM gaestebog WHERE id='$entry_id'");

while($row = mysql_fetch_array($query))
  {

echo $navn = $row['navn'];
 
}
?>

Jeg ved ikke helt hvad der går galt, men det er nok noget med id'et. I browseren skriver den ...php?id=26
Hvor 26 er id'et på beskeden. Nogen ideer?
Avatar billede moddi100 Seniormester
24. januar 2008 - 14:36 #13
Ps. der er bare en helt blank side når jeg tester.
Avatar billede erikjacobsen Ekspert
24. januar 2008 - 14:53 #14
Hvorfor skriver du id=26 i adresselinien?
Avatar billede moddi100 Seniormester
24. januar 2008 - 14:56 #15
Det gør den automatisk. Men anyway problemet var variablen $entry_id jeg manglede at udbygge den lidt...

Det er løst nu, tak for hjælpen allesammen!
Avatar billede moddi100 Seniormester
24. januar 2008 - 14:58 #16
Jeg giver jer karma/point ved at klikke på "baren" ud for jeres navn og så give min vurdering, ikke andet?
Avatar billede erikjacobsen Ekspert
24. januar 2008 - 15:24 #17
Ja, problemet var vel at du aflæste $_GET["besked"] og ikke $_GET["id"]
Avatar billede moddi100 Seniormester
24. januar 2008 - 16:17 #18
korrekt
Avatar billede moddi100 Seniormester
05. februar 2008 - 14:44 #19
hj
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