Предупреждение: неверный аргумент указан для foreach() -> для попытки сделать подкачку на динамической странице
На этот вопрос уже нет ответа: оператор PDO возвращает ЛОЖЬ 1 ответ
Вышеуказанный вопрос - только обработка ошибок, смотрите ошибки, которые я получаю(уже есть обработка ошибок) и все мои запросы работают, если я запускаю их в phpmyadmin.
Привет, я пытаюсь попасть на мою динамическую страницу. Но я получаю предупреждение:
Предупреждение: неверный аргумент указан для foreach() в строке 137
Я пытался это исправить, но я могу заставить его работать. Я пытался изменить
foreach($results as $row)
Для того, чтобы:
foreach($row = $results->fetch(PDO::FETCH_ASSOC))
А также
foreach($row = $results->fetchAll())
Но чем я получаю ошибку:
Ошибка разбора: синтаксическая ошибка, неожиданная ')' в строке 137
Я попытался найти ответ в Интернете, но я могу найти тот, который решает эту проблему.
Кто-нибудь знает, как я могу это исправить? И что я делаю не так... Я пытаюсь работать с PDO. Я все еще немного новичок в PHP и PDO.
Мой код:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<?php
include('php/loginHandlerconnect.php');
ini_set('display_errors',1);
ini_set('display_startup_errors',1);
error_reporting(-1);
$db = loginHandlerconnect();
//$tableName="vacature";
$targetpage = "vacatureoverzicht";
$limit = 10;
$query = "SELECT COUNT(vacatureID) as num FROM vacature";
$res = $db->query($query);
$total_pages = $res->fetch(PDO::FETCH_ASSOC);
$total_pages = $total_pages['num'];
$stages = 3;
$page = $db->quote($_GET['page']);
if($page){
$start = ($page - 1) * $limit;
}else{
$start = 0;
}
$sql = 'SELECT vacature.*, werkgever.image, werkgever.plaats, werkgever.provincie, werkgever.naamBedrijf FROM vacature LEFT JOIN werkgever ON (vacature.werkgeverID = werkgever.werkgeverID) ORDER BY vacature.datum DESC LIMIT '. $start .', '. $limit .'';
$results = $db->query($sql);
// Initial page num setup
if ($page == 0){$page = 1;}
$prev = $page - 1;
$next = $page + 1;
$lastpage = ceil($total_pages/$limit);
$LastPagem1 = $lastpage - 1;
$paginate = '';
if($lastpage > 1)
{
$paginate .= "<div class='paginate'>";
// Previous
if ($page > 1){
$paginate.= "<a href='$targetpage?page=$prev'>previous</a>";
}else{
$paginate.= "<span class='disabled'>previous</span>"; }
// Pages
if ($lastpage < 7 + ($stages * 2)) // Not enough pages to breaking it up
{
for ($counter = 1; $counter <= $lastpage; $counter++)
{
if ($counter == $page){
$paginate.= "<span class='current'>$counter</span>";
}else{
$paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}
}
}
elseif($lastpage > 5 + ($stages * 2)) // Enough pages to hide a few?
{
// Beginning only hide later pages
if($page < 1 + ($stages * 2))
{
for ($counter = 1; $counter < 4 + ($stages * 2); $counter++)
{
if ($counter == $page){
$paginate.= "<span class='current'>$counter</span>";
}else{
$paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}
}
$paginate.= "...";
$paginate.= "<a href='$targetpage?page=$LastPagem1'>$LastPagem1</a>";
$paginate.= "<a href='$targetpage?page=$lastpage'>$lastpage</a>";
}
// Middle hide some front and some back
elseif($lastpage - ($stages * 2) > $page && $page > ($stages * 2))
{
$paginate.= "<a href='$targetpage?page=1'>1</a>";
$paginate.= "<a href='$targetpage?page=2'>2</a>";
$paginate.= "...";
for ($counter = $page - $stages; $counter <= $page + $stages; $counter++)
{
if ($counter == $page){
$paginate.= "<span class='current'>$counter</span>";
}else{
$paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}
}
$paginate.= "...";
$paginate.= "<a href='$targetpage?page=$LastPagem1'>$LastPagem1</a>";
$paginate.= "<a href='$targetpage?page=$lastpage'>$lastpage</a>";
}
// End only hide early pages
else
{
$paginate.= "<a href='$targetpage?page=1'>1</a>";
$paginate.= "<a href='$targetpage?page=2'>2</a>";
$paginate.= "...";
for ($counter = $lastpage - (2 + ($stages * 2)); $counter <= $lastpage; $counter++)
{
if ($counter == $page){
$paginate.= "<span class='current'>$counter</span>";
}else{
$paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}
}
}
}
// Next
if ($page < $counter - 1){
$paginate.= "<a href='$targetpage?page=$next'>next</a>";
}else{
$paginate.= "<span class='disabled'>next</span>";
}
$paginate.= "</div>";
}
echo $total_pages.' Results';
// pagination
echo $paginate;
/*
ini_set('display_errors',1);
ini_set('display_startup_errors',1);
error_reporting(-1);
*/
/*
* Nu hebben we een resultset met de volgende data per row
* vacatureID
* werkgeverID
* functie
* datum
* omschrijvingKort
* omschrijving
* image (werkgever)
* plaats (werkgever)
* provincie (werkgever)
* naamBedrijf (werkgever)
*/
foreach($results as $row) // line 137
{
//Clean record
cleanRecord($row);
echo generateDiv($row);
}
function cleanRecord($row)
{
if (strlen($row['functie']) > 20) {
// truncate string
$stringCut = substr($row['functie'], 0, 20);
// make sure it ends in a word so assassinate doesn't become ass...
$row['functie'] = substr($stringCut, 0, strrpos($stringCut, ' ')).'...';
}
if (strlen($row['naamBedrijf']) > 25) {
// truncate string
$stringCut2 = substr($row['naamBedrijf'], 0, 14);
// make sure it ends in a word so assassinate doesn't become ass...
$row['naamBedrijf'] = substr($stringCut2, 0, strrpos($stringCut2, ' ')).'...';
}
if (strlen($row['omschrijvingKort']) > 63) {
// truncate string
$stringCut2 = substr($row['omschrijvingKort'], 0, 63);
// make sure it ends in a word so assassinate doesn't become ass...
$row['omschrijvingKort'] = substr($stringCut2, 0, strrpos($stringCut2, ' ')).'...';
}
return $row;
}
function generateDiv($row)
{
$date = date("d-m-Y", strtotime($row['datum']));
return "
<div class='vacatureinfo2'>
<img class='userimg2' src='../../uploads/userimage/". $row['image'] ."' id='imge'/>
<p class='func-br-pl pull-left'>". $row['functie'] ." - ". $row['naamBedrijf'] ." - ". $row['plaats'] ."</p><p class='dtm pull-right'>". $date ."</p>
<div class='omschrijvingkort2'>
". $row['omschrijvingKort'] ."
</div>
<p class='pull-right'><a href='reactie?id=" . $row['vacatureID'] . "'>Reageer</a> | <a href='informatie-vacature?id=" . $row['vacatureID'] . "'>Meer informatie</a></p>
</div>
<hr>
";
}
?>
ОБНОВИТЬ:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<?php
include('php/loginHandlerconnect.php');
ini_set('display_errors',1);
ini_set('display_startup_errors',1);
error_reporting(-1);
$db = loginHandlerconnect();
$targetpage = "vacatureoverzicht";
$limit = 10;
$query = "SELECT COUNT(vacatureID) as num FROM vacature";
$res = $db->query($query);
$total_pages = $res->fetch(PDO::FETCH_ASSOC);
$total_pages = $total_pages['num'];
$stages = 3;
$page = $db->quote($_GET['page']);
if($page){
$start = ($page - 1) * $limit;
}else{
$start = 0;
}
$sql = $db->query('SELECT vacature.*, werkgever.image, werkgever.plaats, werkgever.provincie, werkgever.naamBedrijf FROM vacature LEFT JOIN werkgever ON (vacature.werkgeverID = werkgever.werkgeverID) ORDER BY vacature.datum DESC LIMIT '. $start .', '. $limit .'');
$results = $sql->fetchAll();
// Initial page num setup
if ($page == 0){$page = 1;}
$prev = $page - 1;
$next = $page + 1;
$lastpage = ceil($total_pages/$limit);
$LastPagem1 = $lastpage - 1;
$paginate = '';
if($lastpage > 1)
{
$paginate .= "<div class='paginate'>";
// Previous
if ($page > 1){
$paginate.= "<a href='". $targetpage ."?page=". $prev ."'>previous</a>";
}else{
$paginate.= "<span class='disabled'>previous</span>";
}
// Pages
if ($lastpage < 7 + ($stages * 2)) // Not enough pages to breaking it up
{
for ($counter = 1; $counter <= $lastpage; $counter++)
{
if ($counter == $page){
$paginate.= "<span class='current'>". $counter ."</span>";
}else{
$paginate.= "<a href='". $targetpage ."?page=". $counter ."'>". $counter ."</a>";}
}
}
elseif($lastpage > 5 + ($stages * 2)) // Enough pages to hide a few?
{
// Beginning only hide later pages
if($page < 1 + ($stages * 2))
{
for ($counter = 1; $counter < 4 + ($stages * 2); $counter++)
{
if ($counter == $page){
$paginate.= "<span class='current'>". $counter ."</span>";
}else{
$paginate.= "<a href='". $targetpage ."?page=". $counter ."'>". $counter ."</a>";}
}
$paginate.= "...";
$paginate.= "<a href='". $targetpage ."?page=". $LastPagem1 ."'>". $LastPagem1 ."</a>";
$paginate.= "<a href='". $targetpage ."?page=". $lastpage ."'>". $lastpage ."</a>";
}
// Middle hide some front and some back
elseif($lastpage - ($stages * 2) > $page && $page > ($stages * 2))
{
$paginate.= "<a href='". $targetpage ."?page=1'>1</a>";
$paginate.= "<a href='". $targetpage ."?page=2'>2</a>";
$paginate.= "...";
for ($counter = $page - $stages; $counter <= $page + $stages; $counter++)
{
if ($counter == $page){
$paginate.= "<span class='current'>". $counter ."</span>";
}else{
$paginate.= "<a href='". $targetpage ."?page=". $counter ."'>". $counter ."</a>";}
}
$paginate.= "...";
$paginate.= "<a href='". $targetpage ."?page=". $LastPagem1 ."'>". $LastPagem1 ."</a>";
$paginate.= "<a href='". $targetpage ."?page=". $lastpage ."'>". $lastpage ."</a>";
}
// End only hide early pages
else
{
$paginate.= "<a href='". $targetpage ."?page=1'>1</a>";
$paginate.= "<a href='". $targetpage ."?page=2'>2</a>";
$paginate.= "...";
for ($counter = $lastpage - (2 + ($stages * 2)); $counter <= $lastpage; $counter++)
{
if ($counter == $page){
$paginate.= "<span class='current'>". $counter ."</span>";
}else{
$paginate.= "<a href='". $targetpage ."?page=". $counter ."'>". $counter ."</a>";}
}
}
}
// Next
if ($page < $counter - 1){
$paginate.= "<a href='". $targetpage ."?page=". $next ."'>next</a>";
}else{
$paginate.= "<span class='disabled'>next</span>";
}
$paginate.= "</div>";
}
echo $total_pages.' vacatures';
/*
ini_set('display_errors',1);
ini_set('display_startup_errors',1);
error_reporting(-1);
*/
/*
* Nu hebben we een resultset met de volgende data per row
* vacatureID
* werkgeverID
* functie
* datum
* omschrijvingKort
* omschrijving
* image (werkgever)
* plaats (werkgever)
* provincie (werkgever)
* naamBedrijf (werkgever)
*/
foreach($results as $row)
{
//Clean record
cleanRecord($row);
echo generateDiv($row);
}
function cleanRecord($row)
{
if (strlen($row['functie']) > 20) {
// truncate string
$stringCut = substr($row['functie'], 0, 20);
// make sure it ends in a word so assassinate doesn't become ass...
$row['functie'] = substr($stringCut, 0, strrpos($stringCut, ' ')).'...';
}
if (strlen($row['naamBedrijf']) > 25) {
// truncate string
$stringCut2 = substr($row['naamBedrijf'], 0, 14);
// make sure it ends in a word so assassinate doesn't become ass...
$row['naamBedrijf'] = substr($stringCut2, 0, strrpos($stringCut2, ' ')).'...';
}
if (strlen($row['omschrijvingKort']) > 63) {
// truncate string
$stringCut2 = substr($row['omschrijvingKort'], 0, 63);
// make sure it ends in a word so assassinate doesn't become ass...
$row['omschrijvingKort'] = substr($stringCut2, 0, strrpos($stringCut2, ' ')).'...';
}
return $row;
}
function generateDiv($row)
{
$date = date("d-m-Y", strtotime($row['datum']));
return "
<div class='vacatureinfo2'>
<img class='userimg2' src='../../uploads/userimage/". $row['image'] ."' id='imge'/>
<p class='func-br-pl pull-left'>". $row['functie'] ." - ". $row['naamBedrijf'] ." - ". $row['plaats'] ."</p><p class='dtm pull-right'>". $date ."</p>
<div class='omschrijvingkort2'>
". $row['omschrijvingKort'] ."
</div>
<p class='pull-right'><a href='reactie?id=" . $row['vacatureID'] . "'>Reageer</a> | <a href='informatie-vacature?id=" . $row['vacatureID'] . "'>Meer informatie</a></p>
</div>
<hr>
";
}
// pagination
echo $paginate;
?>
ОБНОВЛЕНИЕ 2:
Может быть, когда что-то не так с изменением кода ниже на PDO?
<?php
include('connect.php');
$tableName="vacature";
$targetpage = "testpaging2.php";
$limit = 10;
$query = "SELECT COUNT(vacatureID) as num FROM $tableName";
$total_pages = mysql_fetch_array(mysql_query($query));
$total_pages = $total_pages[num];
$stages = 3;
$page = mysql_escape_string($_GET['page']);
if($page){
$start = ($page - 1) * $limit;
}else{
$start = 0;
}
// Get page data
$query1 = "SELECT vacature.*, werkgever.image, werkgever.plaats, werkgever.provincie, werkgever.naamBedrijf FROM vacature LEFT JOIN werkgever ON (vacature.werkgeverID = werkgever.werkgeverID) ORDER BY vacature.datum DESC LIMIT $start, $limit";
$result = mysql_query($query1);
// Initial page num setup
if ($page == 0){$page = 1;}
$prev = $page - 1;
$next = $page + 1;
$lastpage = ceil($total_pages/$limit);
$LastPagem1 = $lastpage - 1;
$paginate = '';
if($lastpage > 1)
{
$paginate .= "<div class='paginate'>";
// Previous
if ($page > 1){
$paginate.= "<a href='$targetpage?page=$prev'>previous</a>";
}else{
$paginate.= "<span class='disabled'>previous</span>"; }
// Pages
if ($lastpage < 7 + ($stages * 2)) // Not enough pages to breaking it up
{
for ($counter = 1; $counter <= $lastpage; $counter++)
{
if ($counter == $page){
$paginate.= "<span class='current'>$counter</span>";
}else{
$paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}
}
}
elseif($lastpage > 5 + ($stages * 2)) // Enough pages to hide a few?
{
// Beginning only hide later pages
if($page < 1 + ($stages * 2))
{
for ($counter = 1; $counter < 4 + ($stages * 2); $counter++)
{
if ($counter == $page){
$paginate.= "<span class='current'>$counter</span>";
}else{
$paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}
}
$paginate.= "...";
$paginate.= "<a href='$targetpage?page=$LastPagem1'>$LastPagem1</a>";
$paginate.= "<a href='$targetpage?page=$lastpage'>$lastpage</a>";
}
// Middle hide some front and some back
elseif($lastpage - ($stages * 2) > $page && $page > ($stages * 2))
{
$paginate.= "<a href='$targetpage?page=1'>1</a>";
$paginate.= "<a href='$targetpage?page=2'>2</a>";
$paginate.= "...";
for ($counter = $page - $stages; $counter <= $page + $stages; $counter++)
{
if ($counter == $page){
$paginate.= "<span class='current'>$counter</span>";
}else{
$paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}
}
$paginate.= "...";
$paginate.= "<a href='$targetpage?page=$LastPagem1'>$LastPagem1</a>";
$paginate.= "<a href='$targetpage?page=$lastpage'>$lastpage</a>";
}
// End only hide early pages
else
{
$paginate.= "<a href='$targetpage?page=1'>1</a>";
$paginate.= "<a href='$targetpage?page=2'>2</a>";
$paginate.= "...";
for ($counter = $lastpage - (2 + ($stages * 2)); $counter <= $lastpage; $counter++)
{
if ($counter == $page){
$paginate.= "<span class='current'>$counter</span>";
}else{
$paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}
}
}
}
// Next
if ($page < $counter - 1){
$paginate.= "<a href='$targetpage?page=$next'>next</a>";
}else{
$paginate.= "<span class='disabled'>next</span>";
}
$paginate.= "</div>";
}
echo $total_pages.' Results';
while($row = mysql_fetch_array($result))
{
echo "
<div class='vacatureinfo2'>
<img class='userimg2' src='../../uploads/userimage/". $row['image'] ."' id='imge'/>
<p class='func-br-pl pull-left'>". $row['functie'] ." - ". $row['naamBedrijf'] ." - ". $row['plaats'] ."</p><p class='dtm pull-right'>". $date ."</p>
<div class='omschrijvingkort2'>
". $row['omschrijvingKort'] ."
</div>
<p class='pull-right'><a href='reactie?id=" . $row['vacatureID'] . "'>Reageer</a> | <a href='informatie-vacature?id=" . $row['vacatureID'] . "'>Meer informatie</a></p>
</div>
<hr>";
}
// pagination
echo $paginate;
Потому что, когда я запускаю эту страницу, она работает! Но это не PDO... Посмотрите код перед этим обновлением, чтобы увидеть, как я изменил код на PDO. Обратите внимание, что я также использую функции в этом коде! Если я знаю, что я делаю неправильно с изменением PDO, возможно, это решит эту проблему? Но я не знаю, что я делаю не так!!
1 ответ
Попробуйте обновить
$sql = 'SELECT vacature.*, werkgever.image, werkgever.plaats, werkgever.provincie, werkgever.naamBedrijf FROM vacature LEFT JOIN werkgever ON (vacature.werkgeverID = werkgever.werkgeverID) ORDER BY vacature.datum DESC LIMIT '. $start .', '. $limit .'';
$results = $db->query($sql);
к
$sql = $db->query('SELECT vacature.*, werkgever.image, werkgever.plaats, werkgever.provincie, werkgever.naamBedrijf FROM vacature LEFT JOIN werkgever ON (vacature.werkgeverID = werkgever.werkgeverID) ORDER BY vacature.datum DESC LIMIT '. $start .', '. $limit .'');
$results = $db->fetchAll($sql);
На самом деле без выполнения fetchAll ваш $result был объектом запроса PDO
И с foreach($row = $results->fetch(PDO::FETCH_ASSOC))
вы только что инициализировали переменную $row, которую забыли определить там значение $, так что синтаксис должен был быть foreach($array = $results->fetch(PDO::FETCH_ASSOC) as $row)
Хотя я не слишком уверен, сможем ли мы $array = $results->fetch(PDO::FETCH_ASSOC)
в foreach или нет