Ahoj,
potřebuju odesílat formulářem příspěvky s diakritikou a správně se mi odesílají pouze když nastavím enctype="multipart/form-data".
Jenže potom se při první odeslání vždy zobrazí chybová hláška "Method Not Implemented" a až když potom kliknu na refresh, tak už se záznam normálně odešle.
Poradíte, v čem by mohl být problém?
Díky
Divné, nikdy jsem to takto nepotřeboval. multipart/form-data jsem potřeboval akorát na odesílnání obrázků. Není chyba jinde?
Je někde k nahlédnutí kousek kódu, kde to zlobí?
vkládaná hlavička (respektive část):
<?PHP
header("Pragma: no-cache");
header("Cache-control: no-cache, must-revalidate");
header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
formulář:
<form action="" method="post" enctype="multipart/form-data">
<input type="hidden" name="datum" value="<?php echo date("m.d.y H:i:s"); ?>" />
<input type="hidden" name="autor" value="jméno" />
<input type="submit" value="Uložit" />
</form>
odeslání (jen jsem si upravil článke Jakuba Vrány):
if ($_POST) {
// oříznu diakriticku, kódování iso 8859-2
$_POST['message_no_czech']=StrTr($_POST['message'],
'áäčďéěëí?ňôóöŕřšťúůüýžÁÄČĎÉĚËÍĄŇÓÖÔŘŔŠŤÚŮÜÝŽ',
'aacdeeeilnooorrstuuuyzaacdeeelinooorrstuuuyz');
$set = array();
$set["datum"] = "'$_POST[datum]'";
$set["heading"] = "'$_POST[heading]'";
$set["message"] = "'$_POST[message]'";
$set["message_no_czech"] = "'$_POST[message_no_czech]'";
$set["autor"] = "'$_POST[autor]'";
//echo $_POST['message'];
// další položky spolu s případným ošetřením dat
if (isset($_GET["select"])) {
array_walk($set, create_function('&$val, $key', '$val = "$key = $val";'));
$result = mysql_db_query("svi","UPDATE aktuality_new
SET " . implode(", ", $set) . "
WHERE id = '$_REQUEST[select]'
");
} else {
$result = mysql_db_query("svi","INSERT INTO main
(" . implode(", ", array_keys($set)) . ")
VALUES (" . implode(", ", $set) . ")
");
}
if ($result) {
header("Location: aktuality.php?insert=1");
exit;
}
echo "<p><b>Při zpracování došlo k chybě.</b><!-- " . mysql_error() . " --></p>\n";
$row = array_map("stripslashes", $_POST);
} elseif (isset($_GET["select"])) {
$row = mysql_fetch_assoc(mysql_db_query("svi","SELECT * FROM aktuality_new
WHERE id = '$_REQUEST[select]'
"));
} else {
$row = array(); // nastavení výchozích hodnot
podivné, je to někde na netu vystavené? A proč chceš češtinu, když ji pak stejně odčeštíš... No, to není moje starost.
Co to dělá bez toho "multipart/data-form"?
Čí je hláška "Method not implemented"?
ta hláška je ze serveru
je to na
http://lib.natur.cuni.cz/BIBLIO/new/admin/aktuality.php
to odčeštění je jen pro vyhledávání, v db ukládám sloupec s diakritikou a vedle bez
Jestli to neni hlaska odjinud jak z prijimani toho multipart.
Method not implemented je hlaska i pri tom kdyz pouzijes objekt a zavolas metodu, ktera tam neni, treba $obj->blstost();
Zkusil bych spis patrat timhle smerem...
Já trochu zaexperimentoval s kódováním a docela se divím.
Když zkusím stejný skript na wz a na pracovním serveru, tak je výsledek jiný.
Jen jsem si vypsal obsah $_POST. Když nechám kódování iso (na formuláři i na zobrazovací stránce), tak se na wz zobrazí vše v porádku.
Když zkusím totéž na pracovním serveru, tak se data předají jako windows-1250, bez ohledu na meta tag v hlavičce.
Zkusím se poptat u správce serveru, moc to nechápu.
Ha, už to mám. Na serveru je defaultně nastavené windows-1250, ale databáze je v iso. Takže to posílám normálně jako text/html a před uložením to překóduju.
Každopádně díky!