Foros del Web » Programando para Internet » Jquery »

Problema al guardar datos en base de datos y scroll infinito

Estas en el tema de Problema al guardar datos en base de datos y scroll infinito en el foro de Jquery en Foros del Web. Buen día amigos, Estoy teniendo un problema que me tiene rompiendo la cabeza ya varios dias, estoy programando un muro (tipo facebook) y tengo dos ...
  #1 (permalink)  
Antiguo 04/01/2017, 18:46
Avatar de JethCrew  
Fecha de Ingreso: marzo-2012
Ubicación: México
Mensajes: 67
Antigüedad: 12 años, 9 meses
Puntos: 3
Problema al guardar datos en base de datos y scroll infinito

Buen día amigos,

Estoy teniendo un problema que me tiene rompiendo la cabeza ya varios dias, estoy programando un muro (tipo facebook) y tengo dos problemas que no eh podido solucionar y ojala pudieran orientarme.

Problema #1. El scroll automatico no funciona correctamente, debería de mostrar los datos que le siguen al último post pero vuelve a mostrar los mismos datos en todas las paginas que le des para abajo.

Problema #2. Despues de bajar el scroll y que se vuelven a mostrar los datos repetidos ya no puedo interactuar con ellos como comentarlos o darle like porque me dice que el formulario esta vacío.

Dejo el código del wall.php

Código:
<?php
include_once("header.php");

$limit = 5; #item per page
$user_id = $_SESSION['user_id'];
$page = (int) (!isset($_GET['p'])) ? 1 : $_GET['p'];
# sql query
$sql = "SELECT p.*,u.name as username, pl.like_id from fb_post p left join fb_users u on u.user_id = p.user_id left join fb_post_likes pl on pl.post_id = p.post_id and pl.user_id = '$user_id' group by p.post_id order by post_id desc";
# find out query stat point
$start = ($page * $limit) - $limit;
# query for page navigation
if( mysql_num_rows(mysql_query($sql)) > ($page * $limit) ){
	$next = $page + 1;
}
$query = mysql_query( $sql . " LIMIT {$start}, {$limit}");
if (mysql_num_rows($query) < 1) {
	header('HTTP/1.0 404 Not Found');
	echo 'Page not found!';
	exit();
}

if(!isset($_SESSION['user_id']) || $_SESSION['user_id'] == ""){
    header("location:index.php");
}
?>

<div class="wrapper">
    <div class="middle_box">
        <div class="feed_form">
            <form action="" id="frmpost" method="post">      
                <div class="row_ele">
                    <textarea name="post_feed" id="post_feed" class="textarea" rows="3" placeholder="What's on your mind?"></textarea>
                </div>  
                <div class="row_ele">
                    <input class="btn" id="btnpost" type="button" name="submit" value="Post"/>
                </div>
            </form>
        </div>
        <div class="clear"></div>
        <div class="feed_div" id="feed_div">
<!-- loop row data -->
	<?php while ($post = mysql_fetch_array($query)): ?>
            <?php
                    $comments = getPostComments($post['post_id']);
            ?>
                <div class="feed_box" id="postbox_<?php echo $post['post_id']; ?>">
                    <div class="feed_left">
                        <p><img class="userimg" src="<?php echo SITE_URL; ?>/usericon.gif"/></p>
                        <p><?php echo $post['username']; ?></p>
                    </div>
                    <div class="feed_right">
                        <p><?php echo $post['content']; ?></p>
                        <p class="likebox">
                            Total Like : <?php echo $post['total_like']; ?>&nbsp;|&nbsp;
                            <?php if(isset($post['like_id']) && $post['like_id'] != ""){ ?>
                                <a class="link_btn dis_like_btn" postid="<?php echo $post['post_id']; ?>" href="javascript:;">Dislike</a>&nbsp;|&nbsp;
                            <?php }else{ ?>
                                <a class="link_btn like_btn" postid="<?php echo $post['post_id']; ?>" href="javascript:;">Like</a>&nbsp;|&nbsp;
                            <?php } ?>
                            <a class="link_btn" href="javascript:;">Comment</a>
                        </p>                      
                        <div class="clear"></div>
                        <?php if($comments){ ?>
                            <div class="comment_div">
                                <?php foreach($comments as $comment){ ?>
                                <div class="clear"></div>
                                <div class="comment_ele">
                                    <p><a class="link_btn" href="javascript:;"><?php echo $comment['username']; ?></a></p>
                                    <p><?php echo $comment['comment']; ?></p>
                                </div>
                                <?php } ?>
                            </div>
                        <?php } ?>
                        <div class="clear"></div>
                        <p>
                            <form id="commentform_<?php echo $post['post_id']; ?>" method="post">
                                <input type="hidden" name="action" value="comment"/>
                                <input type="hidden" name="post_id" value="<?php echo $post['post_id']; ?>"/>
                                <input class="input comment_input" type="text" name="comment" id="comment_<?php echo $post['post_id']; ?>" placeholder="your comment"/>
                                <input class="submitbtn btn" postid="<?php echo $post['post_id']; ?>" type="button" name="sendbtn" value=">"/>
                            </form>
                        </p>
                    </div>
                    <div class="clear"></div>
                </div>
	<?php endwhile?>

        </div>
    </div>
    <div class="clear"></div>
