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 :)

9 réponses


Bonjour,

vérifie les accolades { } , il y a surement un bloc mal fermé

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...

Tu es bien sur le fichier load.php ?

Tu es sur quel OS?

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 :)

Une idée ?