Bonsoir,
J'ai tenté de suivre le tutoriel pour réaliser une pagination en ajax mais je me retrouve avec un soucis de code au niveau du php, avec donc comme erreur :
Parse error: syntax error, unexpected end of file in /customers/9/2/e/alexandre-ribes.fr/httpd.www/galerie/load.php on line 44
Et très honnêtement je ne vois pas en quoi mon code se finit mal, sachant qu'en faisant quelques tests, j'ai exactement la même erreur en voulant afficher un simple echo dans ma condition :/. N'étant pas bon du tout en javascript je ne vois pas si l'erreur pourrait provenir de là, ou simplement d'une mauvaise sélection de div ou de class dans ma page appelant le code. Si quelqu'un a une idée je suis preneur :)
Alors voici le bout de code en question :
if(isset($_GET'lastid']))
{
$last_id = $db->quote(intval($_GET'lastid']));
//$cat_slug = $db->quote($_GET'slug']);
//$cat_i = $db->query("SELECT c_id, c_name, c_slug FROM " . PREFIX . "cats WHERE c_slug=$cat_slug")->fetch();
// On récupère les items de la catégorie
//$cat_id = $db->quote($cat_i'c_id']);
//$cat_name = $cat_i'c_name'];
$items = $db->query("
SELECT i.*, img.img_name FROM " . PREFIX . "items i
LEFT JOIN " . PREFIX . "images img
ON img.img_id = i.i_image
WHERE i.i_cat_id=$cat_id AND i.i_id < $last_id
ORDER BY i.i_id DESC
LIMIT 0,9
")->fetchAll();
?>
<?php foreach($items as $item): ?>
<div class="col-sm-6 col-md-4" id="<?= $item'_id']; ?>">
<div class="well" align="center">
<h3><a href="<?= WEBROOT; ?>item/<?= $item'i_slug']; ?>"><?= $item'i_name']; ?></a></h3>
<a href="<?= WEBROOT; ?>item/<?= $item'i_slug']; ?>">
<img class="thumbnail" src="<?= WEBROOT; ?>img/works/<?= $item'img_name']; ?>" style="width: 200px; height: 200px;" alt="<?= $item'i_name']; ?>">
</a>
<div class="caption">
<p><?= extrait($item'i_content'], 120); ?></p>
</div>
</div>
</div>
<?php endforeach; ?>
}
et la partie javascript :
<script type="text/javascript">
$(window).scroll(function(){
if($(window).scrollTop() == $(document).height() - $(window).height()){
$('#loader').show();
$.ajax({
url: "<?= WEBROOT; ?>load.php?lastid=" + $(".col-sm-6 col-md-4:last").attr("id"),
success: function(html){
if(html){
$(".row").append(html);
$('#loader').hide();
}else{
alert('There are no more items in this category.');
}
}
})
}
});
</script>
Et à la rigueur la partie du fichier qui appelle ce script
if(isset($_GET'slug']))
{
// On récupère le nom de la catégorie
$cat_slug = $db->quote($_GET'slug']);
$cat_i = $db->query("SELECT c_id, c_name, c_slug FROM " . PREFIX . "cats WHERE c_slug=$cat_slug")->fetch();
// On récupère les items de la catégorie
$cat_id = $db->quote(intval($cat_i'c_id']));
$cat_name = $cat_i'c_name'];
$items = $db->query("
SELECT i.*, img.img_name FROM " . PREFIX . "items i
LEFT JOIN " . PREFIX . "images img
ON img.img_id = i.i_image
WHERE i.i_cat_id=$cat_id
ORDER BY i.i_id DESC
LIMIT 0,9
")->fetchAll();
// On inclut le header
include('partials/header.php');
?>
<div class="container">
<p> </p>
<p> </p>
<div class="container">
<div class="media">
<a class="pull-left" href="<?= WEBROOT; ?>"><img class="media-object" src="<?= WEBROOT; ?>img/logo.jpg" style="width:64px; height:64px;" alt="Deconuts"></a>
<div class="media-body">
<h2><a href="<?= WEBROOT; ?>">Home</a> » <a href="<?= WEBROOT; ?>categories">Categories</a> » <?= $cat_name; ?></h2>
</div>
</div>
<hr>
</div>
<div class="row">
<?php if(count($items) > 0): ?>
<?php foreach($items as $item): ?>
<div class="col-sm-6 col-md-4" id="<?= $item'i_id']; ?>">
<div class="well" align="center">
<h3><a href="<?= WEBROOT; ?>item/<?= $item'i_slug']; ?>"><?= $item'i_name']; ?></a></h3>
<a href="<?= WEBROOT; ?>item/<?= $item'i_slug']; ?>">
<img class="thumbnail" src="<?= WEBROOT; ?>img/works/<?= $item'img_name']; ?>" style="width: 200px; height: 200px;" alt="<?= $item'i_name']; ?>">
</a>
<div class="caption">
<p><?= extrait($item'i_content'], 120); ?></p>
</div>
</div>
</div>
<?php endforeach; ?>
</div>
<div id="loader"><img src="<?= WEBROOT; ?>img/ajax-loader.gif"></div>
<?php else: ?>
<div class="well">
<p>Aucun article</p>
</div>
<?php endif; ?>
</div>
<?php
// On inclut le footer
include('partials/footer.php');
exit;
}
Encore une fois je vous remercie d'avance pour votre patience et votre gentillesse :)
Justement non :/
Le Javascript tout semble bon et un simple
if(isset($_GET'lastid'])){ echo "salut"; ?> }
me retourne la même erreur :/
Ce n'est pas au niveau javascript qu'il y a un problème mais au niveau du php..
C'est l'interpréteur php qui plante au parsing d'un fichier
J'ai bien compris merci, mais avec un echo pour seul code honnêtement je ne vois pas...
Sous Mac mais quel rapport ?
Mon fichier load.php actuel :
/*
** Scrool des items
*/
$auth = 0;
$categories = TRUE;
// On inclut les librairies
include(WEBROOT . 'libs/db.php');
// On récupère le nom de la catégorie
if(isset($_GET'lastid']))
{
/*$last_id = $db->quote(intval($_GET'lastid']));
//$cat_slug = $db->quote($_GET'slug']);
//$cat_i = $db->query("SELECT c_id, c_name, c_slug FROM " . PREFIX . "cats WHERE c_slug=$cat_slug")->fetch();
// On récupère les items de la catégorie
//$cat_id = $db->quote($cat_i'c_id']);
//$cat_name = $cat_i'c_name'];
$items = $db->query("
SELECT i.*, img.img_name FROM " . PREFIX . "items i
LEFT JOIN " . PREFIX . "images img
ON img.img_id = i.i_image
WHERE i.i_cat_id=$cat_id AND i.i_id < $last_id
ORDER BY i.i_id DESC
LIMIT 0,9
")->fetchAll();
var_dump($items);
*/
echo "salut";
?>
<?php
/*foreach($items as $item): ?>
<div class="col-sm-6 col-md-4" id="<?= $item'_id']; ?>">
<div class="well" align="center">
<h3><a href="<?= WEBROOT; ?>item/<?= $item'i_slug']; ?>"><?= $item'i_name']; ?></a></h3>
<a href="<?= WEBROOT; ?>item/<?= $item'i_slug']; ?>">
<img class="thumbnail" src="<?= WEBROOT; ?>img/works/<?= $item'img_name']; ?>" style="width: 200px; height: 200px;" alt="<?= $item'i_name']; ?>">
</a>
<div class="caption">
<p><?= extrait($item'i_content'], 120); ?></p>
</div>
</div>
</div>
<?php endforeach; */ ?>
}
?>
Tout le code est commenté donc bon :/
Bonjour,
Ben non le code est pas bon
Ligne 49 si tu ferme php avant la fermeture de ton if ça ne peut pas fonctionner, meme pour un simple echo...
Cordialement
C'est exact, ça m'apprendra à ne pas faire attention :/
J'ai cependant toujours un soucis. La pagination semble marcher, sauf qu'elle se limite à 9 items par pages, alors que dans la catégorie présente il y en a bien plus. Le script mouline mais ne me ressort aucun résultat.
Voici le fichier qui appelle le script en ajax :
if(isset($_GET'slug']))
{
// On récupère le nom de la catégorie
$cat_slug = $db->quote($_GET'slug']);
$cat_i = $db->query("SELECT c_id, c_name, c_slug FROM " . PREFIX . "cats WHERE c_slug=$cat_slug")->fetch();
// On récupère les items de la catégorie
$cat_id = $db->quote(intval($cat_i'c_id']));
$cat_name = $cat_i'c_name'];
$items = $db->query("
SELECT i.*, img.img_name FROM " . PREFIX . "items i
LEFT JOIN " . PREFIX . "images img
ON img.img_id = i.i_image
WHERE i.i_cat_id=$cat_id
ORDER BY i.i_id ASC
LIMIT 0,9
")->fetchAll();
// On inclut le header
include('partials/header.php');
?>
<div class="container">
<p> </p>
<p> </p>
<div class="container">
<div class="media">
<a class="pull-left" href="<?= WEBROOT; ?>"><img class="media-object" src="<?= WEBROOT; ?>img/logo.jpg" style="width:64px; height:64px;" alt="Deconuts"></a>
<div class="media-body">
<h2><a href="<?= WEBROOT; ?>">Home</a> » <a href="<?= WEBROOT; ?>categories">Categories</a> » <?= $cat_name; ?></h2>
</div>
</div>
<hr>
</div>
<div class="row">
<?php
$count = 0;
$nb_ligne = ceil(count($items) / 3);
if( count($items) > 0 ): ?>
<?php for($i = 0; $i < $nb_ligne; $i++ ): ?>
<div class="row">
<?php for($j = 0; $j < 3; $j++): ?>
<div class="col-md-4" id="<?= $items$count]'i_id']; ?>">
<div class="well" align="center">
<h3 class="text-capitalize"><a href="<?= WEBROOT; ?>item/<?= $items$count]'i_slug']; ?>"><?= $items$count]'i_name']; ?></a></h3>
<a href="<?= WEBROOT; ?>item/<?= $items$count]'i_slug']; ?>">
<?php if(!empty($items$count]'img_name'])): ?>
<img class="thumbnail" src="<?= WEBROOT; ?>img/works/<?= $items$count]'img_name']; ?>" style="width: 200px; height: 175px;" alt="<?= $items$count]'i_name']; ?>">
<?php else: ?>
<img class="thumbnail" src="<?= WEBROOT; ?>img/logo.jpg" style="width: 150px; height: 150px;" alt="<?= $items$count]'i_name']; ?>">
<?php endif; ?>
</a>
</div>
</div>
<?php if( $count == (count($items) - 1) )
{
break;
}
$count++;
endfor; ?>
</div>
<?php endfor; ?>
<div id="loader"><img src="<?= WEBROOT; ?>img/ajax-loader.gif"></div>
<?php else: ?>
<div class="well">
<p>Aucun article</p>
</div>
<?php endif; ?>
</div>
<?php
// On inclut le footer
include('partials/footer.php');
exit;
}
l'autoload :
<?php
/*
** Scrool des items
*/
$auth = 0;
$categories = TRUE;
// On inclut les librairies
include('libs/db.php');
include('libs/constants.php');
// On récupère le nom de la catégorie
if(isset($_GET'lastid'])):
$last_id = $db->quote(intval($_GET'lastid']));
$cat_slug = $db->quote($_GET'slug']);
$cat_i = $db->query("SELECT c_id, c_name, c_slug FROM " . PREFIX . "cats WHERE c_slug=$cat_slug")->fetch();
// On récupère les items de la catégorie
$cat_id = $db->quote($cat_i'c_id']);
$cat_name = $cat_i'c_name'];
$items = $db->query("
SELECT i.*, img.img_name FROM " . PREFIX . "items i
LEFT JOIN " . PREFIX . "images img
ON img.img_id = i.i_image
WHERE i.i_cat_id=$cat_id AND i.i_id < $last_id
ORDER BY i.i_id DESC
LIMIT 0,9
")->fetchAll();
$count = 0;
$nb_ligne = ceil(count($items) / 3);
for($i = 0; $i < $nb_ligne; $i++ ): ?>
<div class="row">
<?php for($j = 0; $j < 3; $j++): ?>
<div class="col-md-4" id="<?= $items$count]'i_id']; ?>">
<div class="well" align="center">
<h3 class="text-capitalize"><a href="<?= WEBROOT; ?>item/<?= $items$count]'i_slug']; ?>"><?= $items$i]'i_name']; ?></a></h3>
<a href="<?= WEBROOT; ?>item/<?= $items$count]'i_slug']; ?>">
<img class="thumbnail" src="<?= WEBROOT; ?>img/works/<?= $items$count]'img_name']; ?>" style="width: 200px; height: 200px;" alt="<?= $items$count]'i_name']; ?>">
</a>
</div>
</div>
<?php if( $count == (count($items) - 1) )
{
break;
}
$count++;
endfor; ?>
</div>
<?php endfor;
endif;
?>
et au cas ou le header :
<script type="text/javascript">
$(window).scroll(function(){
if($(window).scrollTop() == $(document).height() - $(window).height())
{
$('#loader').show();
$.ajax({
url: "<?= WEBROOT; ?>load.php?lastid=" + $(".col-md-4:last").attr("id"),
success: function(html){
if(html)
{
$(".row").append(html);
$('#loader').hide();
}
else
{
alert('There are no more items in this category.');
}
}
})
}
});
</script>
Ca marchait avant mais j'ai du modifier ma présentation en ajoutant des boucles "for" pour respecter un certain alignement, et depuis ça ne marche plus :/
J'ai pourtant bien gardé les paramètres ajax :/
Si quelqu'un a une idée, je suis preneur :)