我有一个显示照片的while循环,而每个循环都是一个弹出窗口并打开表单的链接。该表格用于向照片发送评论。 一切都在这里工作但我有photoid变量的问题。 我已经尝试了很多天,但照片的ID永远不会正确地从循环中取出。 它总是最后一张照片或第一张照片的身份....你能帮我做一下吗? 人们一直在用一些jquery,ajax脚本帮助我,在表单中有一些隐藏的输入,但这对我来说没用,也许我太傻了:( 你能帮帮我吗,请把循环外面的“评论”链接的照片的ID加上? 我对此感到厌倦.......拜托! 我也把它标记为java脚本,因为我不知道完成这个
需要什么<?php
include 'connect.php';
//-----------------HERE BEGINS THE LOOP THROWING OUT PHOTOS--------------------
$allphotos = mysql_query("SELECT * FROM photos ORDER BY id DESC");
while ($numphotos = mysql_fetch_assoc($allphotos)){
$photoinfo = mysql_query('SELECT * FROM photos WHERE link="'.$numphotos['link'].'" ');
$fetchinfo = mysql_fetch_assoc($photoinfo);
//------------HERE IS PHOTO--------------------------
echo '<img src="'.$numphotos['link'].'" alt="photo" class="photolink" align="middle">';
$photoid = $fetchinfo['id'];
//----------------BELOW IS THE ADD COMMENT LINK----------------
echo " <div class='comments'><a href='#' class='my-button' onclick='komenty(".$photoid.")'>komentarze</a></div> ";
//---------------------HERE STARTS THE POPUP ADDING COMMENT FORM-------------
echo "
<div id='element_to_pop_up'>
<img src='' alt='photo' class='photolink' align='middle'>
<form action='main.php' id='comments' method='post'>
<textarea rows='8' cols='80' name='comments'></textarea> <br />
<input type='hidden' name='photoid' value='".$photoid."'>
<input type='submit' name='send' value='Wyślij'>
</form>
<a class='b-close'></a>
</div>";
}
//----------------AFTER THE FORM IS SUBMITED THE CODE BELOW SAVES THE COMMENT TO DATABASE BUT THE PHOTOID IS ALWAYS NOT CORRECT---------
if (isset($_POST['send'])){
try{
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $pdo->prepare("INSERT INTO comments (comment, photoid, writer, date) VALUES (:comment, :photoid, :writer, :date) ");
$stmt->execute(array('comment'=> $_POST['comments'], 'photoid'=> $_POST['photoid'], 'writer'=> $_GLOBALS['nick'], 'date'=> date("Y-m-d")));
}
catch(PDOException $e){
echo 'error main.php 1:' . $e->getMessage();
}
}
?>
下面的功能并不重要,但我按你的意愿添加它:
function komenty(photoid) {
var xmlhttp=new window.XMLHttpRequest();
xmlhttp.onreadystatechange=function() {
xmlhttp.open("GET", "comments.php?id=" + photoid, true);
xmlhttp.send();
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
x = xmlhttp.responseText;
$.get( "main.php", {x: x});
}
}
}
编辑弹出窗口js代码:
// Semicolon (;) to ensure closing of earlier scripting
// Encapsulation
// $ is assigned to jQuery
;(function($) {
// DOM Ready
$(function() {
// Binding a click event
// From jQuery v.1.7.0 use .on() instead of .bind()
$('.my-button').bind('click', function(e) {
// Prevents the default action to be triggered.
// e.preventDefault();
// Triggering bPopup when click event is fired
$('#element_to_pop_up').bPopup();
});
});
})(jQuery);
/*================================================================================
* @name: bPopup - if you can't get it up, use bPopup
* @author: (c)Bjoern Klinggaard (twitter@bklinggaard)
* @demo: http://dinbror.dk/bpopup
* @version: 0.9.4.min
================================================================================*/
(function(b){b.fn.bPopup=function(z,F){function K(){a.contentContainer=b(a.contentContainer||c);switch(a.content){case "iframe":var h=b('<iframe class="b-iframe" '+a.iframeAttr+"></iframe>");h.appendTo(a.contentContainer);r=c.outerHeight(!0);s=c.outerWidth(!0);A();h.attr("src",a.loadUrl);k(a.loadCallback);break;case "image":A();b("<img />").load(function(){k(a.loadCallback);G(b(this))}).attr("src",a.loadUrl).hide().appendTo(a.contentContainer);break;default:A(),b('<div class="b-ajax-wrapper"></div>').load(a.loadUrl,a.loadData,function(){k(a.loadCallback);G(b(this))}).hide().appendTo(a.contentContainer)}}function A(){a.modal&&b('<div class="b-modal '+e+'"></div>').css({backgroundColor:a.modalColor,position:"fixed",top:0,right:0,bottom:0,left:0,opacity:0,zIndex:a.zIndex+t}).appendTo(a.appendTo).fadeTo(a.speed,a.opacity);D();c.data("bPopup",a).data("id",e).css({left:"slideIn"==a.transition||"slideBack"==a.transition?"slideBack"==a.transition?g.scrollLeft()+u:-1*(v+s):l(!(!a.follow[0]&&m||f)),position:a.positionStyle||"absolute",top:"slideDown"==a.transition||"slideUp"==a.transition?"slideUp"==a.transition?g.scrollTop()+w:x+-1*r:n(!(!a.follow[1]&&p||f)),"z-index":a.zIndex+t+1}).each(function(){a.appending&&b(this).appendTo(a.appendTo)});H(!0)}function q(){a.modal&&b(".b-modal."+c.data("id")).fadeTo(a.speed,0,function(){b(this).remove()});a.scrollBar||b("html").css("overflow","auto");b(".b-modal."+e).unbind("click");g.unbind("keydown."+e);d.unbind("."+e).data("bPopup",0<d.data("bPopup")-1?d.data("bPopup")-1:null);c.undelegate(".bClose, ."+a.closeClass,"click."+e,q).data("bPopup",null);H();return!1}function G(h){var b=h.width(),e=h.height(),d={};a.contentContainer.css({height:e,width:b});e>=c.height()&&(d.height=c.height());b>=c.width()&&(d.width=c.width());r=c.outerHeight(!0);s=c.outerWidth(!0);D();a.contentContainer.css({height:"auto",width:"auto"});d.left=l(!(!a.follow[0]&&m||f));d.top=n(!(!a.follow[1]&&p||f));c.animate(d,250,function(){h.show();B=E()})}function L(){d.data("bPopup",t);c.delegate(".bClose, ."+a.closeClass,"click."+e,q);a.modalClose&&b(".b-modal."+e).css("cursor","pointer").bind("click",q);M||!a.follow[0]&&!a.follow[1]||d.bind("scroll."+e,function(){B&&c.dequeue().animate({left:a.follow[0]?l(!f):"auto",top:a.follow[1]?n(!f):"auto"},a.followSpeed,a.followEasing)}).bind("resize."+e,function(){w=y.innerHeight||d.height();u=y.innerWidth||d.width();if(B=E())clearTimeout(I),I=setTimeout(function(){D();c.dequeue().each(function(){f?b(this).css({left:v,top:x}):b(this).animate({left:a.follow[0]?l(!0):"auto",top:a.follow[1]?n(!0):"auto"},a.followSpeed,a.followEasing)})},50)});a.escClose&&g.bind("keydown."+e,function(a){27==a.which&&q()})}function H(b){function d(e){c.css({display:"block",opacity:1}).animate(e,a.speed,a.easing,function(){J(b)})}switch(b?a.transition:a.transitionClose||a.transition){case "slideIn":d({left:b?l(!(!a.follow[0]&&m||f)):g.scrollLeft()-(s||c.outerWidth(!0))-C});break;case "slideBack":d({left:b?l(!(!a.follow[0]&&m||f)):g.scrollLeft()+u+C});break;case "slideDown":d({top:b?n(!(!a.follow[1]&&p||f)):g.scrollTop()-(r||c.outerHeight(!0))-C});break;case "slideUp":d({top:b?n(!(!a.follow[1]&&p||f)):g.scrollTop()+w+C});break;default:c.stop().fadeTo(a.speed,b?1:0,function(){J(b)})}}function J(b){b?(L(),k(F),a.autoClose&&setTimeout(q,a.autoClose)):(c.hide(),k(a.onClose),a.loadUrl&&(a.contentContainer.empty(),c.css({height:"auto",width:"auto"})))}function l(a){return a?v+g.scrollLeft():v}function n(a){return a?x+g.scrollTop():x}function k(a){b.isFunction(a)&&a.call(c)}function D(){x=p?a.position[1]:Math.max(0,(w-c.outerHeight(!0))/2-a.amsl);v=m?a.position[0]:(u-c.outerWidth(!0))/2;B=E()}function E(){return w>c.outerHeight(!0)&&u>c.outerWidth(!0)}b.isFunction(z)&&(F=z,z=null);var a=b.extend({},b.fn.bPopup.defaults,z);a.scrollBar||b("html").css("overflow","hidden");var c=this,g=b(document),y=window,d=b(y),w=y.innerHeight||d.height(),u=y.innerWidth||d.width(),M=/OS 6(_\d)+/i.test(navigator.userAgent),C=200,t=0,e,B,p,m,f,x,v,r,s,I;c.close=function(){a=this.data("bPopup");e="__b-popup"+d.data("bPopup")+"__";q()};return c.each(function(){b(this).data("bPopup")||(k(a.onOpen),t=(d.data("bPopup")||0)+1,e="__b-popup"+t+"__",p="auto"!==a.position[1],m="auto"!==a.position[0],f="fixed"===a.positionStyle,r=c.outerHeight(!0),s=c.outerWidth(!0),a.loadUrl?K():A())})};b.fn.bPopup.defaults={amsl:50,appending:!0,appendTo:"body",autoClose:!1,closeClass:"b-close",content:"ajax",contentContainer:!1,easing:"swing",escClose:!0,follow:[!0,!0],followEasing:"swing",followSpeed:500,iframeAttr:'scrolling="no" frameborder="0"',loadCallback:!1,loadData:!1,loadUrl:!1,modal:!0,modalClose:!0,modalColor:"#000",onClose:!1,onOpen:!1,opacity:0.7,position:["auto","auto"],positionStyle:"absolute",scrollBar:!0,speed:250,transition:"fadeIn",transitionClose:!1,zIndex:9997}})(jQuery);
答案 0 :(得分:0)
ID必须是唯一的。您应该将id="element_to_pop_up"
更改为class="element_to_pop_up"
。然后更改弹出窗口JS以使用DOM遍历来查找要弹出的相邻DIV:
;(function($) {
// DOM Ready
$(function() {
// Binding a click event
// From jQuery v.1.7.0 use .on() instead of .bind()
$('.my-button').bind('click', function(e) {
// Prevents the default action to be triggered.
// e.preventDefault();
// Triggering bPopup when click event is fired
$(this).closest(".comment").next('.element_to_pop_up').bPopup();
});
});
})(jQuery);
答案 1 :(得分:-1)
变量'$ photoinfo'可能正在获取多行,因此我将LIMIT添加到mysql语句中。
<?php
include 'connect.php';
//-----------------HERE BEGINS THE LOOP THROWING OUT PHOTOS--------------------
$allphotos = mysql_query("SELECT * FROM photos ORDER BY id DESC");
while ($numphotos = mysql_fetch_assoc($allphotos)){
// Added
$photoinfo = mysql_query('SELECT * FROM photos WHERE link="'.$numphotos['link'].'" LIMIT 1');
$fetchinfo = mysql_fetch_assoc($photoinfo);
//------------HERE IS PHOTO--------------------------
echo '<img src="'.$numphotos['link'].'" alt="photo" class="photolink" align="middle">';
$photoid = ($fetchinfo['id']) ? $fetchinfo['id'] : '';
//----------------BELOW IS THE ADD COMMENT LINK----------------
echo "<div class='comment_wrapper'>";
echo " <div class='comments'><a href='#' class='my-button'>komentarze</a></div> ";
//---------------------HERE STARTS THE POPUP ADDING COMMENT FORM-------------
echo "
<div class='element_to_pop_up'>
<img src='' alt='photo' class='photolink' align='middle'>
<form action='main.php' id='comments' method='post'>
<textarea rows='8' cols='80' name='comments'></textarea> <br />
<input type='hidden' name='photoid' value='".$photoid."'>
<input type='submit' name='send' value='Wyślij'>
</form>
<a class='b-close'></a>
</div>";
echo "</div>";
}
你还没有包含komenty()函数,我写了几行jQuery
$( document ).ready(function() {
$( ".my-button" ).click(function() {
$(this).parent().parent().find('.element_to_pop_up').fadeIn();
});
});