smazání tabulky

19 příspěvků

Archiv diskusního fóra

Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.

  1. CHtěl bych smazat všechny záznamy vložené registrovaným uživatelem kromě toho posledního, vymyslel jsem to takhle: <? if (isset($_POST[submit])) { require_once(pripoj.php'); $select = mysql_query("SELECT * FROM info WHERE login = '$_SESSION[login]' order by desc limit 1"); $count = mysql_fetch_assoc($select); $lastid = $count[id]; // vyberu poslední ID uloženého příspěvku $detete = ("DELETE FROM tabulka WHERE id < $lastid and login = '$_SESSION[login]'"); // smažu } ?> <body> <form method=post action="stranka.php"> <input type=submit name=submit value=smaž> </form> </body> jenže to neprovede píše mi to: Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /3w/wz.cz/r/rhea/bla/bla.php on line 10
  2. mysql_error();
  3. <HTML>>>order by desc limit 1 Tady chybí, podle čeho se to má řadit.</HTML>
  4. mno vidíš to...ani jsem si nevšiml...opraveno ale i tak to nefunguje... když dám echo $lastid; tak mi to nejde správný ID ale nesmaže to:( není možný že $lastid bere sice z tabulky číslo ale prezentuje ho jako string?
  5. $detete = ("DELETE FROM tabulka WHERE (id < '$lastid') AND (login like '$_SESSION[login])'");
  6. 4-b.xf.cz (4-b.xf.cz) apostrof na konci a davas pole do retezce a to nelze jen tak: $detete = ("DELETE FROM tabulka WHERE (id < '$lastid') AND (login like '$_SESSION[login]===>)'<==="); $detete = ("DELETE FROM tabulka WHERE (id < '$lastid') AND (login LIKE '".$_SESSION[login]."')"); mysql_query($delete) or die($dotaz."<hr>".mysql_error());
  7. je to divný ale nejde to... <? if (isset($_POST[submit])) { $login = "homeworld"; $chyba = null; require_once('DB_mysql_connect.php'); $select = mysql_query("SELECT * FROM tabulka WHERE (login = '".$login."') order by ID desc limit 1"); $count = mysql_fetch_row($select); $lastid = $count[0]; if ($select) { $detete = ("DELETE FROM tabulka WHERE (id < '$lastid') AND (login LIKE '".$login."')"); mysql_query($delete) or die($dotaz."<hr>".mysql_error()); } else { $chyba .= "chyba"; } } ?> <body> <form method=post action="stranka.php"> <input type=submit name=submit value=smaž> </form> </body> trošku jsem to upravil...nick už nebere ze session ale z proměnný, je to abych se nemusel pořád přihlašovat..oveřuju i select a všechno je v pohodě ale mysql_erorr u DELETE napíše se: Query was empty echo $lastid; pořád funguje ale prostě asi těch 70 záznam nechce z tabulky smazat, název tabulky je taky správně a action formuláře je názec stránky a nejde to:(
  8. clovek kouka a clovek se hrozi :) prvni radek budes mit: error_reporting(E_ALL); //chyby = on hned pod nim by mel byt asi include, ktery obsahuje pripojeni na mysql a start session (teda jestli session pouzivas) echo "xxx = ".$_POST[submit]; vsadim se, ze tohle krici chyby $_POST['submit'] if (isset($_POST[submit])) {} else {echo "neni POST"} $chyba = null; ? $chyba = ""; (ja teda davam chyby do pole a na zaver udelam pole.implode("\n"), ale detail) $select = mysql_query("SELECT * FROM tabulka WHERE (login = '".$login."') order by ID desc limit 1"); tady by to chtelo videt strukturu tabulky. Domnivam se, ze ID s velymi pismeny by to mohlo ignorovat, zjisti se takto (sql prikazy pisi velkymi pismeny, ale tez detail, ktery nema na nic vliv): $dotaz = "SELECT * FROM tabulka WHERE login = '$login' ORDER BY ID DESC LIMIT 1"; $select = mysql_query($dotaz) or die("chyba prvni SQL".$dotaz."<hr>".mysql_error()); (opet klasicky DIE retezec a vypis SQL chybu) (opet rikam, muze to bit dobre, ale jestlize neni, vypise se cely SQL dotaz a v nem pak vidiz, ze treba v $login neni nic) $count = mysql_fetch_row($select); nemuzes delat fetch_row, kdyz je tam chyba. Resp ted si nejsem jist, ja vse ladim s tim error_reporting a die, takze to pri chybe zastavi script (die a to error... pak u funkcni verze nezapomen zakomentovat) $chyba .= "chyba"; ... echo $chyba mas kde? $detete = ("DELETE FROM tabulka WHERE (id < '$lastid') AND (login LIKE '".$login."')"); mysql_query($delete) or die($dotaz."<hr>".mysql_error()); To je vsechno skvele, ale ty pises or die($dotaz) a pritom dotaz mas v $delete. Takze si to ujasni a bud $delete zmen na $dotaz nebo u DIE 4dotaz na $delete, aby se ti zobrazilo, co se tam vlastne dela. Dale bych doporucoval zobrazit si z principu kazdy dotaz: echo $dotaz; mysql_query($dotaz) or die("chyba prvni ...") $detete = ("DELETE FROM tabulka WHERE (id < '$lastid') AND (login LIKE ..." echo $delete; mysql_query($delete) ... input type=submit name=submit to muze a nemusi odeslat hodnotu v submit. stavajici verze lepsich prohlizecu odesilaji. Starsi verze nekdy ano, jindy ne.
  9. já už jsem fakt zoufalej pořád to nejde i když jsem to přepsal podle tebe: nejdřív jsem zkusil tohle: -------------------------------------------------------------------------------- <? if (isset($_POST['odesli'])) { include('connect.php'); $login = "homeworld"; $dotaz = ("SELECT * FROM tabulka WHERE login = '$login' ORDER BY ID DESC LIMIT 1"); $dotaz_select = mysql_query($dotaz) or die("chyba prvni SQL".$dotaz."<hr>".mysql_error()); $row = mysql_fetch_row($dotaz_select); $cislo = $row[0]; echo $cislo; } ?> <body> <form method=post action="stranka.php"> <input type=submit name=odesli value=smaž> </form> </body> -------------------------------------------------------------------------------- vepsalo mi to správně 99 což je poslední ID který chci najít pokud však vypíšu delete: -------------------------------------------------------------------------------- <? if (isset($_POST['odesli'])) { include('connect.php'); $login = "homeworld"; $dotaz = ("SELECT * FROM tabulka WHERE login = '$login' ORDER BY ID DESC LIMIT 1"); $dotaz_select = mysql_query($dotaz) or die("chyba prvni SQL".$dotaz."<hr>".mysql_error()); $row = mysql_fetch_row($dotaz_select); $cislo = $row[0]; $detete = ("DELETE FROM tabulka WHERE (ID < '".$cislo."') AND (login LIKE '".$login."')"); mysql_query($delete) or die($dotaz."<hr>".mysql_error()); } ?> <body> <form method=post action="stranka.php"> <input type=submit name=odesli value=smaž> </form> </body> -------------------------------------------------------------------------------- vepsalo to tuhle chybu: SELECT * FROM info WHERE login = 'Apostol' ORDER BY ID DESC LIMIT 1 -------------------------------------------------------------------------------- Query was empty p.s. samozřejmě ve scriptu je správný název tabulky
  10. homeworld (rhea.wz.cz) jak uz jsem psal, bez scriptu a struktury ... - pise ti to chybu na SELECT, jenze ty tvrdis, ze u prvniho scriptu ti to chybu nepise a pritom je to uplne stejny select a mel by psat uplne stejnou chybu. - pak tu pises: pr1: "SELECT * FROM tabulka WHERE login = '$login' ORDER BY ID DESC LIMIT 1" pr2: "SELECT * FROM tabulka WHERE login = '$login' ORDER BY ID DESC LIMIT 1" ale chyba pr2: SELECT * FROM info WHERE login = 'Apostol' ORDER BY ID DESC LIMIT 1 tak si z nas delas legraci? SELECT je smerovani na tabulku s nazvem "tabulka", ale chyba je z uplne jineho dotazu, kde se pouziva tabulka s nazvem "info" o kterem tady nemas ani carku. - pr2: $dotaz = ("SELECT * FROM tabulka WHERE login = '$login' ORDER BY ID DESC LIMIT 1"); $dotaz_select = mysql_query($dotaz) or die("chyba prvni SQL".$dotaz."<hr>".mysql_error()); $row = mysql_fetch_row($dotaz_select); $cislo = $row[0]; $detete = ("DELETE FROM tabulka WHERE (ID < '".$cislo."') AND (login LIKE '".$login."')"); mysql_query($delete) or die($dotaz."<hr>".mysql_error()); ... mysql_query($dotaz) or die("chyba prvni SQL".$dotaz."<hr>".mysql_error()); OK, ALE: ... mysql_query($delete) or die($dotaz."<hr>".mysql_error()); proc tam mas or die($dotaz, kdyz text dotazu mas v $delete ? O tom jsem ti posledne psal a bud to oprav nebo tu nepis chybu typu: SELECT * FROM info WHERE login = 'Apostol' ORDER BY ID DESC LIMIT 1 -------------------------------------------------------------------------------- Query was empty Az ted mi dochazi, ze problem je na dotazu s DELETE , ale protoze pri DIE ti to zobrazi promennou $dotaz, misto $delete, tak opet nic nevime. Jinymi slovy, zobrazi to mysql_error z DELETE, coz je oki, ale k tomu se zobrazi uplne jiny text dotazu. ja mam treba vyrobenou funkci sq(), kam zadam jen text dotazu a ona uz v sobe ma DIE a pod. function sq($query) {$res = mysql_query($query) or die("<hr>Err: $query<hr>".mysql_error()); return $res;}
  11. mno chybu jsem opravil tudíž po die je $delete a píšemi to: query is empty
  12. homeworld (rhea.wz.cz) a ten dotaz to pise jaky pred tim query empty? resp, co to napise na echo "delete=---".$delete."---end"; protoze $x = ($aaa) to take muze znamenat dotaz na existenci a tez to muze vratit true/false
  13. Píše to Query is empty, nebo Error 1065: Query was empty? pokud to druhé, tak další dotaz: $login a $heslo bereš odkud? Z $_POST, $_GET, $_SESSION a spol? Pokud jo, tak vyzkoušej StripSlashes(); čas od času to pomáhá, protože register_globals stojí za ho... za houby! :)
  14. Tom to druhé ne :-) $detete = ("DELETE FROM info WHERE (ID < '".$lastid."') AND (login LIKE '".$login."')"); mysql_query($delete) or die("chyba druha".$delete."<hr>".mysql_error()); napíše to přesně: chyba druhá <hr>--------------------------------------------------- Query was empty
  15. "to druhé ne :-)" a hlavně že to druhé jo, viď ;) Query was empty == Query was empty =) Tuhle chybu většinou dostaneš, když se ti register_globals <slusne_receno>sere</slusne_receno> do proměnných. Zkus nejprve použít ten stripslashes() a pokud to nepomůže, tak ty proěnné $login, $delete, $lastid a spol přejmenuj tak, aby se ti do jich nemohl register_globals vrtat. Třeba já s úsěpěchem využívám polí: $login => $_PROMENNA['login'], $delete = $_PROMENNA['delete'] ,... atd. A pokud nepomůže ani tohle, tak kdo ví co se kde posralo ;)
  16. Tom (manual.wz.cz) :) Ja myslim, ze jsme skoncili u toho, co jsem rikal :) "protoze $x = ($aaa) to take muze znamenat dotaz na existenci a tez to muze vratit true/false" jinymi slovy: $detete = ("DELETE FROM info WHERE (ID < '".$lastid."') AND (login LIKE '".$login."')"); ===> $delete = ("ahoj"); //uplne stejny vysledek, protze se to evalije jako podminka, viz $a = ($b>1) ? 'ano' : 'ne'; ===> $delete = true echo $delete ===> "" mysql_query("") = 0 , protoze dotaz je opravdu prazdny :) pokud by byl totiz problem s promennymi, pak by die() s tou mou konstrukci muselo vypsat dotaz typu: DELETE FROM info WHERE (ID < '') AND (login LIKE '') ale ono to nevypsalo ani n. tim padem v $delete nic neni
  17. děkuju všem za trpělivost, zčista­jasna to začalo fungovat, i když opravdu nevím, kde byla chyba, ale celý script funguje naviděnou u dalšího problému:-)
  18. peta: "ale ono to nevypsalo ani n. tim padem v $delete nic neni" Tudíž je problém s proměnnými. Register globals se sere do skriptu a přepisuje $delete svou hodnotou (v tomto případě bych to viděl false). Stejně ty reg. globals akorát obtěžujou... homeworld: "zčista­jasna to začalo fungovat," i počítač je jenom člověk ;) "naviděnou u dalšího problému:-)" už se těšíme ;)
  19. Tom (manual.wz.cz) Aha, to by mohlo byt. Ja to prave moc nepouzivam, takze nevim, ktere global to prepisuje.

← Zpět na všechna témata