Autor | Zpráva | ||
---|---|---|---|
thomas9800 Profil * |
if (!$error): $id_osoby = $_POST["id_osoby"]; if (($id_osoby) > 0): $au = new Auth(); $vysledek = $au->odstranOsobu($id_osoby); if ($vysledek): $message = "<div class=\"message\">OK, ossoba s ID: $id_osoby byla vymazana!</div>"; else: $message = "<div class=\"message\">Chyba! Tento uživatel v databázi neni!</div>"; endif; endif; else: $message = "<div class=\"message\">Nesprávná hodnota</div>"; endif; nenapada nekoho jak bych mohl osetrit aby mi to hodilo hlasku: CHyba! Tento uzivatel neni v databazi? Protoze já kdyz tam dam cislo ktere v databazi neni, tak mi to stejne vzdycky hodi: OK, osoba s ID:... byla odstranena..... nenapada nekoho neco prosim? |
||
Rfilip Profil |
#2 · Zasláno: 1. 8. 2012, 12:34:22
Dej sem zdroják třídy Auth
|
||
thomas9800 Profil * |
#3 · Zasláno: 1. 8. 2012, 12:42:04
Rfilip:
„Dej sem zdroják třídy Auth“ public function odstranOsobu($id_osoby) { try { $ap = new Application(); $odstran = 'DELETE FROM osoby WHERE id_osoby='.$id_osoby.''; $stid = oci_parse($ap->db, $odstran); oci_execute($stid); return true; } catch (Exception $e) { return false; } } |
||
Alphard Profil |
Vždy vrátíte
true (předpokládám, že oracle nevyhodí výjimku jen proto, že podmínka pro mazání nic nenašla).
Buď si nechat vrátit počet ovlivněných záznamů (oci_num_rows()), nebo před to dát ještě select, který to ověří. Mimochodem, metoda oci_parse() má parsovat dotaz, kde jsou proměnné uvedené parametricky. Jestli tímto stylem (přímé dosazení proměnných) máte všechny dotazy, není to vhodné. |
||
thomas9800 Profil * |
#5 · Zasláno: 1. 8. 2012, 13:09:37
Alphard:
> Vždy vrátíte true (předpokládám, že oracle nevyhodí výjimku jen proto, že podmínka pro mazání nic nenašla). > Buď si nechat vrátit počet ovlivněných záznamů (oci_num_rows()), nebo před to dát ještě select, který to ověří. > > > Mimochodem, metoda oci_parse() má parsovat dotaz, kde jsou proměnné uvedené parametricky. Jestli tímto stylem (přímé dosazení proměnných) máte všechny dotazy, není to vhodné. jj to sem taky nejak premyslel pres ten select... vim ze asi moc otravuju ale nemohl by si mi to nejak napsat ten kod treba pomoci toho oci_num_rows? já to mam do bakalarske prace a da se rict ze se hp i trochu ucim... |
||
Alphard Profil |
#6 · Zasláno: 1. 8. 2012, 13:14:23
Snad
return oci_num_rows($stid);
|
||
thomas9800 Profil * |
#7 · Zasláno: 1. 8. 2012, 13:51:34 · Upravil/a: thomas9800
Alphard:
už to jede, moc moc dekuju! jeste tady resim jednu vec, muzu se optat? Alphard: tak mi to stejne nejde, kdyz sem zadal cislo co tam je v databazi, tak ted mi to stale haze hlasku ze nenni v databazi a pritom tam je...dal sem ze vysledek ==1 a asi mi to vzdycky vrati jeden radek a nevim proc.. if (!$error) { $id_osoby = $_POST["id_osoby"]; if (($id_osoby) > 0) { $au = new Auth(); $vysledek = $au->odstranOsobu($id_osoby); if ($vysledek == 1) { $message = "<div class=\"message\">OK, osoba s ID: $id_osoby byla vymazana!</div>"; } else { $message = "<div class=\"message\">Chyba! Tento uživatel v databázi neni!</div>"; } } else { $message = "<div class=\"message\">Nesprávná hodnota</div>"; } } |
||
Alphard Profil |
#8 · Zasláno: 1. 8. 2012, 14:17:13
Tu podmínku jste ani měnit nemusel, přetypuje se to automaticky.
Prostě tam dejte echo vysledek a zjistěte, co vám to vrací, trochu samostatnosti. |
||
thomas9800 Profil * |
#9 · Zasláno: 1. 8. 2012, 14:26:18
Alphard:
prave ze to vzdycky vrati 0 :-( |
||
thomas9800 Profil * |
#10 · Zasláno: 1. 8. 2012, 15:39:09
nemohl by nekdo poradit prosim?
|
||
thomas9800 Profil * |
#11 · Zasláno: 1. 8. 2012, 20:39:18
už sem to rozchodil
|
||
Alphard Profil |
#12 · Zasláno: 1. 8. 2012, 20:47:59
Můžete napsat, v čem byl problém?
Já bych vám býval poradil víc, ale dle manuálu mělo mé řešení fungovat a s oraclem mám mizivé zkušenosti. |
||
thomas9800 Profil * |
#13 · Zasláno: 2. 8. 2012, 12:12:35
no slo o to ze vsechno vraci neco jineho, execute vraci myslim porad 1 a pak jsem to zkousel jeste pres neco, a to vracelo stale 0, tak jsem udelal execute, to vraci porad true, jako ze se ten delete vzdy provede, a pak jsem si spocital pocet odstranenych radku pomoci oci_num_rows...
public function odstranOsobu($id_osoby) { $ap = new Application(); $odstran = 'DELETE FROM osoby WHERE id_osoby='.$id_osoby.''; $stid = oci_parse($ap->db, $odstran); oci_execute($stid); $r = oci_num_rows($stid); if($r == 1){ return true; }else{ return false; } } |
||
Alphard Profil |
#14 · Zasláno: 2. 8. 2012, 12:20:44
[#13] thomas9800
Takže oci_num_rows() funguje? To jsem vám psal hned... public function odstranOsobu($id_osoby) { $ap = new Application(); $odstran = 'DELETE FROM osoby WHERE id_osoby='.$id_osoby.''; $stid = oci_parse($ap->db, $odstran); oci_execute($stid); return oci_num_rows($stid); } Já jsem si právě myslel, že oci_num_rows() z nějakého důvodu nefunguje. execute() nevracelo 1, ale true, protože nenastala chyba. 0 smazaných záznamů není chyba. |
||
Časová prodleva: 11 let
|
0