Avatar billede kjeldsted Novice
20. februar 2008 - 12:25 Der er 4 kommentarer og
1 løsning

SQL Syntax i firefox/oprea!?

Hej Alle.

Jeg har lavet et system hvor det er muligt at ændre noget indhold hentet fra en MySQL database. Systemet skulle så forhindre at to brugere samtidig kan have et vindue åbent da der kan ske nogle fejl så. Jeg lavede følgende kode i går, hvilket jeg kunne få til at virke (på Vista og IE7.0). En anden jeg kender (på Vista og IE7.0) testede så dette system i dag hvor den ikke udførte onUnload="" funktionen. Åbner jeg så min side i firefox eller opera får jeg fejlen
"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1".
Hvad kan der være galt siden jeg får en PHP fejl hvis ikke jeg bruger IE7.0 (har ikke prøvet med IE6.0)

Koden på siden ser sådan ud:
<? require_once("Connections/remote.php"); session_start(); ?>
<?php
$id=$_GET['ret_id'];
if (isset($_SESSION['id'])) {
  $colname_rsBruger = (get_magic_quotes_gpc()) ? $_SESSION['id'] : addslashes($_SESSION['id']);
}
mysql_select_db($database_remote, $remote);
$query_rsBruger = sprintf("SELECT * FROM brugere WHERE id = %s", $colname_rsBruger);
$rsBruger = mysql_query($query_rsBruger, $remote) or die(mysql_error());
$row_rsBruger = mysql_fetch_assoc($rsBruger);
$navn = $row_rsBruger['initialer'];
$result = mysql_query("SELECT * FROM spipspap WHERE id=$id");
while($row = mysql_fetch_array($result)){if($row['ret']=="true"){echo "
<script type=\"text/javascript\">
alert('Der arbejdes pt. på dette manus.\\nDu må vente med at redigere i dette indtil der ikke længere redigeres i det.');
self.close();
</script>
";}}
mysql_query('UPDATE `spipspap` SET `ret` = \'true\', `ret_navn` = \''.$navn.'\' WHERE `spipspap`.`id` = '.$id.' LIMIT 1;');
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Ret i <?=$_GET['title']?></title>
</head>
<body onUnload="open('edit_close.php?id=<?=$id?>')">
</body>
</html>

Håber nogle kan hjælpe.
På forhånd tak.
Avatar billede rax Praktikant
20. februar 2008 - 12:59 #1
hmm, fejlen du får er jo ikke en php-fejl, men en mysqlfejl.. jeg vil umiddelbart mene, at
"SELECT * FROM brugere WHERE id = %s"
skal skrives om til
"SELECT * FROM brugere WHERE id LIKE '%s'"
for at virke..

prøv det, og vend tilbage hvis der stadig er problemer :)
Avatar billede kjeldsted Novice
20. februar 2008 - 13:10 #2
Nu slap jeg da i hvertfald af med det ene problem.
Avatar billede rax Praktikant
20. februar 2008 - 13:21 #3
super :) var der flere problemer? så skriver du bare :)
Avatar billede kjeldsted Novice
20. februar 2008 - 13:24 #4
Hm... Det næste har nok mere med JS af gøre. Så vidt jeg kan se så udfører den ikke onUnload funktionen i firefox samt opera. Og derudover har jeg så oplevet at en jeg kender heller ikke kunne få denne funktion til at virke i IE7.0 hvilket jeg godt selv kan. Og det undre mig en del.
Avatar billede rax Praktikant
20. februar 2008 - 13:52 #5
aah.. ja, der må jeg desværre nok være dig svar skyldig.. skal ikke kunne sige, om det har noget med browserkompatibilitet at gøre. Mit eneste råd er at udelukke, at det har noget med din dynamiske generering af script-kaldet at gøre (onUnload="open('edit_close.php?id=<?=$id?>')").. jeg har selv oplevet problemer med at bruge php til at generere js-kald dynamisk. Prøv at se om du heller ikke kan lave et simpelt alert("hej"); med onUnload.. om ikke andet kan du da ihvertfald udelukke denne faktor :)
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