1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

PHP

Тема в разделе "Оффтопик", создана пользователем jeckavibal, 16 сен 2015.

  1. Автор темы
    jeckavibal

    jeckavibal Активный участник Пользователь

    Баллы:
    76
    Только начинаю изучать PHP. Мне пришла в голову идея:
    В файле list.php с помощью массивов, я указал название игры, издателя, цену, путь к картинке
    Пример:

    $fallout4["fallout4"] = array("name" => "Fallout 4", "publisher" => "Bethesda Softworks", "img" => "http://мойсайт/i/game/fallout4.jpg", "price" => "100");

    В файле form.html есть простая форма:

    <form action="list.php" method="GET">
    <input type="text" name="search" >
    <input type="submit" >
    </form>
    Человек вводить название игры или же издателя, из файла list.php выбираются нужные название и выводятся.
    Пробовал так:

    switch ($_GET["search"]) {
    case $fallout4["fallout4"]["name"];
    $search='<LI>
    <A href="<? echo $fallout4["fallout4"]["url"]; ?>">
    <IMG src="<? echo $fallout4["fallout4"]["img"]; ?>" alt="RandomGame">
    <H1><SPAN><? echo $fallout4["fallout4"]["name"]; ?></SPAN></H1>
    <P><? echo $fallout4["fallout4"]["price"]; ?><SPAN>р.</SPAN></P>
    </A>
    </LI>';
    break;
    }
    print $search;
    Но в итоге выводиться тоже самое, а должно выводиться:
    <LI>
    <A href="http://мойсайт.ру/бла/бла">
    <IMG src="http://мойсайт/i/game/fallout4.jpg" alt="RandomGame">
    <H1><SPAN>Fallout 4</SPAN></H1>
    <P>100<SPAN>р.</SPAN></P>
    </A>
    </LI>
    Что я сделал не так? Как это реализовать?
     
    Последнее редактирование: 16 сен 2015
  2. Serrrgio

    Serrrgio Старожил Пользователь

    Баллы:
    173
    Skype:
    nonecsa
    Имя в Minecraft:
    None
    не правильно присваиваешь переменной $search значение
    оператор echo выводит данные в браузер
    в твоем случае присваивать значение нужно так
    PHP:
    $search='<LI>
    <A href="'
    .$fallout4["fallout4"]["url"].'">
    <IMG src="'
    .$fallout4["fallout4"]["img"].'" alt="RandomGame">
    <H1><SPAN>'
    .$fallout4["fallout4"]["name"].'</SPAN></H1>
    <P>'
    .$fallout4["fallout4"]["price"].'<SPAN>р.</SPAN></P>
    </A>
    </LI>'
    ;
    но это все равно не правильно :), нужно для этих целей использовать базы данных
     
  3. book777

    book777 Старожил Пользователь

    Баллы:
    123
    ты, кончено, пишешь странно. но многие в начале писали также. попробуй
    $temp = $_GET["search"];
    if($fallout4[$temp])
    echo '<LI>
    <A href="'.$fallout4[$temp]["url"].'">
    <IMG src="'.$fallout4[$temp]["img"].'" alt="RandomGame">
    <H1><SPAN>'.$fallout4[$temp]["name"].'</SPAN></H1>
    <P>'.$fallout4[$temp]["price"].'<SPAN>р.</SPAN></P>
    </A>
    </LI>';
     
  4. Автор темы
    jeckavibal

    jeckavibal Активный участник Пользователь

    Баллы:
    76
    Не пойдет. У меня много массивов будет.
    Знаю что нужны бд. Но вот решил сделать такую вещь)
    Что делать, когда получил данные из бд? Если у меня например нашлось 4 игры похожих на запрос пользователя?
    Как их все вывести?
     
  5. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    foreach
     
  6. Vladlen_198

    Vladlen_198 Старожил Пользователь

    Баллы:
    108
    Skype:
    ultrashock98
    Имя в Minecraft:
    UltraShock
    Я считаю тебе лучше не стоит заниматься программированием.
     
    Последнее редактирование: 16 сен 2015
  7. ZloYCRipeeR

    ZloYCRipeeR Старожил Пользователь

    Баллы:
    153
    Skype:
    cry_zloy
    Имя в Minecraft:
    ZloYCRipeeR
    PHP:
    $res mysql_query("SELECT * FROM /таблица/ WHERE game = '{$_GET['search']}'");
    $res mysql_fetch_array($res);
    foreach(
    $res as $game){
    echo 
    "
    <LI>
    <A href="'.$game["url"].'">
    <IMG src="'.$game["img"].'" alt="
    RandomGame">
    <H1><SPAN>'.
    $game["name"].'</SPAN></H1>
    <P>'.
    $game["price"].'<SPAN>р.</SPAN></P>
    </A>
    </LI>
    "
    ;
    }
    И, да, у тебя очень странный код. Особенно:
    PHP:
    $fallout4['fallout4'] = array(...)
    Какой в этом смысл?
     
  8. danil32662543

    danil32662543 Активный участник Пользователь

    Баллы:
    88
    Хочешь сказать,что если человек начинает изучать программирование и не всё получается с первого раза нужно прекратить?
    Я не думаю,что у тебя с первого раза получился "superpuperphpcode".
     
  9. Cames

    Cames Старожил Пользователь

    Баллы:
    153
    Skype:
    sky_meg
    У меня получился. Вопросы?
     
  10. danil32662543

    danil32662543 Активный участник Пользователь

    Баллы:
    88
    Получилось,что?
     
  11. Cames

    Cames Старожил Пользователь

    Баллы:
    153
    Skype:
    sky_meg
     
  12. Toster_tpl

    Toster_tpl Старожил Пользователь

    Баллы:
    153
    На конце должна быть не точка с запятой, а двоеточия.
    switch(...){
    case: ... break;

    default: ...
    }
     
  13. Автор темы
    jeckavibal

    jeckavibal Активный участник Пользователь

    Баллы:
    76
    Всем спасибо за ответ! Все работает)
    Забыл про него
    Ну молодец! А я только начинаю все это изучать и пытаюсь что-то сделать
     
  14. Vladlen_198

    Vladlen_198 Старожил Пользователь

    Баллы:
    108
    Skype:
    ultrashock98
    Имя в Minecraft:
    UltraShock
    А кто сказал что нужно было бегом на практику ? Я доки выучил и пошёл творить...
     
  15. Автор темы
    jeckavibal

    jeckavibal Активный участник Пользователь

    Баллы:
    76
    А я изучаю все постепенно и практикую все постепенно
     
  16. Vladlen_198

    Vladlen_198 Старожил Пользователь

    Баллы:
    108
    Skype:
    ultrashock98
    Имя в Minecraft:
    UltraShock
    У меня к тебе вопрос зачем использовать *CAPS* для написание html тегов. Разве ты используешь DHTML ?
    А для работы с базой нужно использовать PDO
    Простой пример:
    PHP:
    $db = new PDO('mysql:host=localhost;dbname=first_php;port=3306;charset=utf8','user','pass');
    $stmt $db->prepare('SELECT * FROM table WHERE game LIKE :game ORDER BY id DESC');
    $stmt->execute([
    'game' => '%'.$_GET['search'].'%',
    ]);
    while (
    $row $stmt->fetch(PDO::FETCH_ASSOC)) {
    // Тут должен использоваться шаблонизатор...
    }
    База будет очень проста
    id | int
    game | varchar
    publisher | id
    price | int
    img | int
    В img спросишь почему int, а потому что он должен хранить id от attachment
    И так же с publisher
    Простой пример LEFT JOIN
    Код:
    SELECT t.id, a.file AS img,p.name AS publisher,t.game
    FROM table t
    LEFT JOIN publisher p ON p.id=t.publisher
    LEFT JOIN attachment a ON a.id=t.img
    WHERE game LIKE :game ORDER BY t.id DESC
    

    Таблица attachment
    id | int
    file | varchar
    Таблица publisher
    id | int
    name | varchar
     
    Последнее редактирование: 17 сен 2015
  17. Toster_tpl

    Toster_tpl Старожил Пользователь

    Баллы:
    153
    Не надо советовать ему использовать PDO. Кто-нибудь из юзеров на данном форуме использовал postgresql? Или mssql? А может Firebird? Правильно - никто. Кроме mysql здесь вообще никто никогда и ничего больше не использовал за исключением плагинописцев, которые, возможно, юзают sqlite, но это в плагинах. Тогда зачем тянуть огромное расширение на веб-сервер, которое поддерживает огромное кол-во драйверов, если кроме mysql ничего не будет использоваться?
    Создается ощущение, что все, кто используют pdo на данном форуме, даже не знают что это такое, а просто где-то услышали и посчитали, что это круто.
    Забавно. В одном месте алиас пишется, а в другом нет. Такое ощущение, что код собран по частям.
    Алиасы, по больше части, используются для избавления от ошибки дублирующихся имен колонок и для "приятности глаз" в названиях полей. А если говорить о данном случае, то тут вообще джоины не нужны, т.к. это просто список товаров, где нет ни пользователей, который их добавляет, ни вложений.
     
  18. Cames

    Cames Старожил Пользователь

    Баллы:
    153
    Skype:
    sky_meg
    Нынешние интернеты не потянут pdo? :)
    Ну да, ты прав, никто тут дальше mysql не уйдет, но и юзать драйвер mysql_* не вариант. Для "кодеров", которые не смогут обезопасить свой код от инъекций, лучше подгрузить лишние драйвера и через prepare без проблем все отправить на сервер, чем пытаться отловить узкие места.
     
  19. Toster_tpl

    Toster_tpl Старожил Пользователь

    Баллы:
    153
    Есть mysqli.
    mysqli->real_escape_string(), floatval(), intval() вот и вся защита.
    mysqli поддерживают все нынешние хостеры, а PDO - это расширение, по этому многие хостеры его вовсе не устанавливают.
     
  20. Vladlen_198

    Vladlen_198 Старожил Пользователь

    Баллы:
    108
    Skype:
    ultrashock98
    Имя в Minecraft:
    UltraShock
    Так и есть, у pdo большое кол-во поддерживаемых драйверов. Перечислять всё не буду но в том числе mysql,mongodb и sqlite
     

Поделиться этой страницей