Autor | Zpráva | ||
---|---|---|---|
alan Profil * |
#1 · Zasláno: 15. 8. 2010, 22:58:15
ahoj,mám problém,rozhodl jsem se udělat 2 textový pole v administraci,že v adminu,když dám nový článek,tak tam jsou 2 pole, jedno pole posílá na hlavní stránku a to 2 posílá na jinou stránku,myslím jako když se klikne na název,ten se otevře a tam je ten 2 text...
Ale mám tu problém,stránku vytvoří v pořádku,ale když jí chci upravit,tak to neupraví...prostě to zůstane tak jak to je,nevíte kde mám chybu? Zde je PHP <?php header("Location: ../index.php"); do { require_once('../../databaze.php'); if (!OtevriDB()) break; @$res = mysql_query("UPDATE clanky SET nazev='{$_REQUEST['nazev']}', " . "text='{$_REQUEST['telo']}'" . "text2='{$_REQUEST['telo2']}'" . "WHERE id_clanku={$_REQUEST['IDCL']}"); mysql_close(); } while (false); ?> |
||
Radek9 Profil |
#2 · Zasláno: 15. 8. 2010, 23:01:14 · Upravil/a: Radek9
alan:
Zkus dát před WHERE mezeru. Edit: Jinak, while(false) je blbost a tím přesměrováním před zbytkem scriptu si taky nejsem jistej. |
||
AM_ Profil |
#3 · Zasláno: 15. 8. 2010, 23:13:02
To přesměrování fatálně nevadí, kód za ním se vykoná i tak. Ale stejně bych ho dal až nakonec, protože pokud skript vypíše nějakou chybu, takhle ji neuvidíš, protože už budeš přesměrovaný.
Tu komedii s do-while-break bych řešil takto: <?php header("Location: ../index.php"); require_once('../../databaze.php'); if (!OtevriDB()) die('nezdarilo se spojeni s DB'); @$res = mysql_query("UPDATE clanky SET nazev='{$_REQUEST['nazev']}', " . "text='{$_REQUEST['telo']}'" . "text2='{$_REQUEST['telo2']}'" . "WHERE id_clanku={$_REQUEST['IDCL']}"); mysql_close(); ?> Přecejen nezdaření spojení s DB je docela závažná chyba, tak je lepší skript ukončit (die), ale pokud bys echt nechtěl, tak to řeš nějakým ifem, a ne cyklem :) Řešení tvé chyby: a) vyhoď ten zavináč (a už ho nikdy do kódu nepiš, když potlačuješ chybové hlášky, tak se pak nediv, že nevíš, proč to nešlape) b) za mysql_query dej "echo mysql_error();" |
||
alan Profil * |
#4 · Zasláno: 15. 8. 2010, 23:18:08
Radek9:
ta mezera nejde |
||
alan Profil * |
#5 · Zasláno: 15. 8. 2010, 23:19:49
AM:
také nejde... |
||
AM_ Profil |
#6 · Zasláno: 15. 8. 2010, 23:21:35 · Upravil/a: AM_
AM:
> a) vyhoď ten zavináč (a už ho nikdy do kódu nepiš, když potlačuješ chybové hlášky, tak se pak nediv, že nevíš, proč to nešlape) > b) za mysql_query dej "echo mysql_error();" co přesně nejde? smazat zavináč nebo tam napsat to mysql_error(); ? //ono tedy asi lze smazat i tu mezeru. Ale bez chybové hlášky jsme krátcí. A pokud necháš na začátku ten header, žádnou neuvidíš. Četl jsi přeci pozorně vše a nepřeskočil hned k řešení, že? někdy se sám sobě divím, že se sem vůbec chodím se namáhat... |
||
alan Profil * |
AM:
nejde,jukni zda jsem to udělal dobře jak jsi napsal. <?php require_once('../../databaze.php'); if (!OtevriDB()) die('nezdarilo se spojeni s DB'); $res = mysql_query("echo mysql_error();("UPDATE clanky SET nazev='{$_REQUEST['nazev']}', " . "text='{$_REQUEST['telo']}'" . "text='{$_REQUEST['telo2']}'" . "WHERE id_clanku={$_REQUEST['IDCL']}")"); mysql_close(); header("Location: ../index.php"); ?> Moderátor Alphard: Vkládej prosím kódy mezi značky [>pre] a [>/pre] (stačí kliknout na ).
|
||
Lechyč Profil * |
#8 · Zasláno: 15. 8. 2010, 23:50:44
alan:
Neudělal. Jak můžeš mít v mysql querty echo?? Dej to až za databázi.(Před mysql_close(); ) |
||
alan Profil * |
#9 · Zasláno: 16. 8. 2010, 00:12:54
mno,tak to tam mám a píše to:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'text2='Článek na stránceasdsdas'WHERE id_clanku=78' at line 1 |
||
AM_ Profil |
#10 · Zasláno: 16. 8. 2010, 00:37:53
No, upřímě řečeno, pokud nepoznáš, že to je příkaz pro PHP a že tedy nepatří doprostřed mysql dotazu, měl by ses vykašlat na nějaké administrace a nastudovat základy. Programovat metodou pokus omyl nikam daleko nevede, pokud nerozumíš tomu, co děláš, bude tvá práce spočívat v paběrkování rad z fóra a patlání je na sebe.
Měl jsi udělat toto: $res = mysql_query ( ... ); echo mysql_error(); //za mysql_query neznamená "přímo v textu za to", ale až za celé volání funkce, tedy sem. Pokud neznáš základní syntaxi jazyka, opravdu se daleko nedostaneš, o tom, co jsou funkce a co dotazy do databáze, bys měl mít suverénní přehled, když se pouštíš do takovéhoto skriptu... to není nic ve zlém, zkrátka sis ukousl moc velké sousto, programování se opravdu nenaučíš opsáním a intuitivní úpravou kousku skriptu, musíš si přečíst nějakou teorii... |
||
alan Profil * |
#11 · Zasláno: 16. 8. 2010, 00:55:14
AM:
Tohle jsem ale udělal,a píše to co jsem napsal předtím...[#9] alan |
||
AM_ Profil |
#12 · Zasláno: 16. 8. 2010, 01:03:34
|
||
alan Profil * |
#13 · Zasláno: 16. 8. 2010, 01:22:18
AM:
ano měl jsi pravdu,chyběla čárka...díky ti moc:) |
||
Časová prodleva: 14 let
|
0