» »

Brisanje posamezne vrstice v tabeli MYSQL baze

Brisanje posamezne vrstice v tabeli MYSQL baze

Seth ::

Problem je sledeč....

Imam tabelo v bazi z vrsticami (kar je samo po sebi umnevno). Imam tudi php, ki mi iz tabele potegne podatke in prikaže na strani. Zraven vsake vrstice bi imel gumb "Briši", ki bo brisal celotno vrstico.

Prilepil bi tudi kodo, ampak mi ne pusti zaradi sintakse... :(

Nekak mi je ratalo spravit gumb, da je klical mysql_query("DELETE FROM tabela WHERE autoID = $autoID") or die(mysql_error());
ampak mi je spraznil celo tabelo

Zgodi se mi, da mysql query kliče brezpogojno ob reloadu strani ter izprazne tabelo.

A ima kdo idejo kako to izpeljat ozirma primer že narejen?
Mogoče kakšna boljša opcija z uporabo checkbox-ov + 1 delete gumb namesto gumba zraven vsake vrstice?

tnx,
Seth
  • spremenil: Seth ()

kunigunda ::

Ze nimas prov tabele polnjene. Ce imas autoID npr int auto_increment potem ne more ta stavek zbrisati cele tabele.
Dej en describe te tabele nared pa sem pripopaj...

Sicer pa je checkbox varianta boljsa, pac das ime vsakega checkbox npr VALUE=D NAME=chk_${id} potem pa jih skontroliras, kateri imajo vrednost
ki si jim jo nastavil ("D" v zgornjem primeru)

Zgodovina sprememb…

  • spremenilo: kunigunda ()

Seth ::

Tnx za odziv kunigunda

Evo describe tabele :
+-----------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+------------------+------+-----+---------+----------------+
| autoID | int(10) unsigned | NO | PRI | NULL | auto_increment |
| ime | varchar(64) | NO | | NULL | |
| priimek | varchar(64) | NO | | NULL | |
| email | varchar(64) | NO | | NULL | |
| date_auto | int(10) unsigned | NO | | NULL | |
+-----------+------------------+------+-----+---------+----------------+

Ne vem ali sva se prou razumela, ampak nočem brisati cele tabele glede na autoID ampak posamezne izbrane vrstice glede na autoID.

Sicer sem pa tud našel kodo (http://www.phpeasystep.com/mysqlview.ph..., ki bi bila direkt to kar rabim, ampak ne deluje. Sicer se še nisem popolno poglobil v njo..

lp,
Seth

kunigunda ::

Seveda sva se razumela.

Glede na strukturo ti definitivno tvoj stavek NE MORE izbrisati cele tabele, razen ce ne gre enega po enega brisati zaradi bug-a v programu.

ce das

$autoID=5;
mysql_query("DELETE FROM tabela WHERE autoID = $autoID") or die(mysql_error());

ti bo tole zbrisal en reckord kjer je autoID enak 5

PHP-ja sicer ne poznam, sem pa videl v linku ki si mi ga dal da za numeric prav tako uporablja enojne narekovaje ''

"DELETE FROM tabela WHERE autoID = '$autoID'"

Probaj se to (sicer v mysql-u to ni potrebno, ce gre za numeric)

Kaj pa pocnes z $autoID-jem pred tem SQL stavkom ? Ga imas v kaki zanki ?

Seth ::

Ja, autoID je v zanki, zato, ker bi rad brisal vrstico glede na njega. V bistvu se mora mysql stavek za brisanje zgenerirati zraven nove (vsake) vrstice, da lahko briše posamezno..

a pravilno razmišljam?


lp
Seth

kunigunda ::

Tocno to. Ker ga mas v zanki ti pobrise vse (verjetno) :)

Hm, sql stavek ne dajati v html kodo zaradi sql injectiona in podobno

pac naredis npr..

(iz glave pisem)

1. Prvi rekord HREF=skripta.php?cmd=brisi&audoID=1>Brisi
2. Drugi rekord HREF=skripta.php?cmd=brisi&audoID=2>Brisi
3. Tretji rekord HREF=skripta.php?cmd=brisi&audoID=3>Brisi

Tako bos dobil kot parameter samo $autoID ki ga hoces brisati.
Ce bos sel pa s checkboxi potem pa

FORM NAME=bla ACTION=skripta.php
INPUT TYPE=hidden NAME=cmd VALUE=brisi
INPUT TYPE=check NAME=autoID_1 VALUE=Y
INPUT TYPE=check NAME=autoID_2 VALUE=Y
INPUT TYPE=check NAME=autoID_3 VALUE=Y
INPUT TYPE=submit VALUE=brisi


pol pa v programu preveris (npr. ne znam PHP-ja, saj ves)
SELECT * FROM tabela
FOREACH record...
IF param($autoid from tabela) = "Y")
DELETE ....


Ce na eni strani ne bos imel veliko checkboxov lahko zaradi performans sestavis en DELETE, se pravi naredis
DELETE FROM tabela WHERE autoID IN (....) --- spisek autoID-jev ki imajo "D"

Upam da ti nisem zakompliciral se bolj :)

Seth ::

Bom preštudiral

hvala zaenkrat

lp,
Seth

Tody ::

Forum im tudi atribut [ st. koda] katerakolikoda pač [/st .koda]

* zbriši presledke med []


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Učenje programiranja PHP

Oddelek: Programiranje
91497 (1038) Spura
»

sql

Oddelek: Programiranje
61020 (725) Miha 333
»

SQL vprasanje (strani: 1 2 )

Oddelek: Programiranje
688402 (5081) BivšiUser2
»

Izvorna koda mojega par dnevnega dela; ce jo malo pokomentirate :) (strani: 1 2 )

Oddelek: Programiranje
606469 (4814) Microsoft
»

dolžina vnešenega teksta

Oddelek: Izdelava spletišč
331729 (1342) darh

Več podobnih tem