</div>

<div class="clear"></div>

	<!--page navigation-->
	<?php if (isset($next)): ?>
	<div class="nav">
		<a href='index.php?p=<?php echo $next?>'>Next</a>
	</div>
	<?php endif?>
	
	
<?php
include_once("footer.php");
?>

<script type='text/javascript'>
$(document).ready(function(){
    
    $(".submitbtn").live("click",function(){
        var post_id = $(this).attr('postid');
        var comment = $("#comment_"+post_id).val();
        if(comment == ''){
            alert("comment can't be empty!");
            return false;
        }else{
            $.ajax({
                type: "POST",
                data: $('#commentform_'+post_id).serialize(),
                url: '<?php echo SITE_URL; ?>/functions.php',
                dataType: 'json',
                success: function(response) {
                    if(response.ResponseCode == 200){
                        $('#postbox_'+post_id).load('<?php echo SITE_URL; ?>/wall.php #postbox_'+post_id+' >*');
                    }else{
                        alert(response.Message);
                    }
                }
            });
        }
    });
    $(".like_btn").live("click",function(){
        var post_id = $(this).attr('postid');        
        $.ajax({
                type: "POST",
                data: {'post_id':post_id,'action':'like'},
                url: '<?php echo SITE_URL; ?>/functions.php',
                dataType: 'json',
                success: function(response) {
                    if(response.ResponseCode == 200){
                        $('#postbox_'+post_id).load('<?php echo SITE_URL; ?>/wall.php #postbox_'+post_id+' >*');
                    }else{
                        alert(response.Message);
                    }
                }
        }); 
    });

    $(".dis_like_btn").live("click",function(){
        var post_id = $(this).attr('postid');        
        $.ajax({
                type: "POST",
                data: {'post_id':post_id,'action':'dislike'},
                url: '<?php echo SITE_URL; ?>/functions.php',
                dataType: 'json',
                success: function(response) {
                    if(response.ResponseCode == 200){
                        $('#postbox_'+post_id).load('<?php echo SITE_URL; ?>/wall.php #postbox_'+post_id+' >*');
                    }else{
                        alert(response.Message);
                    }
                }
        }); 
    });

    
    $("#btnpost").click(function(){
        var post = $("#post_feed").val();
        if(post == ""){
            alert("Post Feed Data can't be empty!");
            return false;
        }else{
            $.ajax({
                 type: "POST",
                 data: {'post_feed':post,'action':'post'},
                 url: '<?php echo SITE_URL; ?>/functions.php',
                 dataType: 'json',
                 success: function(response) {
                     if(response.ResponseCode == 200){
                         $("#post_feed").val("");
                         $('#feed_div').load('<?php echo SITE_URL; ?>/wall.php #feed_div');
                     }else{
                        alert(response.Message);
                     }
                 }
            });            
        }
    });
	
        $(document).ready(function() {
        	// Infinite Ajax Scroll configuration
            jQuery.ias({
                container : '.feed_div', // main container where data goes to append
                item: '.feed_box', // single items
                pagination: '.nav', // page navigation
                next: '.nav a', // next page selector
                loader: '<br/><center><img src="css/ajax-loader.gif"/></center>', // loading gif
                triggerPageThreshold: 3 // show load more if scroll more than this
            });
        });
	
});
</script>

Siento que el problema se soluciona simple en el Ajax (ya que no soy muy bueno) y algo me dice que solucionando el primer problema se arregla el segundo, pero ya probe de todo y no lo hago funcionar, espero puedan ayudarme, saludos y gracias.
__________________
Descubre Bicicletas Spinning - Ganar Dinero Con Mobidea
  #2 (permalink)  
Antiguo 05/01/2017, 00:05
Avatar de JethCrew  
Fecha de Ingreso: marzo-2012
Ubicación: México
Mensajes: 67
Antigüedad: 12 años, 9 meses
Puntos: 3
Respuesta: Problema al guardar datos en base de datos y scroll infinito

ya solucioné el primer problema y parte del segundo problema, ahora lo que se me presenta es que al momento de interactuar con elementos cargados de páginas anteriores el div desaparece, esto creo que es del ajax ya que si se guarda la interacción en la base de datos ya sea con like o comentario, miren así está primero:



Y despues de dar like o comentar se ve así:



Esto creo que se debe a un problema con la carga de nuevos post, alguna idea? gracias, saludos.
__________________
Descubre Bicicletas Spinning - Ganar Dinero Con Mobidea

Etiquetas: ajax-php-mysql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:58.