Итак, я пытаюсь изучить php и решил сделать один сайт, где я добавляю изображения, сохраняю их в папке и id, name, type, path в mysql. Затем покажите на странице. Пока у меня есть форма загрузки, и я могу загружать и сохранять изображения. Также я успешно показываю их на странице.Кадры не работали
Теперь я пытаюсь сделать такие категории, как - Природа, Смешные ... и т. Д. Поэтому я добавил одно поле в моей основной таблице -> img_category. Также я пропустил второй стол - кошки с полями cat_id и cat_name. Используя это, чтобы показать категории на странице:
<?php
$q = mysqli_query($con,"select * from cats");
while ($res = mysqli_fetch_assoc($q))
{
echo '<a href="pic.php?cat_id='. $res['cat_id'] .'">'.$res['cat_name'].'<br/>';
}
Так что теперь, как я могу сделать, когда я нажимаю на какой-то категории ссылку для загрузки изображений только из этой категории? мне удалось сделать что-то вроде этого, но это не работает, как ожидается
<?php
$q = mysqli_query($con,"select * from cats");
while ($res = mysqli_fetch_assoc($q))
{
echo '<a href="pic.php?cat_id='. $res['cat_id'] .'">'.$res['cat_name'].'<br/>';
}
?>
<hr>
<?php
$cat_id = $_GET['cat_id'];
$query = "SELECT * FROM images JOIN cats ON images.img_category = cats.cat_id WHERE cats.cat_id = '$cat_id'";
$result = mysqli_query($con, $query) or die("Query failed: " . mysqli_errno($con));
$line = mysqli_fetch_array($result, MYSQL_BOTH);
if (!$line) echo '';
$previd = -1;
$currid = $line[0];
if (isset($_GET['id'])) {
do {
$currid = $line[0];
if ($currid == $_GET['id']) break;
$previd = $currid;
$line = mysqli_fetch_array($result, MYSQL_BOTH);
} while ($line);
}
if ($line) {
echo "<div id=\"picture\">";
echo "<img style=\"width:100%;margin:0 auto;\" src=\"upload/".$line['name']."\" /></a><br />";
echo "<div id=\"caption\">".$line['caption']."</div><br />";
}
else echo "There is no images!\n";
if ($previd > -1) echo '<a href="pic.php?cat_id='.$previd.'" class="prev_pic"><span>Prev</span></a>';
echo str_repeat(' ', 5);
$line = mysqli_fetch_array($result, MYSQL_BOTH);
$query = "select * from images order by RAND() LIMIT 1";
$result = mysqli_query($con, $query) or die("Query failed: " . mysqli_errno($con));
while ($row = mysqli_fetch_array($result, MYSQL_BOTH)){
echo '<a href="pic.php?cat_id='.$row['id'].'"class="random">Random</a>';
}
echo str_repeat(' ', 5);
if ($line) echo '<a href="pic.php?cat_id='.$line[0].'" class="next_pic"><span>Next</span> </a><br /><br />';
echo "</div>";
?>
Результаты:
Когда есть изображение в категории предъявляется, но и если я нажимаю на «Next 'Я получаю то же изображение. Если в кадре нет изображения, я получаю все эхо-сигналы, такие как ссылка whit ID последней категории для экзамена: нет изображения, подобного ссылке, и если я нажму, я получу идентификатор последней категории. В моем случае у меня есть 8 категорий, поэтому ID = 8. Любая помощь оценена! Thank в
EDIT: Ok эта строка:
echo '<a href="pic.php?cat_id='.$line[0].'" class="next_pic"><span>Следваща</span> </a>
Где pic.php cat_id = ... я думаю, что это неправильно. Здесь я должен взять следующий идентификатор изображения, а не следующий идентификатор категории. Но как изменить его для изображения? Если я сделаю это pic.php? Id = ... Я получаю пустую страницу. Я этого не понимаю. Я знаю, что это грязный код, но я лучше всего это сделаю.
EDIT 2: Я сделал что-то вроде этого. Теперь вы можете помочь мне сделать запрос для следующего изображения, потому что теперь не получилось следующего изображения и остался прежним.
$cat_id = $_GET['cat_id'];
$cat_id = mysqli_real_escape_string($con, $cat_id);
$query = "SELECT * FROM images JOIN cats ON images.img_category = cats.cat_id WHERE cats.cat_id = '$cat_id'";
$result = mysqli_query($con, $query) or die("Query failed: " . mysqli_errno($con));
$prevSQL = mysqli_query($con,"SELECT cat_id FROM cats WHERE cat_id < $cat_id ORDER BY cat_id DESC LIMIT 1") or die (mysqli_error($con));
$nextSQL = mysqli_query($con, "SELECT cat_id FROM cats WHERE cat_id > $cat_id ORDER BY cat_id ASC LIMIT 1") or die (mysqli_error($con));
$prevobj=mysqli_fetch_object($prevSQL);
$nextobj=mysqli_fetch_object($nextSQL);
$pc = mysqli_fetch_object(mysqli_query($con, "SELECT COUNT(cat_id) as pid FROM cats WHERE cat_id<$cat_id ORDER BY cat_id DESC")) or die (mysqli_error($con));
$nc = mysqli_fetch_object(mysqli_query($con, "SELECT COUNT(cat_id) as nid FROM cats WHERE cat_id>$cat_id ORDER BY cat_id ASC")) or die (mysqli_error($con));
$prev=$pc->pid>0 ? '<a href="pic.php?cat_id='.$cat_id.'&id='.$prevobj->cat_id.'">Prev</a> |' : '';
$next=$nc->nid>0 ? '<a href="pic.php?cat_id='.$cat_id.'&id='.$nextobj->cat_id.'">Next</a>' : '';
$row = mysqli_fetch_array($result);
echo "<div id=\"picture\">";
echo "<img src=\"upload/" . $row['name'] . "\" alt=\"\" /><br />";
echo $row['caption'] . "<br />";
echo "</p>";
echo $prev;
echo $next;
SQL Injection http://en.wikipedia.org/wiki/SQL_injection – Samuel
Я пока не знаю, как сделать это .. – Gordon
Да вы делаете. Вы уже создали хороший код для инъекций в своем коде. – Samuel