Autor Zpráva
negr
Profil
Zdravím prosím o radu kde je chyba :-/ Udělal jsem si script na editaci novinek (snad dobře :D ) a když ji chci upravit tak to všechno proběhne akorat se nic nezmění a ani v db :-/ tady je kód:

<?php

 include "header.php";
include "config.php";

    $id_clanku = $_GET["id_clanku"];

    if(isset($_POST['submit'])) {

       $predmet = $_POST['predmet'];
      $uvod = $_POST['uvod'];
      $zprava = $_POST['zprava'];
      $result = mysql_query("UPDATE clanky SET predmet='$predmet', uvod='$uvod', zprava='$zprava' WHERE id='$id_clanku', ;");
      echo "<b>Novinka byla upravena!<br>Nyní budeš za (4) Sekundy přesměrován na hlavní stránku!";
      echo "<meta http-equiv=Refresh content=4;url=index.php>";
      
 } elseif($id_clanku) {

         $result = mysql_query("SELECT * FROM clanky WHERE id='$id_clanku' ;");
        while($myrow = mysql_fetch_assoc($result)) {
                $id_clanku = $myrow["id"];
                $predmet = $myrow["predmet"];
                $uvod = $myrow["uvod"];
                $zprava = $myrow["zprava"];
?>
<br>
<h3>Upravit Novinku</h3>

 <form method="post" action="<?php echo $PHP_SELF ?>">
<input type="hidden" name="id" value="<? echo $id_clanku; ?>">

 Předmět: <input name="predmet" size="40" maxlength="255" value="<? echo $predmet; ?>">
<br>
Úvod: <textarea name="uvod"  rows="7" cols="30"><? echo $uvod; ?></textarea>
<br>
Zpráva: <textarea name="zprava" rows="7" cols="30"><? echo $zprava; ?></textarea>
<br>
<input type="submit" name="submit" value="Upravit novinku!">
</form>
<?
              }//konec while

   }//konec elseif

 include "footer.php";
?>
Taps
Profil
negr:
co píše mysql_error ?
$result = mysql_query("UPDATE clanky SET predmet='$predmet', uvod='$uvod', zprava='$zprava' WHERE id='$id_clanku'") or die (mysql_error());
negr
Profil
píše tohle:
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 '' at line 1
Bertram
Profil
Ahoj, ty středníky tam nepatří a int, což $id_clanku asi je, do apostrofů dávat také nemusíš.
$result = mysql_query("UPDATE clanky SET predmet='$predmet', uvod='$uvod', zprava='$zprava' WHERE id=$id_clanku");
$result = mysql_query("SELECT * FROM clanky WHERE id=$id_clanku");
Upravil jsi i SQL dotaz jak poradil Taps, nebo jsi jen dopsal kód chybového hlášení?
Ugo
Profil
$result = mysql_query("UPDATE clanky SET predmet='$predmet', uvod='$uvod', zprava='$zprava' WHERE id='$id_clanku'");
negr
Profil
no tak středníky jsou pryč a hláška nikde, ale to ovšem nemění nic na tom že mi to nemění obsah novinky v db ani na webu :-/
nemeja
Profil
Zkus si vypsat $uvod, $zprava zda ti posílaj nějaké údaje,. Máš zadané správné názvy sloupců? zkus kdyžtak napsat sloupec='".$promenna."'

// ne máš tam chybu, to mysql_query(...) nesmíš mít v proměnné nech tam jen
mysql_query("UPDATE clanky SET predmet='$predmet', uvod='$uvod', zprava='$zprava' WHERE id='$id_clanku'");
Bertram
Profil
negr:
nemění obsah novinky v db
Zatím byla zmínka jen o tabulce clanky, myslel jsi, že se ta změna neprojeví v ní?
negr
Profil
Bertram:
Zatím byla zmínka jen o tabulce clanky, myslel jsi, že se ta změna neprojeví v ní?
no jo...jsou to články a někdy tomu řeknu novinka/y tak jsem se špatně vyslovil :-/

nemeja:
mysql_query(...) nesmíš mít v proměnné
oddělal jsem proměnnou a furt nic :-/ , vypíše mi predmet, uvod i zpravu jen ten update mi nejede :-/
Bertram
Profil
negr:
Docela dobře si to můžeš ověřit tak, že z UPDATE uděláš SELECT a musí se ti vypsat záznam, který chceš editovat. A pokud potom po příkazu UPDATE nedojde ke změně, tak předáváš stejný obsah, který je už v db uložen.
negr
Profil
ještě mě napadlo tohle :-) a funguje to tak na půl :D dal jsem na začátek thole:
   $dotaz = mysql_query("SELECT id FROM clanky");
              while($zaznam = mysql_fetch_array($dotaz)){
                $id_clanku = $zaznam["id"];
              }
a jde to měnit ale jenom u posledního článku a když tam přidám WHERE id=$id_clanku tak to zase nefunguje tak já už nevím :-/
Bertram
Profil
Nevím, jestli jsi zkoušel #10, ale možná v $id_clanku není to co tam má být.
Také bych na to id s $_GET použil toto:
$id_clanku = intval($_GET["id_clanku"]);
negr
Profil
#10 jsem udělal a vypsalo mi to co jsem změnil, ale v db se to nezměnilo ani na webu jen v tom výpisu což je logické :D
$id_clanku = intval($_GET["id_clanku"]); to taky nepomohlo :-/
To je zoufalé nebo spíš já jsem zoufalý :-/
Asi to pak zkusím někdy přepsat znova ale pořád nevím kde je chyba, takže nevím co tam budu přepisovat :-(
Taps
Profil
negr:
zkus toto
$id_clanku = intval($_GET["id"]); 
Zdá se mi, že problém je zcela někde jinde
Bertram
Profil
negr:
#10 jsem udělal a vypsalo mi to co jsem změnil, ale v db se to nezměnilo ani na webu jen v tom výpisu což je logické :D

To jsme se nepochopili :)
pokud ti :
mysql_query("SELECT seznam_sloupců FROM clanky WHERE id=$id_clanku");
vrátí jeden záznam, a to ten, který hodláš editovat, tak musí update se stejnou WHERE podmínkou fungovat také.
Ještě poddotaz, je sloupec id autoincrement?
jenikkozak
Profil
Taps:
$id_clanku = intval($_GET["id"]);
Myslíš $_POST["id"], že?
Z adresy se dá získat (jestli vůbec) $_GET["id_clanku"].
negr
Profil
už jsem to opravil :-) chyba byla v tom $id_clanku měl jsem to všude a v update jsem měl mít jen $id a ještě ve formuláři
jinak děkuji všem za odpovědi a za to že chtěli pomoct :-)
Moc díky.

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