webForumDet fria alternativet

PHP/mysql och Jquery, hjälp med implementation

2 svar · 652 visningar · startad av gorgonsola

gorgonsolaMedlem sedan juli 20103 inlägg
#1

Hej!

Osäker på om detta är rätt del av forumet eller om java delen passade bättre.

Jag har skrivit ihop ett snabbt bildgalleri, kanske inte jätte välkodat men fyller sitt syfte att leka lite med.

Det är nämligen som så att jag vill att när jag klickar på föregående/nästa knappen så ska inte hela sidan uppdateras utan enbart kommentarerna och dess bild.

Till min hjälp så hittade jag följande jquery plugin:
http://github.com/tkyk/jquery-history-plugin

Jag har försökt implementera den men inte lyckats och skulle bli jätteglad om någon där ute kunde hjälpa mig, åtminstone med att börja på något sätt. Känns inte som att det borde vara så svårt men får inte till det så lite hjälp skulle uppskattas.

Jag tar även emot tips om någon annan history-plugin som kanske är bättre och lättare att få att fungera om du känner till någon.

Jag la upp mitt galleri lite hastigt på följande adress:
http://43f7f7.tempopage.com/index.php?pid=1&gid=2

php koden till galleriet är följande:
index.php

<?php 
    include "db_photos.php"; 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
</head> 
<body> 
    <div id="logo">Liten fin logo som inte ska laddas om...</div> 
    <div id="picture"> 
    <?php 
    // Skriv ut bilden 
    if($picture){ 
        echo '<div class="picture">'.$picture.'</div>'; 
        echo "<br />"; 
        echo '<a href="test.php?pid='.$prev.'&gid='.$_GET['gid'].'">< Föregående</a>'; 
        echo " || "; 
        echo '<a href="test.php?pid='.$next.'&gid='.$_GET['gid'].'">Nästa ></a>'; 
        echo '<h1>Kommentarer</h1>'; 
        if($comments != null){ 
            foreach($comments as $comment){ 
                echo $comment."<br />"; 
            } 
        } 
        else 
            echo "Bilden har inga kommentarer än :("; 
    } 
    ?> 
    <!-- Comments Form --> 
    <form action="" method="post"> 
    <h1>Kommentera bilden</h1> 
    <?php 
    // Skriv ut ett meddelande om bilden blivit kommenterad eller inte. 
    if($msg){ 
        echo '<div class="msg">'.$msg.'</div>'; 
    } 
    ?>  
    <textarea id="comment" name="comment"></textarea> 
    <div class="clear"></div> 
    <p><input type="submit" name="submit" value="Kommentera" /></p> 
    </form> 
    </div> 
    <div id="footer">Ännu lite mer innehåll som inte ska laddas om...</div> 
</body> 
</html>

db_photos.php

<?php 

include('db_connection.php'); 

$err = array(); 
$success = array(); 

if($_GET['pid'] && $_GET['gid'] &&  $_GET['gid'] != null){ 
    $pid = mysql_real_escape_string($_GET['pid']); 
    $gid = mysql_real_escape_string($_GET['gid']); 
     
    // Kolla så att bilden finns i det albumet 
    $result = mysql_query("SELECT address FROM photos WHERE id='".$pid."' AND galleryid='".$gid."'"); 
    if(mysql_num_rows($result) == 1){ 
        // Bilden fanns, skriv ut den 
        $result = mysql_fetch_assoc($result); 
        $address = $result['address']; 
        $picture = "<img src='".$address."' />"; 
         
        // Nästa 
        $result = mysql_query(" 
            SELECT id 
            FROM photos 
            WHERE id > '".$pid."' 
            ORDER BY id ASC  
            LIMIT 1"); 
        if(mysql_num_rows($result) > 0){ 
            $result = mysql_fetch_assoc($result); 
            $next = $result['id']; 
        } 
        else{ 
            // Det fanns inga fler bilder, om användaren klickar på nästa nu så kommer han tillbaka till första bilden 
            $result = mysql_fetch_assoc(mysql_query(" 
            SELECT id 
            FROM photos 
            ORDER BY id ASC  
            LIMIT 1")); 
            $next = $result['id']; 
        } 
        // Föregående 
        $result = mysql_query(" 
            SELECT id 
            FROM photos 
            WHERE id < '".$pid."' 
            ORDER BY id DESC  
            LIMIT 1"); 
        if(mysql_num_rows($result) > 0){ 
            $result = mysql_fetch_assoc($result); 
            $prev = $result['id']; 
        } 
        else{ 
            // Det fanns inga fler bilder, om användaren klickar på föregående nu så kommer han tillbaka till sista bilden 
            $result = mysql_fetch_assoc(mysql_query(" 
            SELECT id 
            FROM photos 
            ORDER BY id DESC 
            LIMIT 1")); 
            $prev = $result['id']; 
        } 
         
        // Om det finns några kommentarer, skriv ut dem. 
        $result = mysql_query(" 
        SELECT comment 
        FROM photo_comments 
        WHERE pid=".$_GET['pid'].""); 
        while ($row = mysql_fetch_array($result)){  
            $comments[] = $row['comment']; 
        } 
    } 
    else{ 
        $err[] = 'Bilden du söker finns inte!'; 
    } 
} 

// Användaren har valt att kommentera bilden.  
if ($_POST['submit']=='Kommentera'){ 
    if($_POST['comment'] != null){ 
        $_POST['comment'] = mysql_real_escape_string($_POST['comment']); 
        $_GET['pid'] = mysql_real_escape_string($_GET['pid']); 
         
        mysql_query("INSERT INTO photo_comments(pid, comment, dt) 
                        VALUES( 
                            '".$_GET['pid']."', 
                            '".$_POST['comment']."', 
                            NOW() 
                        )"); 
        if(mysql_affected_rows($db_connection)==1){ 
            $success[]='Du har lagt till en kommentar!'; 
        } 
        else{ 
            $err[]='Något gick fel och din kommentar har inte blivit sparad :('; 
        } 
    } 
    else{ 
        $err[]='Du måste först skriva en kommentar för att sedan kunna publicera den.'; 
    } 
} 

// Kolla om vi fått några felmeddelanden, skriv i så fall ut dem.  
if(count($err)){ 
    $msg = $msg.implode('<br />',$err)."<br />"; 
} 
// Kolla om vi fått några meddelanden, skriv i så fall ut dem.  
if(count($success)){ 
    $msg = $msg.implode('<br />',$success)."<br />"; 
} 
?>
jmeMedlem sedan maj 20012 237 inlägg
#2

Vad har detta med Java och göra?

GildebrandMedlem sedan juni 2009920 inlägg
#3

Att ladda in nya data är enkelt.
Om du har en container för bilden, och en för kommentarerna på sidan där du presenterar allt så löses detta enkelt.

$('bild').load('bild.php?bild=id');
$('comments').load('comments.php?bild=id')

Sen ser du bara till att ha en sida som heter bild.php och en som heter comments.php som visar innehållet som är aktuellt.

Jquery-koden kan du lägga i ett onclick-event för nästa-länken.

130 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)