Autor Zpráva
Vopiatos
Profil
Ahoj mam tento kod na vypis clanku kterym zobrazuji text ve formulari a potrebuju udelat Update
zkousel jsem ruzne editace a scripty ale nerozbehl jsem to
muze mi nekdo poradit dekuji.

<form action="add.php">
<textarea name="text" style="width:80%">
<?
require("db.php");
$pripoj=MySQL_Connect($SQL_Server, $SQL_Uzivatel, $SQL_Heslo) or Die(MySQL_Error());
MySQL_Select_Db($Databaze) or Die(MySQL_Error());

$clanky = mysql_query("SELECT * FROM novinky");

$dotaz="select * from novinky where text='".$_GET["text"]."'";
//vytvooení sql dotazu
$vysledek = MySQL_Query($dotaz); // provedení sql dotazu

while($clanek = mysql_fetch_array($vysledek)){
$text=$clanek["text"];


echo '<div class="clnazev_vypis"><span style="font:bold 18px verdana;"><center>' . $clanek["nazev"] . '</center><br></span></div>';
echo "<div class='text_vypis'>".$text."</div>";
}
?>
</textarea>
<input type="submit" value="odeslat" />

</form>

Moderátor panther: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
Radek Cvek
Profil
skript se musí volat add.php?id=1 apod...
<form action="add.php" method="post">
<?php
  if (isset($_POST["id"])) MySQL_Query("UPDATE novinky SET nazev='".$_POST["nazev"]."', text='".$_POST["text"]."' WHERE id='".$_POST["id"]."';");

  require("db.php");
  $pripoj=MySQL_Connect($SQL_Server, $SQL_Uzivatel, $SQL_Heslo) or Die(MySQL_Error());
  MySQL_Select_Db($Databaze) or Die(MySQL_Error());

  $dotaz="select * from novinky where id='".$_GET["id"]."'";
  //vytvooení sql dotazu
  $vysledek = MySQL_Query($dotaz); // provedení sql dotazu

  while($clanek = mysql_fetch_array($vysledek)){
    $text=$clanek["text"];

    echo '<div class="clnazev_vypis"><span style="font:bold 18px verdana;"><input type="text" name="nazev" value="' . $clanek["nazev"] . '" /><br></span></div>';
    echo "<div class='text_vypis'><textarea name='text'>".$text."</textarea></div>";
    echo '<input type="hidden" name="id" value="' . $_GET["id"] . '" />';
    }
?>

<input type="submit" value="odeslat" />

</form>
Vopiatos
Profil
aha a jak mam udelat add.php?id=1 zkousel jsem to a nejak mi to nejde

jinak samotnej script jsem pouzil a vlozil do edit.php.
ze stranky edituj_web.php zobrazuji edit.php pod svím id asi takto <a href="edit.php?id=' . $clanek["id"] . '">Edituj</a>

a zobrazi se form i s udaji pod svym id ale nejde mi to upravit porad to pise novy a novy clanky

nejspis jak si tvrdil "skript se musí volat add.php?id=1 apod... " zkousel jsem zadat
<form action=""add.php?id=' . $clanek["id"] . '"" method="post"> - spatna syntaxe a nevim jak z toho udelat odkaz na add.php?id=neco
Vopiatos
Profil
a co soubor add.php
obsahuje:
<?
if($text==""):
echo"Jeste vyplnte text.<br><a href=index.php?p=zapsat?pm=write>Zpìt</a>";
else:

require("db.php");
$conn=MySQL_Connect($SQL_Server, $SQL_Uzivatel, $SQL_Heslo) or Die(MySQL_Error());
MySQL_Select_Db($Databaze) or Die(MySQL_Error());
$pridejhotam = "INSERT INTO novinky VALUES ('$id', '$nazev', '$text')";

mysql_query("$pridejhotam");

mySQL_Close($conn);

header ("Location: ddd.php?p=wrote&pm=write");
endif;
?>
a to se mizda ze se musi upravit nebot to vklada do novinek
takze mam ten script update vlozit do add.php?
nebo staci prohodit misto insert .... Update ....
Radek Cvek
Profil
Skript add.php?id=1 zobrazí formulář, kam se načtou data z tabulky novinky - sloupce nazev a text pro id=1 - pokud se ta data ve formuláři změní a odešle se to, tak to změní i v Db .
zkousel jsem zadat <form action=""add.php?id=' . $clanek["id"] . '"" method="post">
zkus: echo '<form action="add.php?id=' . $clanek["id"] . '" method="post">';
Vopiatos
Profil
jsem y toho jelen.Tak od zacatku a jednodusejc.

mam soubor editace.php kde je vlozen

<form action="uloz_editace.php" method="post">
<textarea name="text" style="width:80%">
<?
require("db.php");
$pripoj=MySQL_Connect($SQL_Server, $SQL_Uzivatel, $SQL_Heslo) or Die(MySQL_Error());
MySQL_Select_Db($Databaze) or Die(MySQL_Error());
$clanky = mysql_query("SELECT * FROM novinky");

$dotaz="SELECT * FROM novinky ORDER BY id DESC";
//vytvooení sql dotazu
$vysledek = MySQL_Query($dotaz); // provedení sql dotazu

while($clanek = mysql_fetch_array($vysledek)){
$text=$clanek["text"];

echo "$text";

}
?>


</textarea>
<input type="submit" value="odeslat" />

</form>


Toto mi vypise do formulare obsah tabulky z DB


A tento soubor uloz_editace.php Aktualizuje (updatuje) DB

<?
 if ($text==""):
echo"Jeste vyplnte text.<br><a href=index.php?p=zapsat?pm=write>Zpìt</a>";
else:

require("db.php");
$conn=MySQL_Connect($SQL_Server, $SQL_Uzivatel, $SQL_Heslo) or Die(MySQL_Error());
MySQL_Select_Db($Databaze) or Die(MySQL_Error());

$pridejhotam = "UPDATE novinky SET text='".$_POST["text"]."' where id='".$_GET["id"]."'";

mysql_query("$pridejhotam");

mySQL_Close($conn);

header ("Location: index.php?p=wrote&pm=write");
endif;
?>


Update funguje jen kdyz je misto
id='".$_GET["id"]."'";
toto
id='1'";


a toto mi dela neplechu, potrebuji updatovat podle daneho id a nevim jak na to zkousel jsem $_POST i $_REQUEST ale nic se nedeje je pravda za tomuto moc nerozumim ale jsem uz skoro u konce jen to ID

prosim poradte urcite je to prkotina.

Jinak diky vsem a take Radku Cvekovi nakopl me spravnym smerem tak jeste jednou dik

a prosim kdyz tak o pomoc s tim ID
Radek Cvek
Profil
připadá mi zvláštní, že se do formuláře vypisují všechny články, měl by se logicky měnit pouze jeden a znát jeho id - ani nevím jaké id předat
co se týče pouze předávání id tak z editace.php do uloz_editace.php, tak v editace.php:
//nevím odkud brát to id - mělo by to být buď z databáze nebo z url 
//z databáze $id=$clanek["text"];
//z url $id=$_GET["text"];
<form action="uloz_editace.php" method="get">
...
<input type="hidden" name="id" value="<? echo $id; ?>" />
<input type="submit" value="odeslat" />

a v uloz_editace.php změnit $_POST["text"] na $_GET["text"]
Frozen
Profil
Ahoj, jestli to dobře chápu tak chceš mít možnost editace všech článků před sebou a ne jen jeden.
Musíš svému scriptu předat nějak info o tom jaké id má tvůj článek. Zkus to takhle.

<form action="uloz_editace.php" method="post">
<?
require("db.php");
$pripoj=MySQL_Connect($SQL_Server, $SQL_Uzivatel, $SQL_Heslo) or Die(MySQL_Error());
MySQL_Select_Db($Databaze) or Die(MySQL_Error());
$clanky = mysql_query("SELECT * FROM novinky");
$dotaz="SELECT * FROM novinky ORDER BY id DESC";
//vytvooení sql dotazu
$vysledek = MySQL_Query($dotaz); // provedení sql dotazu


while($clanek = mysql_fetch_array($vysledek)){
$text=$clanek["text"];

echo "<textarea name=\"text_".$clanek['id']."\" style=\"width:80%;\">"; // přidáš ID k postu s názvem text_ (podtržítko slouží jako rozdělovač)

echo "$text";


echo "</textarea>";
//ps. pro každý článek se vytvoří textarea, jinak asi nepředáš id článku
}
?>


<input type="submit" value="odeslat" />

</form>


A tento soubor uloz_editace.php Aktualizuje (updatuje) DB
Dále musíš zjistit co se vlastně odeslalo a to updatovat.


<?

/* 
 if ($text==""):
echo"Jeste vyplnte text.<br><a href=index.php?p=zapsat?pm=write>Zpìt</a>";
else:
*/

require("db.php");
$conn=MySQL_Connect($SQL_Server, $SQL_Uzivatel, $SQL_Heslo) or Die(MySQL_Error());
MySQL_Select_Db($Databaze) or Die(MySQL_Error());

foreach ($_POST as $key => $value){ // POST je vlastně pole tak proč si s ním nepohrát ;-)
  $clanek_k_editaci = ereg("text_", $key); // pokud POST obsahuje "text_"
  
  if ($clanek_k_editaci){
    $zjisti_id = explode("_",$key); // to je ta značka o které jsem mluvil
    $id = $zjisti_id[1];
    $text = $value;
    
    $pridejhotam = "UPDATE novinky SET text='$text' where id='$id' ";
    mysql_query("$pridejhotam");
    }
}



mySQL_Close($conn);

header ("Location: index.php?p=wrote&pm=write");
//endif;
?>


nevýhoda toho je, že se updatujou všechny články i když se v něm nic nezmění. Snad tam nemam chybu ;-).
Vopiatos
Profil
Super parada zkusil jsem ten zpusob od Radka a to je presne co jsem potreboval takže velice děkuji.
Na postup Frozena jsem se nedostal ale take dekuji.
Moc jste mi pomohli

Díky za toto FORUM :-)

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0