Autor Zpráva
alan
Profil *
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
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
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 *
Radek9:
ta mezera nejde
alan
Profil *
AM:
také nejde...
AM_
Profil
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 *
alan:
Neudělal. Jak můžeš mít v mysql querty echo?? Dej to až za databázi.(Před mysql_close(); )
alan
Profil *
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
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 *
AM:
Tohle jsem ale udělal,a píše to co jsem napsal předtím...[#9] alan
AM_
Profil
[#11] alan
aha, máš chybu v syntaxi před text2=...
řekl bych, že ti tam chybí čárka.
alan
Profil *
AM:
ano měl jsi pravdu,chyběla čárka...díky ti moc:)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0