View Full Version : Display issue
Excalibur82
04-06-2009, 02:17 AM
I'm having an issue with a mod I'm creating for my site. Right now I have it saving screenshots to the database along with files. When you view the page, it lists the first file in the db twice and since it has 2 screenshots, the first duplicate shows one screenshot, then the second duplicate shows 2 screenshots.
Here is the code:
$query = $db->query_read("SELECT * FROM " . TABLE_PREFIX . "download AS download
LEFT JOIN " . TABLE_PREFIX . "download_screenshots AS screenshots ON (screenshots.file_id = download.id)");
while ($dl = $db->fetch_array($query))
{
$id = $dl['id'];
$version = $dl['version'];
$name = $dl['name'];
$size = $dl['size'];
$description = $dl['description'];
$username = $dl['username'];
$userid = $dl['userid'];
$sid = $dl['sid'];
$screenshot = $dl['sdata'];
eval('$display_shots .= "' . fetch_template('bfc_download_screenshot_display') . '";');
eval('$display_bit .= "' . fetch_template('bfc_download_bit') . '";');
}
$navbits = array();
$navbits[$parent] = 'Download :: Index';
$navbits = construct_navbits($navbits);
eval('$display = "' . fetch_template('bfc_download_main') . '";');
I have attached a screenshot for you to view.
As you can see from the screenshot, Your Linker.zip is the entry that shows up twice when I have checked the db and it is only in the db once.
Lynne
04-06-2009, 02:36 AM
If you are only expecting one result, why aren't you using query_first ? Then you don't need to do your while loop.
Excalibur82
04-06-2009, 02:54 AM
Its supposed to be all records from the database. There are screenshots in the database for each file record that need to be pulled and displayed with the file.
The screenshot only shows those 2 entries as thats where my problem is, there are a total of 3 files in the db. All 3 show though, but the first duplicates.
Lynne
04-06-2009, 03:53 AM
Each time you go through the loop, you are adding to $display_shots. I assume $display_shots is then used in $display_bit? The first time you go through the loop, you will have one display shot, then the second time, two display shots, then the third time, three display shots, etc. Don't use ".=", use just "=" if you don't want that to happen.
Excalibur82
04-06-2009, 04:01 AM
Ok, I tried it, did nothing but make it 1 screenshot per duplicate. So I still have duplicates, same issue with screenshots. Do you need to view any templates or anymore php code?
Dismounted
04-06-2009, 04:09 AM
So what is the code you are using now?
Excalibur82
04-06-2009, 04:11 AM
I'm using this, only changed what Lynne suggested above.
$query = $db->query_read("SELECT * FROM " . TABLE_PREFIX . "download AS download
LEFT JOIN " . TABLE_PREFIX . "download_screenshots AS screenshots ON (screenshots.file_id = download.id)");
while ($dl = $db->fetch_array($query))
{
$id = $dl['id'];
$version = $dl['version'];
$name = $dl['name'];
$size = $dl['size'];
$description = $dl['description'];
$username = $dl['username'];
$userid = $dl['userid'];
$sid = $dl['sid'];
$screenshot = $dl['sdata'];
eval('$display_shots = "' . fetch_template('bfc_download_screenshot_display') . '";');
eval('$display_bit .= "' . fetch_template('bfc_download_bit') . '";');
}
$navbits = array();
$navbits[$parent] = 'Download :: Index';
$navbits = construct_navbits($navbits);
eval('$display = "' . fetch_template('bfc_download_main') . '";');
Dismounted
04-06-2009, 04:22 AM
What is being displayed? (i.e. provide screenshot)
I'm not really understanding what is duplicating. :p
Excalibur82
04-06-2009, 04:32 AM
Oh guess that would help. lol
I took it down to only 2 entries.
First screenshot is the duplicate entries showing.
Second screenshot is the bottom of the record list showing the last entry that has no screenshot attached to it yet.
Excalibur82
04-07-2009, 06:14 PM
Lynne, Dismounted, did you both give up me already? LOL
Lynne
04-07-2009, 07:06 PM
Sorry, but I'm terrible with mysql query type issues and I think that is where the problem is. Looking at your code, each time you go through the loop, you only assign one of the screenshots to a variable. So, you can only expect it to spit out one. Then, you go through it again, and I think it is adding to it, so you can get the second one (I'm guessing). What you need to do is get each file and then all the screenshots associated with it as an array (I think? I'm not sure). Right now you aren't allowing for two screenshots (or more) per file.
This just isn't my area of expertise, sorry. It's one of those types of problems I would have to brute force code.
Excalibur82
04-07-2009, 07:26 PM
Well I have some code from sending a PM to multiple users. I'll see if I can't manipulate that code to work similar for this problem.
If any other suggestions come about I'm open to them though.
--------------- Added 1239144085 at 1239144085 ---------------
Looks like I have failed again. My idea didn't work and so I think I'm gonna have to do a case situation.
Hell I don't know, any ideas? Anyone?
Dismounted
04-08-2009, 06:25 AM
Could you post the content of the two templates used in the loop?
Excalibur82
04-09-2009, 12:20 AM
This is the file display loop template:
$display_bit below
<table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" width="100%" align="center">
<tr>
<td class="alt2">
<div class="smallfont" align="left">File: $name</div>
<div valign="top">
<fieldset class="statistics_group" style="float: right;">
<legend>Options</legend>
<ul class="list_no_decoration">
<li><span class="shade"><a href="download.php?id=$id">Download</a></span></li>
<li><span class="shade">Size: $bytes</span></li>
<if condition="$bbuserinfo[userid] == $userid">
<li><span class="shade">Delete</span></li>
<li><span class="shade">Edit</span></li>
<li><a href="download.php?do=screen&id=$id">Add Screenshot</a></li>
</if>
<li><span class="shade">Uploaded by: <a href="member.php?u=$userid">$username</a></span></li>
</ul>
</fieldset>
</div><br />
<div class="smallfont" align="left">Details: $description</div>
</td>
</tr>
<tr>
<td class="alt2">
<div valign="top">
<fieldset class="statistics_group" style="float: left;">
<legend>Screenshots</legend>
<if condition="$screenshot">$display_shots<else />No screen shots have been added.</if>
</fieldset>
</div>
</td>
</tr>
</table>
<br />
This is the screenshot display loop:
$display_shots below
<a href="screen.php?img=$sid" target="_blank"><img src="screen.php?img=$sid" width="150" border="0"></a>
Dismounted
04-09-2009, 04:08 AM
Have you checked for duplicate entries in the database?
Excalibur82
04-09-2009, 04:14 AM
Yep, thats why I took it down to only 2 entries so that way I know for sure there are only 2 entries, different names and all.
Excalibur82
04-10-2009, 06:01 AM
Still needing help please.
--------------- Added 1239425673 at 1239425673 ---------------
EDIT: Here is some help: http://www.bluefirecreation.com/download.php
Username: Guest
Password: guest
Excalibur82
04-11-2009, 04:44 PM
I provided login to view that page so everyone can see the issue, maybe helping in determining the issue.
Lynne
04-11-2009, 05:02 PM
OK, so right now, it is showing the first entry twice, and the second time it's shown it is showing the image twice. The second item is fine and not being shown twice. Is that what is currently going on? (it should really only show entry 1 and 3, correct?)
Excalibur82
04-11-2009, 05:12 PM
Correct, the first two entries are one in the same but yes 1 and 3 or 2 and 3 should be the only ones showing.
Lynne
04-11-2009, 05:39 PM
How many records do you have in the table downloads? I'm terrible at queries (I hate joins!), but if I understand the query correctly, you should have one record for each download. Looking at the second entry (the one that shouldn't be there), you'll notice that each image has a different id - 4 and 5. So my guess is you have two records in the table downloads for that image.
EDIT: Wrong info.
Excalibur82
04-11-2009, 08:16 PM
Downloads has 2 records, screenshots have 2 records, both of the screenshots goes to the first record of downloads.
They each have seperate id's so that they can be viewed in a bigger view. I'm pulling by id of download to match file_id in screenshots. So I don't know whats going on.
Lynne
04-11-2009, 08:19 PM
If you have two screenshots for the same record, are they supposed to show as different 'posts' (two posts like post 1 only each with a single screenshot) or in a single 'post' (like post 2)?
Excalibur82
04-11-2009, 08:21 PM
In a single post, so record 1 should show 2 screenshots, record 2 should show none.
--------------- Added 1239490519 at 1239490519 ---------------
Got it all sorted thanks to Enigma from here.
vBulletin® v3.8.12 by vBS, Copyright ©2000-2025, vBulletin Solutions Inc.