Loading...
Hristo_Penchev avatar Hristo_Penchev 389 Точки

[Lab] Web Security and Database Drivers

Колеги, отварям тази тема, за да дискутираме лаба. Ще постна и моя въпрос. На пета задача, в частта, в която трябва да се направи форма за превода на всеки таг от английски на български, да сложим id-то на всеки таг като id на текстовото поле и да подаваме новите данни към базата, срещнах затруднение. Не съм сигурен как да идентифицирам формата по id. Правя следното

foreach ($translations as $translation) { ?>

    <form method="POST">
        <div class="source-translation"></div>
            <?= $translation['text_'.Localization::$LANG_DEFAULT]; ?>
        <br/>
        <textarea name="<?=$translation['id'] ?>">
            <?=$translation['text_bg'] ?>
        </textarea>
        <input type="submit" value="Save"/>
    </form>
    <?php
}
    if (isset($_POST[???])) {
        echo "ТЕСТ";
    }

Как да вкарам всичките айдита в условната конструкция? Намерих начин, който работи, но ми се струва доста дървен. Сложих условната конструкция в самия foreach. Нямам идея обаче дали е правилен подход. Споделете как вие сте го направили.

foreach ($translations as $translation) { ?>
.................................................    
    if (isset($_POST[$translation['id']])) {
        echo $translation['id'];
    }
}
Тагове:
0
PHP Web Development Basics
RoYaL avatar RoYaL Trainer 6849 Точки

Изначало ти е грешна идеята да рендираш нова форма за всеки транслейшън, която да си има сейв бутон. Ако ще го правиш така, можеш да събмитнеш само по един превод наведнъж, което пък и значително те улеснява. Вместо да слагаш в името на полето - ид-то, просто си кръсти полето по някакъв удобен за теб начин и сложи в стойността ид-то.

0
Hristo_Penchev avatar Hristo_Penchev 389 Точки

Не те разбрах. Трябва да сложим всички текстови полета с тагове в една форма и да я събмитнем нацяло ли? Доколко е правилно ако ъпдейтнем например един израз, към базата да подаваме ъпдейт на всички изрази? Ако имаме 100 000 думи?

Вместо да слагаш в името на полето - ид-то, просто си кръсти полето по някакъв удобен за теб начин и сложи в стойността ид-то.

Това съвсем не го разбрах.

0
RoYaL avatar RoYaL Trainer 6849 Точки

Ми не е правилно да имаш 100,000 фийлда, да. Но в такъв разширене кейз ще имаш странициране. Например по 10 или 20 фийлда на страница. :)

0
Den1eD avatar Den1eD 5 Точки

Използвам темата ви за да попитам как може да се вземе Ид-то на text_bg чрез $_POST["text_bg"]. 

Реших задачата, без да взимам ид-тата понеже знам, че ид-тата никога няма да се променят т.е винаги са 1 и 2, но знам че това е доста грешен подход.

Ако някой може да ми каже как става това ще съм му много благодарен.

Ето ми го кода


<form action="" method="post">
<?php foreach($translatons as $translation): ?>
<div class="source-translation">
    <?= $translation['text_en']?>
</div>
    <textarea name="text_bg[<?=$translation['id']?>]"><?= $translation['text_bg']?></textarea>
<?php endforeach; ?>
    </br>
    <input type="submit" value="Save">
</form>

<?php
    if(isset($_POST['text_bg'])) {
        $result = array_values($_POST['text_bg']);

        for($i = 0; $i < count($result); $i++) {
            $id = $i + 1;
            var_dump($result[$i]);
            $query = "UPDATE translations
                      SET text_bg = '$result[$i]' WHERE id = '$id'";
            $db->query($query);
        }
        header("Location: admin.php");
    }
?>

 

0
23/09/2015 17:07:17
kirill2ll avatar kirill2ll 4 Точки

Здравейте, някой може ли да качи решението си на лаба?

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.