Ahojda všichni.
Jsem z toho už trotl. Buď něco prostě nevidím, nebo nebo se dějou zázraky.
V Mysql mám tabulku poptavka, které jsou mimo jiných sloupce id (int) a podklady (text).
Kód:
$nazev_souboru = "udaje-klienta-".utf2ascii($_POST["prijmeni"]).".pdf";
$cesta = "soubory/".$_POST["nazev_slozka"]."/podklady/$nazev_souboru";
// Vygenerování souboru s údaji klienta
include "php/pdf/udaje.php";
// Kontrola zda je buňka podklady prázdná
$soubory = mysql_result(mysql_query("SELECT podklady FROM poptavka WHERE id='".$_POST["id"]."'"),0);
if($soubory!="") {
// Není prázdná
if(!preg_match("~$nazev_souboru~",$soubory)) {
// není obsažen v záznamu - vkládá se
if(copy("img/ikony/pdf.png","soubory/".$_POST["nazev_slozka"]."/podklady/nahledy/nahl-".SubStr($nazev_souboru,0,-4).".png")) {
// Aktualizace záznamu
$nazev_souboru = ",".$nazev_souboru;
mysql_query("UPDATE poptavka SET podklady = concat(podklady, '$nazev_souboru') WHERE id='".$_POST["id"]."'");
echo VypisChybuMysql();
}
}
} else {
// Je prázdná
if(copy("img/ikony/pdf.png","soubory/".$_POST["nazev_slozka"]."/podklady/nahledy/nahl-".SubStr($nazev_souboru,0,-4).".png")) {
$sql = "UPDATE poptavka SET podklady = '$nazev_souboru' WHERE id = '".$_POST["id"]."'";
//echo $sql."<br />";
mysql_query($sql);
echo VypisChybuMysql();
}
}
Do db se však zapíše v obou případech řetězec zkrácený o jeden poslední znak a to bez ohledu na délku vkládaného řetězce - při 10 i 500 znacích se odstraní pouze poslední znak.
Ta tabulka už nějakou dobu běží a zapisujou se tam bezchybně poměrně dlouhý seznamy příloh. Datový typ text je nastaven správně, kódování utf8_unicode_ci, omezení žádné.
Blbne to pouze v úryvku, který jsem teď přidával kvůli generování dalších pdfek.
Ve scriptu to mám přesně podle předlohy.
Všechno kontroluji neustále už druhý den a fakt nevím čím by to mohlo být.
Ale něčím to je a bude to mezi židlí a klávesnicí.
Zápis mysql nevrací žádnou chybu.
Díky za každou radu.