Autor Zpráva
tomas2245
Profil
môže tento kód správne fungovať? mám na mysli ten hrubo zvýraznený:
či to môže byť takto definované na priamo..
$tovar = array();
    $klucik = "";

    foreach($_POST as $kluc => $obsah) {
        if (strpos($kluc, 'tovar) === 0) {
        if(!empty($_POST[$kluc])){
            $klucik = substr($kluc, 5);
            $klucik = str_replace("_", ".", $klucik);
            $klucik = mysqli_real_escape_string($pripoj,$klucik);

    mysqli_query($pripoj,"UPDATE tabulka SET pocet='$obsah' WHERE id='$klucik'");
    header("location: statistika.php?hlaska=2");
            }
        }
    }
    exit();
Taps
Profil
tomas2245:
ono je lepší jako id zadávat celočíselné hodnoty bez desetinných míst.
tomas2245
Profil
Taps:
okej, diky :)
tomas2245
Profil
ešte by som potreboval pomôcť s jedným kódom:
mám proste veľa inputov: <input type="text" name="tovar1"> (každý má svoje id...: tovar"1",tovar"2...")
potrebujem aby sa pri odoslaní objednávky objavila rekapitulácia...meno alebo priezvisko... mi vypíše normálne zavolaním funkcie [@meno...] ale neviem spojazdniť aby sa mi aj tie inputy tovarov zobrazili...

tu je problémový kód:

    $tovary = array();
    $_SESSION["tovary"] = $tovary;
    $klucik = "";

    foreach($_SESSION as $kluc => $obsah) {
        if (strpos($kluc, 'tovar') === 0) {
        if(!empty($_SESSION[$kluc])){
            $klucik = substr($kluc, 5);//dame prec zaciatok 'tovar'
        }
        }
    }

if($_GET['hlaska'] == 1){$hlaska='[@meno] <br> [@priezvisko] <br> [@tovary]';}

$vypis->set ("tovary", $tovary);
$vypis->set ("meno", $meno);
$vypis->set ("priezvisko", $priezvisko);

echo $vypis->output();

volám potom funkciu [@tovary] ale na stránke mi to vypíše len Array
Keeehi
Profil
Musíš upravit metodu output třídy z které je vytvořený objekt v proměnné $vypis. Když nahrazuješ v textu, nemůžeš slepě nahrazovat čímkoli ti přijde pod ruku. Předpokládám, že v té metodě máš někde něco ve stylu
str_replace($co, $cim, $kde)
upravil bych to na
str_replace($co, $this->toString($cim), $kde)
a di třídy přidal protected metodu toString
protected function toString($input) {
    if(is_array($input)) {
        return print_r($input, true);
    }
    return (str)$input;
}

To formátování pole si samozřejmě můžeš změnit dle libosti, případně přidat převod dalších typů.
tomas2245
Profil
Keeehi:

nerozumiem ako ju mám upraviť tu output triedu? prepáč, že nechápem ale som v tomto amatér..

a áno mal som tam tak to str_replace napísané a upravil som to podľa teba...
Keeehi
Profil
tomas2245:
nerozumiem ako ju mám upraviť tu output triedu?
Output není třída ale metoda nějaké třídy. Pokud jsi upravoval to str_replace, pak jsi upravoval právě metodu output v té třídě. Jak se ta třída jmenuje ti nemůžu říct, protože z tebou dodaného kódu to nejde poznat. Ale ty víš která to je, když v ní upravuješ kód.
Co se přidání metody toString týče, tak ten můj kód jen nakopíruješ za metodu output.
tomas2245
Profil
lenže ja vôbec netuším aké hodnoty majú byť v tom str_replace..v tom bude hlavne pes zakopaný..ten kód nie je totižto môj..
Keeehi
Profil
tomas2245:
lenže ja vôbec netuším aké hodnoty majú byť v tom str_replace..v tom bude hlavne pes zakopaný..ten kód nie je totižto môj..
No, evidentně netušíš. Tahle část kódu vůbec nevypadá, že by s tím měla cokoliv společného. Upravil jsi bohužel něco špatného, takže jsi to spíše ještě více rozbil. Takže to prosím vrať do původního stavu.

Zkusím to ještě jednou.
Za kód v [#4] vlož
echo get_class($vypis);
To ti vypíše jméno třídy. Tu třídu pak musíš někde najít.
Začátek bude nejspíše vypadat
class JmenoTridy ...
Někde v této třídě bude snad definována metoda output. Začátek bude vypadat nějak takto
public function output() {
tak sem pak nakopíruj její tělo.
tomas2245
Profil
Keeehi:

tu je ten public function output() {

<?php

        public function output() {
        
            if (!file_exists($this->file)) {
                return "Error loading template file ($this->file).<br />";
            }
            $output = file_get_contents($this->file);
            
            foreach ($this->values as $key => $value) {
                $tagToReplace = "[@$key]";
                $output = str_replace($tagToReplace, $value, $output);
            }

            return $output;
        }
Keeehi
Profil
No výborně, tady je potřeba upravit ten str_replace a přidat tu druhou metodu.
        public function output() {
        
            if (!file_exists($this->file)) {
                return "Error loading template file ($this->file).<br />";
            }
            $output = file_get_contents($this->file);
            
            foreach ($this->values as $key => $value) {
                $tagToReplace = "[@$key]";
                $output = str_replace($tagToReplace, $this->toString($value), $output);
            }
 
            return $output;
        }

        protected function toString($input) {
            if(is_array($input)) {
                return print_r($input, true);
            }
            return (str)$input;
        }
tomas2245
Profil
Keeehi:

HTTP ERROR 500

toto mi píše keď som to tam pridal...nenačíta mi vôbec stránku..je to dobre opísané..
Keeehi
Profil
tomas2245:
Ta úprava by tomu neměla uškodit. Ovšem je pravda, že to formátování by asi nemělo být zrovna v té třídě. Co no se těžko radí takhle na dálku, když člověk nevidí celý návrh.

Takže, velmi prosté řešení. Vrať vše do původního stavu. A úpravu udělej tady
if($_GET['hlaska'] == 1){$hlaska='[@meno] <br> [@priezvisko] <br> [@tovary]';}
 
$vypis->set ("tovary", print_r($tovary, true));
$vypis->set ("meno", $meno);
...
tomas2245
Profil
Keeehi:

nefunguje to aj tak, podľa môjho názoru by bolo najlepšie keby som ťa kontaktoval na mail, vidím ho u teba v profile..a poslal ti celý ten súbor nech máš lepšiu predstavu ako to vypadá, čo ti nato, alebo môžem tu proste poslať celý obsah súbora, ako som to robil doteraz, čo bude pre teba lepšie?
Keeehi
Profil
tomas2245:
nefunguje to aj tak,
To jsi to evidentně nevrátil do původního stavu. Nejdříve to vrať tak, jak ti bylo dnes ráno/včera večer, kdy to místo výrobků posílalo Array. A pak proveď úpravu podle řádku 3 v [#13]. Když se úspěšně dostaneš do původního stavu, tato úprava by to neměla nijak rozbít.
tomas2245
Profil
Keeehi:
napisal som ti na tvoj mail uz som na nieco prisiel, je to zdlhave na vysvetlenie
tomas2245
Profil
už som to vyriešil, môžete lock tému :) a Keeehi, ešte raz ďakujem za snahu mi pomôcť :)

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: