Autor Zpráva
XARK
Profil *
Potřeboval bych poradit, pomoci UPDATE chci aktualizovat tabulku, nevypise mi to zadnou chybovu hlasku ale do databaze se nic neulozi


Kod:

if ($akce == 'update' )
{
$id = $_POST['id'];
$seo_url = $_POST['seo_url'];
$nazev = $_POST['nazev'];
$menu = $_POST['menu'];
$uvodni = $_POST['uvodni'];
$obsah = $_POST['obsah'];

$vysledek1 = mysql_query( "UPDATE web_stranky SET seo_url='$seo_url', nazev='$nazev', menu='$menu', uvodni='$uvodni', obsah='$obsah' WHERE web_stranky.id='$id' ", $db_spojeni);
{ echo '<p>Editace stránky ',$radek['nazev'],' úspěšně proběhla.</p>'; }
if (!$vysledek1)
{
echo 'Poslání příkazu SQL se nepodařilo';
echo '<br>';
echo 'popis chyby: ', mysql_error($db_spojeni) ;
exit();
}
}
Majkl578
Profil
toto je jako co?
{ echo '<p>Editace stránky ',$radek['nazev'],' úspěšně proběhla.</p>'; } 

mimochodem, je to náchylné k SQL injection.

jinak, kód dávej do příslušného tagu, kdo se v tom má takhle vyznat.
dRaGen
Profil
Majkl578
Nemusí to bejt náchylný na SQL injection, pokud si někde prochází celé pole $_POST a upravuje v něm hodnoty pomocí htmlspecialchars a addslashes
Mr.S1lent.cz
Profil *
mozna bych to zkusil napsat takhle:

f ($akce == 'update' )
{
$id = $_POST['id'];
$seo_url = $_POST['seo_url'];
$nazev = $_POST['nazev'];
$menu = $_POST['menu'];
$uvodni = $_POST['uvodni'];
$obsah = $_POST['obsah'];

$db_spojeni = mysql_query("$server_db", "$user_db", "$pass_db") or die("Nepodarilo se spojeni s databazi");
$db_select = mysql_select_db("$db") or die("Nepodaril se vyber databaze");

$dotaz_exist = mysql_query("SELECT * FROM 'prislusna tabulka' WHERE web_stranky.id ='$id'");
$exist = mysql_num_rows($dotaz_exist);
if($exist=="1") {
$dotaz = mysql_querry( ten tvuj update bez toho $db_spojeni) or die("akutalizace probehla neuspesne");
}
else {
echo "aktualizase neprobehla uspesne, radek tabulky s prislusnym id chyby!";
}


take by me zajimalo, co zname zapis "WHERE web_stranky.id='$id'" - takhle blbe zapsane "id" jsem jeste nevidel, ja osobne bych si do sql dotazu pri vytvareni tabulky netroufl vubec psat "tecku". v praxi nepouzivam nic jineho nez prach(s)proste "id"

jinak k tomu, co radil dRaGen - pokud mas nastavenou directivu magic_quotes na "on" a ukladas data do db pres to tvoje addsplashes, tak napr uvozovky budou v db viditelne, protoze escapovani probehlo dvakrat. tuto directvu nenastavis ve scriptu fci ini_set, protoze se vyhodnocuje jeste pred provedenim scriptu :-) proto bych radil jeste k tomu na zacatek scriptu hodit kontrolu, jak je magic_quotec nastaven, aby se podle toho escapovani provedlo uspesne :-)
dRaGen
Profil
Mr.S1lent.cz
Jistě že, nelze použít samostatné addslashes, pouze sem nastínil ten problém :-)

function gpc_addslashes($str) { //Pokud je vyplá direktivita magic_quotes tak použij addslashes
    return (get_magic_quotes_gpc() ? $str : addslashes($str));
}
XARK
Profil *
Mr.S1lent.cz[b]
no prepsal jsem to takhle, ale ono to asi nemuze najit prislusny radek nebo se to tam aspon neulozi, hodim sem cely kod, snad mi nekdo pomuze


Kód:
session_register('url');
session_register('akce');

$url = $_GET['url'];
$akce = $_GET['akce'];

    $db_spojeni = mysql_connect('server' , 'jmeno' , 'heslo'  );
  if (!$db_spojeni)
	 {
	   echo 'Připojení se nepodařilo';
	   echo '<br>';
	   echo 'Popis chyby: ', mysql_connect_error() ;
	   exit();
	 }

$db = mysql_select_db ('prislusna_tabulka', $db_spojeni);
  if (!$db)
	 {
	   echo 'Nepodařilo e připojit k databázi';
	   echo '<br>';
	   echo 'Popis chyby: ', mysql_error($db) ;
	   exit();
	 }
	 
$cestina = mysql_query( "SET NAMES 'cp1250'",$db_spojeni );
  if (!$cestina)
    {
      echo 'Poslání SQL dotazu se npodařilo';
      echo '<br>';
      echo 'popis chyby: ', mysql_error($db_spojeni);
      exit();
    }



    $vysledek = mysql_query( "SELECT id, seo_url, nazev, menu, obsah, uvodni  FROM web_stranky   " ,$db_spojeni );
  if (!$vysledek)
	 {
	   echo 'Poslání příkazu SQL se nepodařilo';
	   echo '<br>';
	   echo 'popis chyby: ', mysql_error($db_spojeni) ;
	   exit();
	 }

while ($radek = mysql_fetch_array($vysledek))
      {
     if ($url == $radek['seo_url'])
      {
         echo '<div class="h2"><h2><img src=a.gif alt=\"' ,$radek['nazev'], '\"> &nbsp; ' ,$radek['nazev'], '</h2></div>';
            
//tohle bude schovane, ale prihlasovani zatim neni hotovy 
         echo '<form name=obsah action=index.php?url=',$radek['seo_url'],'&akce=update method=POST>
	             <table class=content><tr><td class=td-obsah> Odkaz: <input type=text name=seo_url value=\'',$radek['seo_url'],'\' size=18 maxlength=50 ><br>(bez diakritiky a mezer)</td>
               <td class=td-o>Zobrazí se v menu: </td><td class=td-o><select name=menu value=\'',$radek['menu'],'\'  size=2  ><option value=\'ano\'>ano</option><option value=\'ne\'>ne</option></select></td></tr>
	             <tr><td class=td-obsah>Název: <input type=text name=nazev value=\'',$radek['nazev'],'\' size=18 maxlength=50 ></td>
	             <td class=td-o>Je úvodní: </td><td class=td-o> <select name=uvodni value=\'',$radek['uvodni'],'\'  size=2  ><option value=\'ano\'>ano</option><option value=\'ne\'>ne</option></select></td></tr></table>
	             <table class=content><tr><td class=td-obsah2>Obsah stránky<br><textarea name=obsah rows=9 cols=47 wrap=soft>',$radek['obsah'],'</textarea></tr></td>
	             <tr><td class=td-obsah2><input type=image name=obrazek src=button.gif></tr></td></table>';

//toto uz schovane neni
	       echo '<p class=center >' ,$radek['obsah'], '</p>';

mysql_free_result($vysledek);

       if ($db_spojeni)
   mysql_close($db_spojeni); 


tady mam problem s tim UPDATEM

Kód:
if ($akce == 'update' )
{
$id = $_POST['id'];
$seo_url = $_POST['seo_url'];
$nazev = $_POST['nazev'];
$menu = $_POST['menu'];
$uvodni = $_POST['uvodni'];
$obsah = $_POST['obsah'];

$db_spojeni = mysql_connect("mysql.wz.cz", "xark", "xxxx") or die("Nepodarilo se spojeni s databazi");
$db_select = mysql_select_db('xark', $db_spojeni) or die("Nepodaril se vyber databaze");

$dotaz_exist = mysql_query("SELECT * FROM web_stranky ");

$radek = mysql_num_rows($dotaz_exist);       
if( $radek == $radek['seo_url']) {
$dotaz = mysql_querry( "UPDATE web_stranky SET seo_url='$seo_url', nazev='$nazev', menu='$menu', uvodni='$uvodni', obsah='$obsah' WHERE web_stranky.id='$id' ") or die("akutalizace probehla neuspesne");
}
else {
echo 'aktualizace neprobehla uspesne, radek tabulky s prislusnym id chyby!';
} 
} 

Kajman_
Profil *
Co je tohle za podmínku? Myslíte, že může být vůbec někdy splněna?
if( $radek == $radek['seo_url'])

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: