Re: Треба створити гру-здогадайку
Прикладаю москальські файли. Але чому можна приєднати лише один??
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → PHP → Треба створити гру-здогадайку
Прикладаю москальські файли. Але чому можна приєднати лише один??
Спасибі, але тут така справа: файл cookie.inc повинен взаємодияти з файлом index. Я його раніше присилав. Так ось видається помилка: Warning: Cannot modify header information - headers already sent by (output started at C:\OpenServer\domains\localhost\mysite2.local\index.php:1) in C:\OpenServer\domains\localhost\mysite2.local\inc\cookie.inc.php on line 10
Warning: Cannot modify header information - headers already sent by (output started at C:\OpenServer\domains\localhost\mysite2.local\index.php:1) in C:\OpenServer\domains\localhost\mysite2.local\inc\cookie.inc.php on line 11
Як з цією помилкаю боротись??
А чому файли.php не можна приєднувати?? І чому можна приєднувати лише один файл??
elektryk написав:Ау-у-у!! Поворюю: куди поділися кнопки для приєднання файлів?? Чому я їх не бачу??
Я особисто сховав кнопку долучення файлів від вас А ще я сховав теґ code тому ви код не пишете в тому тезі.
Я ж не екстрасенс. Я не можу здогадатись, які є теги і нащо вони потрібні.
Хто знайде помилку в коді??
<?php
// підключення бібліотек
require "inc/lib.inc.php";
require "inc/db.inc.php";
?>
<html>
<head>
<title>Каталог товарів</title>
</head>
<body>
<p>Товарів в <a href="basket.php">кошику</a>: <?= $count?></p>
<table border="1" cellpadding="5" cellspacing="0" width="100%">
<tr>
<th>Назва</th>
<th>Автор</th>
<th>Рік видання</th>
<th>Ціна, гр.</th>
<th>В кошик</th>
</tr>
<?php
$goods = selectAllItems();
if(!is_arry($goods)){
echo 'Сталася помилка при вводі товарів';
exit;
if(!$goods){
echo 'На сьогодні товарів немає';
exit;
}
foreach($goods as $item){
?>
<tr>
<td><?= $item['title']?></td>
<td><?= $item['author']?></td>
<td><?= $item['pubuear']?></td>
<td><?= $item['price']?></td>
<td><a href="add2basket.php?id=<?= $item['id']?>">В коршик</a></td>
</tr>
<?
}
?>
</table>
</body>
</html>
syntax error, unexpected $end in C:\OpenServer\domains\localhost\mysite2.local\eshop\catalog.php on line 43
Тре дужку другу додати тут
if(!is_arry($goods)){
Також ви використовуєте короткий синтаксис <?=?>, але якось не всі можливості. Дивіться як можна.
<?php
// підключення бібліотек
require "inc/lib.inc.php";
require "inc/db.inc.php";
?>
<html>
<head>
<title>Каталог товарів</title>
</head>
<body>
<p>Товарів в <a href="basket.php">кошику</a>: <?= $count?></p>
<table border="1" cellpadding="5" cellspacing="0" width="100%">
<tr>
<th>Назва</th>
<th>Автор</th>
<th>Рік видання</th>
<th>Ціна, гр.</th>
<th>В кошик</th>
</tr>
<?$goods = selectAllItems()// в вашому випадку $goods має визначатися до include 'catalog.php' а не в ньому Тоді це буде якось схоже на шаблон?>
<?if(!is_arry($goods)):?>
<h1 color="red">Сталася помилка при вводі товарів!</h1>
<?elseif (!$goods):?>
<h1 color="red">На сьогодні товарів немає!</h1>
<?else:?>
<?foreach($goods as $item):?>
<tr>
<td><?= $item['title']?></td>
<td><?= $item['author']?></td>
<td><?= $item['pubuear']?></td>
<td><?= $item['price']?></td>
<td><a href="add2basket.php?id=<?=$item['id']?>">В коршик</a></td>
</tr>
<?endforeach;?>
<?endif;?>
</table>
</body>
</html>
Адже так гарніше як на мене.
Ще рекомендую викачати норм редактор і використовувати його, а не якийсь блокном. Рекомендую netbeans, тоді проблем з закритими дужками чи крапками з комою не буде взагалі.
Також ви використовуєте короткий синтаксис <?=?>, але якось не всі можливості. Дивіться як можна.
синтаксис <?= ?> не відноситься до коротких тегів <? ?>.
Короткі теги не рекомендується використовувати, тому що опція short_open_tags може бути відключена (що і роблять переважна більшість хостингів).
Тому краще писати типу:
<?php if (condition): ?>
<h1><?= $variable ?></h1>
<?php endif; ?>
Я випадково знайшов помилку. Було if(!is_arry($goods)){, а слід писати if(!is_array($goods)){.
Але це не єдина помилка.
В моєму варіанті стара помилка залишається Parse error: syntax error, unexpected $end in C:\OpenServer\domains\localhost\mysite2.local\eshop\catalog2.php on line 43
А в варіанті NagarDа помилка інша.
Parse error: syntax error, unexpected T_VARIABLE in C:\OpenServer\domains\localhost\mysite2.local\eshop\inc\lib.inc.php on line 34
А в мене питання до NagarDа.
Навіщо ставити дві крапки ось в цих прикладах
<?if(!is_array($goods)):?>
<?elseif (!$goods):?>
<?else:?>
<?foreach($goods as $item):?>
То як { щоб інтерпретатор знав що починається інструкція, а ; позначає кінець всієї конструкції умови.
NagarD написав:Також ви використовуєте короткий синтаксис <?=?>, але якось не всі можливості. Дивіться як можна.
синтаксис <?= ?> не відноситься до коротких тегів <? ?>.
Короткі теги не рекомендується використовувати, тому що опція short_open_tags може бути відключена (що і роблять переважна більшість хостингів).
Тому краще писати типу:<?php if (condition): ?> <h1><?= $variable ?></h1> <?php endif; ?>
Зазвичай нові речі вводяться не для того, щоб їх не рекомендувати. Тим більше таку зручну штуку як короткі теги.
Зайшов на сайт php і дійсно ні слова про не рекомендації http://php.net/manual/en/ini.core.php#i … t-open-tag.
Зазвичай нові речі вводяться не для того, щоб їх не рекомендувати. Тим більше таку зручну штуку як короткі теги.
Зайшов на сайт php і дійсно ні слова про не рекомендації http://php.net/manual/en/ini.core.php#i … t-open-tag.
Short open tags далеко не нове, а можна сказати що застаріле. Подивіть на гітхабі код любого сучасного фреймворка чи компонента і ви не знайдете там використання <? ?>
І на рахунок "не рекомендації":
http://php.net/manual/en/language.basic … hptags.php
PHP also allows for short open tag <? (which is discouraged since it is only available if enabled using the short_open_tag php.ini configuration file directive, or if PHP was configured with the --enable-short-tags option)
Мова ні про що. Не рекомендується, тому що його тре вмикати.
Те ж і про фреймфорки. Кому тре впроваджувати ще одну залежність? тому і пишуть <?php.
Першим ділом, що роблю, це вмикаю к.теги, це зручно. Якщо вам не подобається, то використовуйте <?php. Мо розробники колись напишуть, що php20 не буде підтримувати к.теги, тоді згадаєте мене. А я в той час запущу пошук з заміною - зіпсую всю зроблену естетику і все стане добре.
Мова ні про що. Не рекомендується, тому що його тре вмикати.
Те ж і про фреймфорки. Кому тре впроваджувати ще одну залежність? тому і пишуть <?php.
Першим ділом, що роблю, це вмикаю к.теги, це зручно. Якщо вам не подобається, то використовуйте <?php. Мо розробники колись напишуть, що php20 не буде підтримувати к.теги, тоді згадаєте мене. А я в той час запущу пошук з заміною - зіпсую всю зроблену естетику і все стане добре.
Ще пам'ятаю часи коли багато (і я в тому числі) використовували короткі теги, тоді ще напевно був php 4. Зараз наприклад багато хостінгів відключають цю функцію.
Але найбільшим аргументом чому їх не використовують наприклад фреймворки, це тому що є така штука як php standard recommendation, якщо ви з тим ще не знайомі то обов'язково прочитайте. Ось наприклад стандарт psr-1:
https://www.php-fig.org/psr/psr-1/
Перший пункт - Files MUST use only <?php and <?= tags.
Відкриваючий теп PHP не бачить закриваючого. Де помилка??
<?
$sql = "SELECT id, name, email, msg,
UNIX_TIMESTAMP(datetime) as dt
FROM msgs
ORDER BY id DESC LIMIT 5";
$res = mysqli_query($link,$sql) or die(mysqli_error($link));
mysqli_close($link);
while($row = mysqli_fetch_assoc($res)){
$id = $row['id'];
$name = $row['name'];
$email = $row['email'];
$msg = $row['msg'];
$dt = date('d-m-Y H:i:s', $row['dt']);
//vyvid
echo <<<HTML
<hr>
<p>
<a href="mailto:$email">$name</a> @ $dt
<br>$msg
</p>
<p align='right'>
<a href="{$_SERVER['REQUEST_URL']}
&del=$id">Видалити</a>
</p>
HTML;
}
?>
Можливо потрібно написати php ?
<?php
...
І лапки -> " поставити спробуйте...
echo <<<"HTML
<hr>
<p>
<a href=\"mailto:$email\">$name</a> @ $dt
<br>$msg
</p>
<p align='right'>
<a href=\"{$_SERVER['REQUEST_URL']}
&del=$id\">Видалити</a>
</p>
HTML";
echo <<<HTML
Після
HTML;
не можна ставити пробіли, тільки символ нового рядка.
elektryk написав:echo <<<HTML
Після
HTML;
не можна ставити пробіли, тільки символ нового рядка.
Я це знаю.
Щось я не вловлюю в такому виводі.
Ось знову така ситуація
<?php
if(file_exists('log/'.PATH_LOG)){
$log = file('log/'.PATH_LOG);
if(is_array($log)){
echo '<ol>';
foreach($log as $line){
list($dt,$page,$ref) = explode('|', $line);
$dt = date('d-m-Y H:i:s',$dt);
echo <<<LINE
<li>
$dt: $ref --> $page
</li>
LINE;
}
echo '</ol>';
}
}
?>
Не осилив! Соромно признаватись, але я не здолав PHP. З формами розібрався, а ось CMS ниасилил. І відповідно не отримав диплому. Тепер перебуваю в прострації.