Autor Zpráva
qweewq
Profil *
Ahoj,
potřeboval bych prosím vás radu:
strukturu webu mám takovou:

....
.....
// Zde mám includované soubory s deklarovanými funkcemi
if (!empty($_POST)){
  
bez_diakritiky($text); // Pokud zavolám funkci deklarovanou výše = Fatal error: Call to undefined function bez_DK()
   ...
  //Zde zpracovávám formuláře
}
if (empty($_POST)){
....
....
// Zde mám obsah webu s formuláři
}

Nechápu proč nemůžu zavolat fci ....(vše je v jednom souboru index.php)
Děkuji za pomoc
ShiraNai7
Profil
Funkce bez_DK neexistuje... urcite mas spravne nazev?
Tori
Profil
qweewq:
Určitě se includuje skript s funkcemi? To jsou dvě funkce (bez_diakritiky a bez_DK), nebo jste si to jen zkrátil při psaní?
Alphard
Profil
Není tam překlep? Dejte sem delší kód.
qweewq
Profil *
Omlouvám se je to jedna a ta samá funkce....

// definice funkce pred  if (!empty($_POST))
function bez_DK($text){
        $prevodni_tabulka = Array('ä'=>'a','Ä'=>'A','á'=>'a','Á'=>'A','à'=>'a','À'=>'A','ã'=>'a','Ã'=>'A','â'=>'a','Â'=>'A','č'=>'c','Č'=>'C','ć'=>'c','Ć'=>'C','ď'=>'d','Ď'=>'D','ě'=>'e','Ě'=>'E','é'=>'e','É'=>'E','ë'=>'e','Ë'=>'E','è'=>'e','È'=>'E','ê'=>'e','Ê'=>'E','í'=>'i','Í'=>'I','ï'=>'i','Ï'=>'I','ì'=>'i','Ì'=>'I','î'=>'i','Î'=>'I','ľ'=>'l','Ľ'=>'L','ĺ'=>'l','Ĺ'=>'L','ń'=>'n','Ń'=>'N','ň'=>'n','Ň'=>'N','ñ'=>'n','Ñ'=>'N','ó'=>'o','Ó'=>'O','ö'=>'o','Ö'=>'O','ô'=>'o','Ô'=>'O','ò'=>'o','Ò'=>'O','õ'=>'o','Õ'=>'O','ő'=>'o','Ő'=>'O','ř'=>'r','Ř'=>'R','ŕ'=>'r','Ŕ'=>'R','š'=>'s','Š'=>'S','ś'=>'s','Ś'=>'S','ť'=>'t','Ť'=>'T','ú'=>'u','Ú'=>'U','ů'=>'u','Ů'=>'U','ü'=>'u','Ü'=>'U','ù'=>'u','Ù'=>'U','ũ'=>'u','Ũ'=>'U','û'=>'u','Û'=>'U','ý'=>'y','Ý'=>'Y','ž'=>'z','Ž'=>'Z','ź'=>'z','Ź'=>'Z');
        return $text = strtr($text, $prevodni_tabulka);
}

// Zpracování formuláře => volání fce

bez_DK($_POST["name_kategory"]);  // $_POST["name_kategory"] => textový řetězec předaný z formuláře. Jinak pokud mám deklarovanou fci ve scriptu kde zpracovávám formulář tak to de....
// Ještě bych podotknul že ve zpracování formuláře volám i jiné fce u kterých se nevyskytne žádný takový problém



Edit: $bez_diakritiky = bez_DK($_POST["name_kategory"]);
qweewq
Profil *
Nevíte někdo v čem by sem mohl dělat chybu? Kód jsem si prošel už asi stokrát, ale vše mi přišlo v pořádku
Davex
Profil
Není funkce bez_DK() deklarována uvnitř jiné funkce nebo v bloku kódu, který se nevykonává, takže pak není dostupná v globálním kontextu?

Toto třeba nebude fungovat:

<?php

if (false) {
  function func()
  {
    return 'abc';
  }
} else {
  echo func();
}
qweewq
Profil *
Je to udělané takhle:

Toto je index.php :
require ("deklarece_funkci.php"); // Žádná z fcí není vnořená. V tomto souboru je deklarována funkce bez_DK($text), definice funkce viz výše
if (!empty($_POST)){         //V této podmínce zpracovávám formuláře  => Obsah této podmínky je ještě vložen v souboru zpracuj.php který je na místo této podmínky includován !!!!

      if (isset($_POST["now_kategory"]) && $_POST["now_kategory"] == "Vytvorit kategorii") {
            if ($_POST["name_kategory"]!=="") {
              $name_s_diakritikou = ucfirst($_POST["name_kategory"]);
              $name_bez_diakritiky = bez_DK($_POST["name_kategory"]);   // Zde volám fci u které php píše chybu: Fatal error: Call to undefined function bez_DK()

              $result = mysql_query("INSERT INTO names_kategories (name_s_dk, name_bez_dk) VALUES ('$name_s_diakritikou','$name_bez_diakritiky')",$spojeni);

              if (mkdir ($adresar_kategorie.$name_bez_diakritiky, 777) !== FALSE && $result !== FALSE) {
                $hlaska = "Kategorie úspěšně vytvořena.";
                presmerovani($hlaska);
              } else {
                $hlaska = "Omlouváme se kategorii se nepodařilo vytvořit";
                presmerovani($hlaska);
              }
            } else {
               $hlaska = "Kategorii se nepodařilo vytvořit. Nezadali jste jméno nové kategorie.";
               presmerovani($hlaska);
            }
         }
   ...
}

if (empty($_POST)){

// Zde mám obsah webu s formuláři
....
}


Opravdu už nevím čím to může být....

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: