Slette en post fra databasen

Tags:    php mysql

Hej,

Jeg har oprettet en database, hvor det er muligt at tilføje poster fra en side, og så bliver posterne udskrevet på en anden side som hedder se_kunder.php.

Jeg vil nu lave et link under hver post som bliver vist som gør det muligt at slette den enkelte post fra databasen.

Jeg har skrevet noget kode, men det virker ikke, den refresher bare siden se_kunder.php
er der nogle som ved hvad jeg gør forkert?

Jeg håber i forstår hvad jeg mener, og at i kan hjælpe.

her er min kode:

Fold kodeboks ind/udPHP kode 




38 svar postet i denne tråd vises herunder
6 indlæg har modtaget i alt 8 karma
Sorter efter stemmer Sorter efter dato
Helt klart Gustav.

Løsningen mangler en hel del sikkerhed og check før den er rigtig god.

Nu var det bare ikke lige det han efterspurgte. Derfor valgte jeg bevidst ikke at lave det.



Den er jeg med på, men du skal alligevel tjekke om get variablen er sat. Ellers får du dumme notices og sender bogus queries til databasen.*

Og når OP ikke har styr på rækkefølgen af funktionerne, så tror jeg ikke man skal lade det være op til ham selv at regne ud...

* Nogen vil måske argumentere for at den ville rydde op i databasen, hvis han ikke har sat auto_inc men det er en lidt aggresiv måde at rydde op på ;-)



@Daniel

Tak, tabel navnet er kunder og feltnavnene er:

Virksomhedsnavn
cvrnummer
kontaktperson
email
kundenummer
fakturanummer
oprettet
brugerftp
passftp
brugercms
passcms
hosters
betalt
betalsenest
nestefaktura
pris
webadresse
fakturaurl
projektbeskrivelseurl
noter

Og ID er den første, og den er på auto_inc.

Var det det du mente du ville have?

Tak for hjælpen :)

Adam



@Gustav.
Ja det kan man jo så altid diskutere. Men kan sagtens se din pointe i det :D



@Adam
Ja det var det jeg mente. Men kunne klare mig med det du i forvejen havde oplyst, så se mit tidligere svar.

Husk også at være opmærksom på det Gustav han skriver.

Altså at du får tjekket om der er sat en id og får tjekket om det er en nummerics værdi

Dette kan du klare med at tilføje disse to koder
Fold kodeboks ind/udPHP kode 


Fold kodeboks ind/udPHP kode 




Indlæg senest redigeret d. 14.03.2012 22:12 af Bruger #15663
@Daniel, du behøver faktisk ikke isset() tjekket på _GET[url].

Vi sådan set lige glade med om den er sat eller ej hvis vi ved om det er et tal - så is_numeric() tjekket er nok.

Der er dog en ulempe ved is_numeric - den godkender hexadecimal notering, floats, og eksponentielle tal (e-notation). Det vil sige, at is_numeric("-134.032423e1034") evaluerer til true. Det gør is_numeric("0xFF0a0) også.

Men det er ikke sårbart i forhold til injections og der sker ikke noget hvis den prøver at slette et id som ikke findes i databasen. Så det er ikke et problem i vores use-case.

Hvis det var et problem for dig kan du bruge ctype_digit() funktionen. Den tjekker om en string kun indeholder tegnene 0-9. ctype_digit() har så den ulempe at ctype_digit(1) er false, hvor ctype_digit("1") er true.

Men is_numeric() er dobbelt hurtig som ctype_digit(), og ctype_digit() er 30% hurtigere end tilsvarende regular expressions - så de har begge to deres berettigelse.

Denne gælder selvfølgeligt også Adam. :)



Hej, nu prøvede jeg at indsætte den kode som du havde skrevet.
men jeg får denne fejl:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/www/xxx/xxx/se_kunder.php on line 37

Det er jo noget med while løkken, ved ikke helt om den er placeret rigtigt. Ved ikke hvorfor leder efter home/www
og er helle ikke sikker på at if sætningerne er placeret rigtigt, men det tror jeg eftersom de omkranser der hvor jeg udfører sletningen.

Forstod heller ikke om du stadig mente at jeg skulle oprette en side som hedder slet_kunder og sætte koden ind der, fordi linket henviste stadig til samme side.

Men ved du hvad den fejl jeg får betyder?

Nu ser min kode sådan ud:

Fold kodeboks ind/udPHP kode 




Adam du er nød til at sætte dig lidt ind i det.

Fold kodeboks ind/udPHP kode 





@Daniel, du skulle tage at læse den kommentar jeg skrev. Den er druknet sidst på side 2, så det er nok derfor du har overset den :)



Hey,

Ja jeg har også prøvet at sætte mig ind i det, og nu har jeg ændret while løkken lidt, men får stadig samme fejl.

her mener jeg jo at jeg siger, når id indeholder et tal så skal den uføre den handling nedenunder.

Jeg havde også prøvet at sætte while løkken ned rundt om linket så når den indeholder et tal skal den udfører slet linket.

men den kommer stadig med samme fejl:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/www/wearecrunch.dk/kundedatabase/se_kunder.php on line 30

Fold kodeboks ind/udPHP kode 




ja ok, nu ændrede jeg det til $get_kunder i while løkken.

Så nu kommer der ikke en fejl, men nu refresher den bare siden uden at slette noget?

Er det ikke meningen at der skal stå et tal oppe i urlen som svare til den id?

Det her er urlen efter jeg har trykket på slet knappen:

http://xxx/kundedatabase/se_kunder.php?id=$id\

Kan det være linket den er gal med?
Den ser sådan ud:

'<a href="se_kunder.php?id=$id\">Slet</a>'

Tak



t