Написал скрипт который достает каждую строчку и вставляет в Input

АнимиА

Новичок
Здравствуйте уважаемые. Возникла кое какая проблема и не знаю как ее можно решить.В базе данных у меня находится таблица в ней только id и text. Написал скрипт который достает каждую строчку и вставляет в Input, но проблема в том я не знаю как менять содержимое одной или двух строчек вот мой код:

<form role="form" action="?action=update" method="post">
<div class="form-group">
<input type="text" class="form-control" name="text" value="<?php echo $words->getWords(1); ?>">
<input type="text" class="form-control" name="text" value="<?php echo $words->getWords(2) ?>">
<input type="hidden" name="id" value="<?php echo $words->getId(1)?>">
</div>
<button type="submit" class="btn btn-primary" name="update">изменить</button>
</form>

а вот класс который выполняет все это:

public function __construct($mode = 0) {
if ($mode == 1) {
$action = $_GET['action'];
if ($action == 'update') {
$this->update($id);
}
}
}

public function update($id) {
if (!isset($_POST['update'])) {
return;
} else {
$text = $_POST['text'];
if (isset($_POST['id'])) {
$id = $_POST['id'];
}
$sql = "UPDATE `test`.`words` SET `text` = '$text' WHERE id = '$id'";
echo $sql;
db::createSQL($sql);
}
}

public function getWords($id) {
$res = db::createSQL('SELECT * FROM `words` where id = ' . $id);
$row = mysqli_fetch_array($res);
echo $row['text'];
}

public function getId($id) {
$res = db::createSQL('SELECT id FROM `words` where id = ' . $id);
$row = mysqli_fetch_array($res);
echo $row['id'];
}
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Вурдалак, а остальные методы, которые делают mysqli_fetch_array без цикла тебя не смущают?)

АнимиА, книгу по php срочно! Читать, разбираться, потом писать.
 

Вурдалак

Продвинутый новичок
c0dex, не, ты как-то не в тему это сейчас сказал, весь юмор попортил. Нет, не смущает, потому что у него запрос по primary key. А вот доставать id по id — это интересно.
 

fixxxer

К.О.
Партнер клуба
ну......... зато честно признался

АнимиА, отправляй как есть, на работу тебя все равно никто не возьмет, а так хоть поржать есть чо.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
АнимиА, то, что ты признался - это похвально. Вопрос только в том, что когда тебе дадут работу, ты тоже сюда прибежишь спрашивать?

PS: Пока искать работу тебе рано с такими знаниями, надо много читать/писать на нем, чтобы не было такого глупого кода. @Вурдалак указал тебе на самый абсурдный кусок.
 

АнимиА

Новичок
ну......... зато честно признался

АнимиА, отправляй как есть, на работу тебя все равно никто не возьмет, а так хоть поржать есть чо.
Было бы что отправлять. Я здесь зарегался, чтобы мне помогли с этой проблемой,я конечно понимаю да,вам смешно туда сюда, но не надо смеяться над тем чего я не знаю. Если ты знаешь, помоги, если нет, смейся втихаря.
 

АнимиА

Новичок
АнимиА, то, что ты признался - это похвально. Вопрос только в том, что когда тебе дадут работу, ты тоже сюда прибежишь спрашивать?

PS: Пока искать работу тебе рано с такими знаниями, надо много читать/писать на нем, чтобы не было такого глупого кода. @Вурдалак указал тебе на самый абсурдный кусок.
Ну, а что мне делать? Иногда бывают вещи которые я не понимаю,а спросить не у кого.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
АнимиА, в тестовом задании проверяется твоя готовность к реальным задачам, которые как правило сложнее в разы или на порядки.

Вопрос не в том, что нам западло тебе помочь, вовсе нет, нам просто жалко работодателя (а в частном случае такого же программиста как и мы) который потом будет вынужден все равно тебя обучать.

