Forum » Izdelava spletišč » 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,
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)
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,
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 ?
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
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 :)
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 :)
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Učenje programiranja PHPOddelek: Programiranje | 1497 (1038) | Spura |
» | sqlOddelek: Programiranje | 1020 (725) | Miha 333 |
» | SQL vprasanje (strani: 1 2 )Oddelek: Programiranje | 8402 (5081) | BivšiUser2 |
» | Izvorna koda mojega par dnevnega dela; ce jo malo pokomentirate :) (strani: 1 2 )Oddelek: Programiranje | 6469 (4814) | Microsoft |
» | dolžina vnešenega tekstaOddelek: Izdelava spletišč | 1729 (1342) | darh |