Софтуерно Инженерство
Loading...
+ Нов въпрос
Hristo_Penchev avatar Hristo_Penchev 388 Точки

[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 SoftUni Team Trainer 6883 Точки

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

0
Hristo_Penchev avatar Hristo_Penchev 388 Точки

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

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

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

0
RoYaL avatar RoYaL SoftUni Team Trainer 6883 Точки

Ми не е правилно да имаш 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 1 Точки

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

0