но проблема в том я не знаю как менять содержимое одной или двух строчек вот мой код
Вот уже в этом месте, мне не понятно, что именно ты делаешь. Тебе надо построить форму со всеми значениями? Или что? Просто если ты обновляешь одно поле - это просто переменная, если нескольких - это уже массив. Задаются массивы в форме путем добавления в конец имени поля символов "[]" без кавычек. Далее если поле имело название name="test[]" и полей было несколько, у тебя в массиве $_POST будет соответственно два элемента в $_POST['test'], с индексами 0 и 1.
 

АнимиА

Новичок
АнимиА, в тестовом задании проверяется твоя готовность к реальным задачам, которые как правило сложнее в разы или на порядки.

Вопрос не в том, что нам западло тебе помочь, вовсе нет, нам просто жалко работодателя (а в частном случае такого же программиста как и мы) который потом будет вынужден все равно тебя обучать..
Рассмотрели заявку на стажировку php программиста. Дали тестовое задание "интегрировать существующую верстку в CMS предоставить доступ для проверки". Я решил, сделать админку, а все слова выводить из базы данных. В Админке у меня будет много Inputov, а в каждой свое слово ну или предложение. По началу все шло хорошо, все выводиться, а изменить одну строчку или несколько я не знаю как. Я же не могу писать для каждой строки отдельный код update ....... where id = 1, update ............ where id = 2 и т.д
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
АнимиА, правильно не надо так делать. Надо понять, что можно связать данные "слова" и его id. Например создав форму с параметрами name='field[id]', далее пройтись по данным из $_POST циклом и написать запрос вида

UPDATE set field=xxx WHERE id=key, где key = это ключ дентификатор (id) из name='field[id]'. Его ты получишь путем foreach($_POST['field'] as $key=>$value). Так понятней?
 

АнимиА

Новичок
<div class="form-group">
<input type="text" class="form-control" name="text[1]" value="<?php echo $words->getWords(1)?>">
<input type="text" class="form-control" name="text[2]" value="<?php echo $words->getWords(2)?>">
</div>

PHP:
public function update() {
        if (!isset($_POST['update'])) {
            return;
        } else {
            foreach ($_POST['text'] as $key => $value){
                $sql = "UPDATE `test`.`words` SET `text` = '$value' where id = '$key'";
            }
            echo $sql;
            db::createSQL($sql);
        }
    }
Я извиняюсь, так?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Для оформления кода тут есть спецтальные теги, [ php ] и [ /php ]

Вцелом уже лучше, но теперь включи голову и подумай, почему у тебя будет работать только последний апдейт? А так же посоветую тебе прочитать про http://phpfaq.ru/slashes
 

АнимиА

Новичок
Для оформления кода тут есть спецтальные теги, [ php ] и [ /php ]

Вцелом уже лучше, но теперь включи голову и подумай, почему у тебя будет работать только последний апдейт? А так же посоветую тебе прочитать про http://phpfaq.ru/slashes
Было бы что включать, совсем уже расстроен, все время что я тратил на все оказалось зря. А почему будет работать последний апдейт? ну как мне кажется тут нет никакого цикла, он просто видит тупо последний input и его меняет.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
АнимиА, ты меня не понял. Прочти свой код еще раз, только просто представь как он работает. Строчка за строчкой. У тебя массив из двух элементов, по ним идет цикл. Так? Так вот, ты в цикле завел переменную $sql и в ней хранишь запрос. Но первый вариант присвоения ты не используешь, а используешь только последний, который ты и вызываешь через db::createSQL($sql);

Тебе надо запускать db::createSQL($sql); в самом цикле.
 

fixxxer

К.О.
Партнер клуба
АнимиА, у тебя, к сожалению, проблемы не со знанием php а с самим программированием, видно что этим почти не занимался. Для стажировки надо хотя бы уверенно владеть основами структурного программирования. На таком уровне надо просто взять учебник и делать базовые упражнения, о каких-то заданиях сложно говорить.
 

АнимиА

Новичок
АнимиА, у тебя, к сожалению, проблемы не со знанием php а с самим программированием, видно что этим почти не занимался. Для стажировки надо хотя бы уверенно владеть основами структурного программирования. На таком уровне надо просто взять учебник и делать базовые упражнения, о каких-то заданиях сложно говорить.
Спасибо, а какую книжку бы посоветовал?
 
Сверху