Slet besked

Tags:    php html mysql

<< < 12 > >>
Hej :)

Nu har jeg rodet lidt med noget gæstebog og vil gerne have, så jeg kan slette indlæg uden jeg skal logge ind i DBen hele tiden.

Her ses min gæstebog:
Fold kodeboks ind/udPHP kode 


Hvordan laver jeg en funktion i slet.php, som sletter beskeden med ID nummer 1 f.eks.?




Indlæg senest redigeret d. 01.06.2011 10:54 af Bruger #16016
19 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 7 karma
Sorter efter stemmer Sorter efter dato
Det her burde virke:

Fold kodeboks ind/udPHP kode 


Men du skal selvfølgelig kun udskrive linket til dem der har adgang til at slette, og derudover skal du i din slet.php lave tjekket igen, så du er sikker på at den person der forsøger at kalde slet.php rent faktisk har lov til det. Hvordan det afgøres kommer naturligvis an på hvordan dit site er bygget op :)

Mvh.

Kasper (TSW)



Indlæg senest redigeret d. 01.06.2011 11:39 af Bruger #1
I den kode jeg skrev tjekkes der efter parameteren "id", men ifølge ovenstående sender du i stedet "nr" med. Du skal altså enten rette det ene eller det andet sted, så den parameter du sender og den parameter du forsøger at bruge er den samme :)

Er det "nr" du vil bruge, skal koden rettes til noget i den her stil:

Fold kodeboks ind/udPHP kode 


Mvh.

Kasper (TSW)



Indlæg senest redigeret d. 01.06.2011 11:48 af Bruger #1
Hm.. Nu kan den slette, men jeg får fejlen

Warning: mysql_affected_rows(): supplied argument is not a valid MySQL-Link resource in /www/zymichost.com/w/e/w/wewillchat/htdocs/slet.php on line 7


My bad, mysql_affected_rows() tager jo en connection resource og ikke en query resource som optional parameter. Koden kan altså i stedet se nogenlunde sådan her ud:

Fold kodeboks ind/udPHP kode 


Som udgangspunkt vil du sikkret også hellere skrive noget mere fornuftigt til brugeren eller evt. bare redirecte tilbage. Du kan bruge mysql_affected_rows() til at se om du fik slettet noget eller ej og så reagere efter det :)

Mvh.

Kasper (TSW)



Indlæg senest redigeret d. 01.06.2011 11:57 af Bruger #1
Hej Anton,

Jeg synes du skal starte med at redigere dit indlæg - de MySQL login informationer der står i din kode ser ikke helt tilfældige ud.

At lave sådan en slet funktion er til gengæld ikke så svært. Hvis du har din slet.php fil, kan noget kode i den her stil gøre det:

Fold kodeboks ind/udPHP kode 


Jeg antager at du kalder dit unikke ID for "nr", så det er det jeg har skrevet i koden. Ellers skal du lige rette det til :)

Edit: Som Kim Jensen rigtigt påpeger, så skal der selvføllige også et ID på dine slet links. Det tager du fra ID kolonnen, som i dit tilfælde lader til at hedde "nr", og udskriver så resultatet bliver til:

slet.php?id=$nr

Så burde det virke :)

Mvh.

Kasper (TSW)



Indlæg senest redigeret d. 01.06.2011 11:05 af Bruger #1
Så er kun localhost tilbage i connection..



Godt! Jeg har opdateret mit oprindelige indlæg med et bud på en løsning :)

Mvh.

Kasper (TSW)



Når du copy/paster kode ind på udvikleren.dk bør du fjerne brugernavn og kodeord til databasen.

Der hvor der står <a href=slet.php> skal du sætte en identifier på som unikt identificerer den besked du gerne vil slette. Nu ved jeg ikke hvordan dit databaselayout ser ud, men ofte har man et ID-felt som bliver automatisk tildelt hver gang en række indsættes i databasen. Det ID-felt skal du have med i din url, fx. slet.php?id=$data["id"].
I din slet.php kan du så udføre en sql i stil med "DELETE FROM chat WHERE id = $_GET["id"].

Det er i store træk det du skal gøre.



Jeg har nu dette i chat.php
Fold kodeboks ind/udPHP kode 

men får denne fejl:
Parse error: syntax error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in /www/zymichost.com/w/e/w/wewillchat/htdocs/chat.php on line 209




Der hvor der står <a href=slet.php> skal du sætte en identifier på som unikt identificerer den besked du gerne vil slette. Nu ved jeg ikke hvordan dit databaselayout ser ud, men ofte har man et ID-felt som bliver automatisk tildelt hver gang en række indsættes i databasen. Det ID-felt skal du have med i din url, fx. slet.php?id=$data["id"].
I din slet.php kan du så udføre en sql i stil med "DELETE FROM chat WHERE id = $_GET["id"].


Du bør ALDRIG slette med en HTTP GET!

Hvad gør du når google indekserer din side? så får du slettet alle dine indlæg, da google jo laver HTTP GET på dem. Måske er det ikke så væsentligt hvis man skal logge ind - hvilket google ikke kan. Det er mere princippet. Man bør altid slette med en HTTP POST.



Indlæg senest redigeret d. 01.06.2011 11:14 af Bruger #2730
Jeg har nu dette i chat.php
Fold kodeboks ind/udPHP kode 

men får denne fejl:
Parse error: syntax error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in /www/zymichost.com/w/e/w/wewillchat/htdocs/chat.php on line 209



Jeg tror den fejl er kommet fordi du bruger " i stedet for ' inde i dit data array!

Prøv denne:
Fold kodeboks ind/udPHP kode 




<< < 12 > >>
t