За последние 24 часа нас посетили 20195 программистов и 1079 роботов. Сейчас ищут 690 программистов ...

php + PDO

Тема в разделе "PHP для новичков", создана пользователем exstyles, 25 мар 2020.

  1. exstyles

    exstyles Новичок

    С нами с:
    20 мар 2020
    Сообщения:
    13
    Симпатии:
    1
    Здравствуйте.
    PHP:
    1. $tovar = $DBH->query('SELECT `id`, `name`, `opisanie`, `photo`, `cat_id`, `price` from `tovar`');
    2. $tovar->setFetchMode(PDO::FETCH_ASSOC);
    3. while($row = $tovar->fetch()){
    4. echo $row['name'];
    5. echo $row['opisanie'];
    6. echo $row['photo'];
    7. echo $row['price'];
    8. }
    На openservere все замечательно, а на серваке просто выводит, что запись есть но не выводит ни названия и артикула ничего. Подскажите в чем причина.
     
  2. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    Что означает фраза "выводит, что запись есть" ? Так и пишет, "запись есть но ничего не выведу и не проси" ?
     
  3. exstyles

    exstyles Новичок

    С нами с:
    20 мар 2020
    Сообщения:
    13
    Симпатии:
    1
    это на openserver
    [​IMG]
    это на хосте
    [​IMG]
    И никаких ошибок ничего.На хосте в бд только одна запись. Если добавить еще одну, то появиться еще один такой блок.
     
    #3 exstyles, 25 мар 2020
    Последнее редактирование: 25 мар 2020
  4. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    на хостинге ошибки отключены по дефолту
    пропиши в начале скрипта
    PHP:
    1. <?php
    2. ini_set('display_errors', 'On');
    ну и как выводить ошибки MySQL почитай
     
    exstyles нравится это.
  5. exstyles

    exstyles Новичок

    С нами с:
    20 мар 2020
    Сообщения:
    13
    Симпатии:
    1
    Ошибок нет
    ок, спасибо. А на в скидку что может не так быть?
     
  6. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    @exstyles, на вскидку я бы в целом порекомендовал книжек почитать. Сэкономите кучу времени и нервов.
     
  7. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    @exstyles, даже не зная то, как работать с ошибками, вы могли бы давно выяснить причины самыми примитивными способами. Например, запустить SQL-запрос напрямую (в консоли или phpMyAdmin), вывести результат запроса в файл:
    PHP:
    1. file_put_contents('test.txt', var_export($tovar->fetch(), 1));
    и т.д. Подключайте фантазию, если пока не хватает опыта
     
    #7 Deonis, 25 мар 2020
    Последнее редактирование: 25 мар 2020
    exstyles нравится это.
  8. Зингер

    Зингер Активный пользователь

    С нами с:
    20 июл 2017
    Сообщения:
    127
    Симпатии:
    7
    Сравни кодировки, веб-сервер и все кодировки MySQL, на локалхосте и на хосте. Скорее всего причина там.
     
    exstyles нравится это.
  9. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.734
    Симпатии:
    1.315
    Адрес:
    Лень
    У вас ноутбуки стырили с Базы Данных :D Там точно одна запись с данными ?
     
    exstyles нравится это.
  10. exstyles

    exstyles Новичок

    С нами с:
    20 мар 2020
    Сообщения:
    13
    Симпатии:
    1
    Сравнил, все один в один. При чем на серваке стоит opencart на другом домене и висит еще один сайт, но там никаких проблем. А тут фигня какае-то.
    Да лучше и в правду потырили бы их, чем этот гемор=) Точно одна, если добавлю еще одну, то будет такой же пустой блок.

    Все, разобрался. Всем спасибо=) Но это был полный бред....
    Было так и работало на локалке
    PHP:
    1. <?php
    2. $tovar->setFetchMode(PDO::FETCH_ASSOC);
    3. while($row = $tovar->fetch()){
    4. if (empty($row['photo'])){
    5. $photo = 'narujka';
    6. }else{
    7. $photo = $row['photo'];
    8. }
    9. ?>
    10. <div id="katalog">
    11.   <div class="name"> <? echo $row['name']; ?> </div>
    12.   <div class="photo"> <img src="img/tovar/<?echo $photo;?>.jpg" width="100%"height="100%"></div>
    13.   <div class="opisanie"> <? echo $row['opisanie']; ?></div>
    14.   <div class="price">ЦЕНА <? echo $row['price']; ?> руб.</div>
    15. </div>
    16.  
    17. <?php
    18. }
    19. ?>
    сделал так и заработало на сервере.

    PHP:
    1. $tovar->setFetchMode(PDO::FETCH_ASSOC);
    2. while($row = $tovar->fetch()){
    3. if (empty($row['photo'])){
    4. $photo = 'narujka';
    5. }else{
    6. $photo = $row['photo'];
    7. }
    8. Echo'
    9. <div id="katalog">
    10.  <div class="name"> '.$row['name'].'</div>
    11.  <div class="photo"> <img src="img/tovar/'.$photo.'.jpg" width="100%"height="100%"></div>
    12.  <div class="opisanie">  '.$row['opisanie'].'</div>
    13.  <div class="price">ЦЕНА '.$row['price'].' руб.</div>
    14. </div>
    15. ';
    16.  
    17. }
     
    #10 exstyles, 26 мар 2020
    Последнее редактирование: 26 мар 2020
  11. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.734
    Симпатии:
    1.315
    Адрес:
    Лень
    @exstyles а теперь минуту..
     
  12. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.734
    Симпатии:
    1.315
    Адрес:
    Лень
    PHP:
    1. $window_content = '<div id="katalog">
    2.    <div class="name">%s</div>
    3.    <div class="photo"><img src="img/tovar/%s.jpg" width="100%"height="100%"></div>
    4.    <div class="opisanie">%s</div>
    5.    <div class="price">ЦЕНА %s руб.</div>
    6. </div>';
    7.  
    8.  
    9. if ( $tovar -> rowCount() )
    10. {
    11.     while ( $res = $tovar -> fetch( \PDO :: FETCH_ASSOC ) )
    12.     {
    13.         # $res['photo'] ?: 'narujka' -----> ( empty ( $res['photo'] ) ? 'narujka' : $res['photo'] )
    14.        printf ( $window_content, $res['name'], $res['photo'] ?: 'narujka', $res['opisanie'], $res['price'] );
    15.     }
    16. }
    17. else
    18. {
    19.     # тут что-то подобное "Товар в наличии отсутствует..."
    20. }
     
    exstyles нравится это.
  13. exstyles

    exstyles Новичок

    С нами с:
    20 мар 2020
    Сообщения:
    13
    Симпатии:
    1
    Спасибо=)
     
    MouseZver нравится это.
  14. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    Проблема-то была в "коротких открывающих тегах" <?, использованных вместо <?php
    Ещё можно <?=$row['name']?>, например, вместо <?php echo $row['name']; ?>
     
  15. ermail

    ermail Новичок

    С нами с:
    16 янв 2020
    Сообщения:
    8
    Симпатии:
    0
    я конечно же не гуру но попытаюсь предположить что дело именно тут

    Код (Text):
    1. <div class="name"> <? echo $row['name']; ?> </div>
    поменять нужно было на

    Код (Text):
    1. <div class="name"> <?php echo $row['name']; ?> </div>
    Дело в том что на openservere первый и второй вариант проходит.
    А вот на остальных нужно короткий синтакс включать что бы он работал. <??>
     
  16. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.734
    Симпатии:
    1.315
    Адрес:
    Лень
    гениально..
     
    AlexProg и exstyles нравится это.