Avatar billede mesteren_selv Nybegynder
21. juni 2005 - 14:52 Der er 12 kommentarer og
1 løsning

Problemer med DROP TABLE

Hej...

Jeg har en DROP TABLE der driller:

<script language='javascript'>
if (confirm('Er du sikker på at du vil slette dette?')) {
<?php
mysql_query ("delete from presse where id = '{$_POST['slet']}'") or die(mysql_error());

mysql_query ("drop table if exists presse-tekst-{$_POST['slet']}") or die(mysql_error());
?>
alert('Objektet er slettet!');
} else {
alert('Objektet er ikke slettet');
}
</script>

(Som det ses står den inde i en javascript blok, kunne det have noget at gøre med problemet?) Jeg får den efterhånden velkendte:

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 '-tekst-11' at line 1

Nogen der har et bud? På forhånd tak, Mesteren
Avatar billede sukos Juniormester
21. juni 2005 - 14:55 #1
jow, det er problemet, at det er inde i noget javascript! + det løse formodentlig?
Avatar billede arne_v Ekspert
21. juni 2005 - 14:58 #2
browseren sender en request til serveren
serveren kører PHP script
serveren sender HTML & JavaScript tilbage til browser
browseren kører JavaScript

den konstruktion der hænger vist ikke rigtigt sammen
Avatar billede sukos Juniormester
21. juni 2005 - 14:58 #3
Men lad os sige at du i stedet for en query, redirecter til en php fil:

<?php
mysql_query ("delete from presse where id = '". $_POST['slet'] ."'") or die(mysql_error());

mysql_query ("drop table if exists presse-tekst-". $_POST['slet'] ."") or die(mysql_error());
?>
Avatar billede barklund Nybegynder
21. juni 2005 - 15:01 #4
Altså, javascript er clientside, php er serverside. Din delete og drop bliver altid udført idet siden genereres - hvad brugeren så vælger på den genererede side er faktisk helt ligegyldigt. Du er nødt til at have en ekstra side, som du sender brugeren hen til, og som så kan slette række og tabellen.

Og derudover kan tabelnavne som standard ikke indeholde en dash (-), så skal du back-ticke den som:

mysql_query ("drop table if exists ´presse-tekst-{$_POST['slet']}´") or die(mysql_error());

Derudover er det ekstremt fjollet at have dynamiske tabeller på den måde. Dine tabeller (altså deres antal og navne) bør være helt statiske. Kun indholdet bør være dynamisk.

--
Morten Barklund
Avatar billede erikjacobsen Ekspert
21. juni 2005 - 15:01 #5
det løser ikke problemet med din uheldige blanding af javascript og php, men fejlen
som sådan skyldes tabelnavnet. Du kan skrive `...` om

mysql_query ("drop table if exists `presse-tekst-". $_POST['slet'] ."`") or die(mysql_error());kring
Avatar billede mesteren_selv Nybegynder
21. juni 2005 - 15:19 #6
Hmmm... den reagerer rigtigt og skriver de rigtige værdier i variablene, men selvom jeg sætter ´...´ omkring laver den stadig brok... Det er lidt underligt, synes jeg, da delete from'en fungerede fint før jeg tilføjede DROP TABLE...

Er der evt. en anden måde jeg kan få en confirm-popup uden at blande javascript og php?
Avatar billede erikjacobsen Ekspert
21. juni 2005 - 15:22 #7
"delete from presse ..." er ok, da presse er et lovligt navn.
Men den anden kræver `...`  omkring (læg mærke til hvad det er nogen dimser der står)

Du skal en tur på serveren, til et "nyt" script, der laver sletningerne, og du kan bruge "confirm" og header("location...") til det.
Avatar billede mesteren_selv Nybegynder
21. juni 2005 - 15:46 #8
Jeg er ikke vågen nok... Det var de der ticks jeg havde kommet til at lave for istedet for back! Dumme Mester!

Points anyone... i må jo nok dele lidt
Avatar billede erikjacobsen Ekspert
21. juni 2005 - 22:00 #9
Ingen point til mig, tak.

Det er vel ikke kun `...`-erne - du fik også styr på Javascript vs. PHP ?
Avatar billede mesteren_selv Nybegynder
27. juni 2005 - 16:50 #10
Ja... Men det virkede godt da jeg fik `...`-erne på plads, selvom det var dynamisk php i lavascript...
Avatar billede erikjacobsen Ekspert
27. juni 2005 - 18:27 #11
Det passer ikke. Det kan være det ser ud som om det virker, men du laver en
masse overflødige

  "delete from presse where id = ''"

som ikke giver fejl, men som bare belaster sql-serveren. Prøv at læse og forstå
hvad arne_v skrev - du skal ikke begynde at lave webprogrammering før du har indset
hvad det betyder.
Avatar billede barklund Nybegynder
27. juni 2005 - 18:52 #12
Jeg kaster dog gerne et svar i det jeg henviser til mit første indlæg (hvor jeg dog også fik vendt mine ticks den gale vej)
Avatar billede mesteren_selv Nybegynder
12. januar 2006 - 17:33 #13
Lukker
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