Я сталкиваюсь с некоторыми проблемами с запросом, который я пытаюсь сделать. Я пытаюсь создать шаблон для нескольких страниц для отображения определенных изображений, которые коррелируют с этой страницей.
У меня есть отдельные страницы, где я назначаю переменную для определения страницы (вы можете видеть, где я делаю это в своем коде с $page
). Затем в моей базе данных, в рамках solution
я называю конкретные записи одним из имен отдельных страниц. Например: если я назвал страницу "Бал", в соответствии с solution
столбца базы данных, я бы назвал несколько записей Ball
.
Затем в моем запросе я пытаюсь подсчитать, сколько записей существует, которые соответствуют $page
. Если количество записей больше 0, я хочу отобразить код в инструкции else
.
На данный момент мое соединение с базой данных работает. Я не печатаю никаких ошибок. Вы можете увидеть мое echo $solution_count;
, Это показывает 0, но работает моя else-statement
, что делает смысл 0.
Я делаю что-то неправильно с тем, как я пытаюсь подсчитать записи? Кто-нибудь видит, почему это не работает?
Таблица БД - показать таблицу создания
projectslider
CREATE TABLE 'projectslider' (
'id' int(11) NOT NULL AUTO_INCREMENT,
'solution' varchar(50) NOT NULL,
'image' text NOT NULL,
'alt' text NOT NULL,
PRIMARY KEY ('id')
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1
Код на отдельных страницах:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
$page = "enclosures";
include_once("projectSlider.php");
?>
Главная страница - projectSlider.php
error_reporting(E_ALL);
ini_set('display_errors', 1);
$servername = 'localhost';
$username = 'root';
$password = '';
try {
$con = new PDO('mysql:host='.$servername.';dbname=mb', $username, $password);
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//$page = mysql_real_escape_string($page);
//SQL Call
$sql_project = "
SELECT *, COUNT(solution) AS solution_count
FROM projectslider
WHERE solution = '. $page .'
";
if ($project_stmt = $con->prepare($sql_project)) {
$project_stmt->execute();
$project_rows = $project_stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($project_rows as $project_row) {
$solution_count = $project_row['solution_count'];
echo $solution_count;
$project_solution = $project_row['solution'];
$project_img = $project_row['image'];
$project_alt = $project_row['alt'];
$project_img = '<img class="home-comment-profile-pic" src=" '. $project_img .'" alt="' . $project_alt .'">';
if ($solution_count === 0) {
echo 'No projects found.';
} else {
echo '<section id="solProj">';
echo '<div class="projSlide">';
echo $project_img;
echo '</div>';
echo '</div>';
}
}
}
}
catch(PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
В одном проекте есть много слайдеров, для этого у вас должно быть два проекта таблиц и проектных лиц с отношениями.
таблица проектов:
CREATE TABLE 'projects' (
'id' int(11) NOT NULL AUTO_INCREMENT,
'project_name' varchar(50) NOT NULL
)
projectsliders:
CREATE TABLE 'projectsliders' (
'id' int(11) NOT NULL AUTO_INCREMENT,
'solution' varchar(50) NOT NULL,
'image' text NOT NULL,
'alt' text NOT NULL,
'project_id' int(11),
PRIMARY KEY ('id')
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1
выборка проекта для одного проекта, главная страница - projectSlider.php
Лучший способ извлечения проектов для одного проекта - использовать ООП, вы можете вызвать метод и передать идентификатор проекта, и метод должен вернуть вам массив с projectliders для этого проекта, но я улучшаю ваш код.
error_reporting(E_ALL);
ini_set('display_errors', 1);
$servername = 'localhost';
$username = 'root';
$password = '';
try {
$con = new PDO('mysql:host='.$servername.';dbname=mb', $username,
$password);
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//$page = mysql_real_escape_string($page);
//SQL Call
$sql_project = "SELECT * FROM projectsliders ps inner join projects p
on p.id = ps.project_id
WHERE p.project_name = '. $project_page .'";
if ($project_stmt = $con->prepare($sql_project)) {
$project_stmt->execute();
$count = project_stmt->rowCount();
if( $count != 0 ){
$project_rows = $project_stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($project_rows as $project_row) {
$project_solution = $project_row['solution'];
$project_img = $project_row['image'];
$project_alt = $project_row['alt'];
$project_img = '<img class="home-comment-profile-pic" src=" '.
$project_img .'" alt="' . $project_alt .'">';
echo '<section id="solProj">';
echo '<div class="projSlide">';
echo $project_img;
echo '</div>';
echo '</div>';
}
}else{
echo 'No projects found.';
}
}
}
catch(PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
Отдельные страницы:
error_reporting(E_ALL);
ini_set('display_errors', 1);
$project_page = "enclosures";
include_once("projectSlider.php");
Надеюсь, это поможет вам, наслаждаясь кодированием.
===
который также проверяет тип значения.var_dump($solution_count)
и сравните его с 0.