vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB3 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=15)
-   -   Display issue (https://vborg.vbsupport.ru/showthread.php?t=210420)

Excalibur82 04-06-2009 02:17 AM

Display issue
 
1 Attachment(s)
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:
PHP 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.

PHP 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') . '";'); 


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

1 Attachment(s)
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 [DATE]1239144085[/DATE] at [TIME]1239144085[/TIME] ---------------

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
HTML Code:

<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
HTML Code:

<a href="screen.php?img=$sid" target="_blank"><img src="screen.php?img=$sid" width="150" border="0"></a>&nbsp;&nbsp;

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 [DATE]1239425673[/DATE] at [TIME]1239425673[/TIME] ---------------

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 [DATE]1239490519[/DATE] at [TIME]1239490519[/TIME] ---------------

Got it all sorted thanks to Enigma from here.


All times are GMT. The time now is 01:09 PM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01193 seconds
  • Memory Usage 1,820KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (2)bbcode_html_printable
  • (2)bbcode_php_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (24)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete