Thread Verfasser: Catzenjaeger
Thread ID: 1014
Thread Info
Es gibt 13 Beiträge zu diesem Thema, und es wurde 6242 Mal angesehen.  Ausserdem wurden Dateien angehängt.
 Thema drucken
SQL Abfrage umbauen - code fertig - bitte um Kontrolle
Catzenjaeger
Ich habe eine DB Abfrage die ich so umbauen muss, dass ich den Parameter "figure_freigabe" aus einer anderen Tabelle mit abfrage. Weil momentan zählt die Page Nav Funktion ja alle DB Einträge und macht so einen falschen Reiter in der Page Nav. Es werden alle auch figuren mit berechnet die ja eigentlich nicht berücksichtigt werden sollen. Allerdings geht das irgendwie nicht ob wohl ich denke die ist richtig. Die Category ist dann nicht klickbar und die seite refresht sich immer wenn ich die untere Abfrage mit der oberen ersetze. Vielleicht ist jemand so leib und schaut mal drüber danke

Hier die ursprüngliche:

Zitat:  $result = dbquery("SELECT
figure_cat_name,
figure_cat_sorting
FROM ".DB_FIGURE_CATS." ".(multilang_table("FI") ? "
WHERE figure_cat_language='".LANGUAGE."'
AND" : "WHERE")." figure_cat_id='".intval($_GET['figure_cat_id'])."'");


hier mein Umbau der aber wie gesagt nicht funktioniert

Zitat:  $result = dbquery("
SELECT
f.figure_cat,
f.figure_freigabe,
fc.figure_cat_id,
fc.figure_cat_name
FROM ".DB_FIGURE_CATS." fc
LEFT JOIN ".DB_DB_FIGURE_ITEMS." f ON fc.figure_cat_id=f.figure_cat
WHERE figure_cat_language='".LANGUAGE."'
AND figure_cat_id='".intval($_GET['figure_cat_id'])."'
AND figure_freigabe= 1
");


übrigens LEFT oder INNER hat nichts bewirkt

Zusammengefügt am 12. Juli 2016 um 10:11:51:
push .. keine der mal drüber schauen kann :O
Bearbeitet von Catzenjaeger am 12.07.2016 um 10:12
 
SuNflOw
Der Code dazu wäre nicht schlecht. Das SQL sieht für mich OK aus.
________________________________________________
I got my swim trunks and my Flippie-Floppies *-*
 
Catzenjaeger
das wäre klasse datei ist im Anhang .. kannst aber auch auf Github schaun (siehe signatur)
Catzenjaeger hat folgende Datei angehängt:
Du hast nicht die Berechtigung die Anhäge dieses Themas zu sehen.
 
SuNflOw
Du hast geschrieben 'DB_DB_FIGURE_ITEMS' muss es nicht heißen: DB_FIGURE_ITEMS
________________________________________________
I got my swim trunks and my Flippie-Floppies *-*
 
Catzenjaeger
Danke für den Hinweis .. habs geändert aber jetzt kommt --> No figure categories defined ... also wird nichts gefunden was eigentlich nicht sein kann. Aber super das dir das aufgefallen ist. Danke :)

UND WIE BEKOMME ICH DAS WIEDER EINGEBAUTß ".(multilang_table("FI") ? " WILL NICHT SO KLAPPEN

Aber ich muss weiter suchen

alt
Zitat:  $result = dbquery("SELECT
figure_cat_name,
figure_cat_sorting
FROM ".DB_FIGURE_CATS." ".(multilang_table("FI") ? "
WHERE figure_cat_language='".LANGUAGE."'
AND" : "WHERE")." figure_cat_id='".intval($_GET['figure_cat_id'])."'");

neu
Zitat: $result = dbquery("
SELECT
f.figure_cat,
f.figure_freigabe,
fc.figure_cat_id,
fc.figure_cat_name
FROM ".DB_FIGURE_CATS." fc
INNER JOIN ".DB_FIGURE_ITEMS." f ON fc.figure_cat_id=f.figure_cat
WHERE figure_cat_language='".LANGUAGE."'
AND figure_cat_id='".intval($_GET['figure_cat_id'])."'
AND figure_freigabe= 1
");

Bearbeitet von Catzenjaeger am 13.07.2016 um 10:01
 
SuNflOw
So?:

Code 

$result = dbquery("
SELECT
  f.figure_cat,
  f.figure_freigabe,
  fc.figure_cat_id,
  fc.figure_cat_name
FROM ".DB_FIGURE_CATS." fc
INNER JOIN ".DB_FIGURE_ITEMS." f
  ON fc.figure_cat_id=f.figure_cat"
.(multilang_table("FI")
  ? " WHERE figure_cat_language='".LANGUAGE."' AND"
  : " WHERE")
." figure_cat_id='".intval($_GET['figure_cat_id'])."'
AND figure_freigabe= 1
");


________________________________________________
I got my swim trunks and my Flippie-Floppies *-*
 
Catzenjaeger
ne ist es auch nicht ... zeigt mir an "No figure categories defined" obwohl 2 da sind . Insgesamt sind 3 figuren in der DB eine mit freigabe = 0 die anderen mit 1

also müssten 2 angezeigt werden. Wenn ich DB Abfrage wieder zrücksetze (also die alte form sehe ich die auch)
 
SuNflOw
Okay, warte jetzt habe ich echt die Nase voll.

Ich melde mich gleich... #NACHBAUEN

---

Update 1:
Du möchtest also alle Kategorien in der mindestens eine Figur ist mit Freigabe=1? Oder kannst du nochmal GENAU definieren was du als Ergebnis erwartest?
Bearbeitet von SuNflOw am 13.07.2016 um 14:20
________________________________________________
I got my swim trunks and my Flippie-Floppies *-*
 
Catzenjaeger
Also diese Abfrage muss so abgeändert werden das alle Figuren einer kategorie angezeigt werden die den Wert 1 in der Spalte figure_freigabe haben --> das bedeutet sie sind für die User freigeschalten und somit für alle sichtbar.

Im Moment habe ich 3 Figuren testweise angelegt. 2 mit freigabe = 2 und 1 mit 0. Wenn ich die Abfrage hier:

Zitat:  $result = dbquery("SELECT
figure_cat_name,
figure_cat_sorting
FROM ".DB_FIGURE_CATS." ".(multilang_table("FI") ? "
WHERE figure_cat_language='".LANGUAGE."'
AND" : "WHERE")." figure_cat_id='".intval($_GET['figure_cat_id'])."'");


mit dieser hier ersetzte:
Zitat: 
$result = dbquery("
SELECT
f.figure_cat,
f.figure_freigabe,
fc.figure_cat_id,
fc.figure_cat_name
FROM ".DB_FIGURE_CATS." fc
INNER JOIN ".DB_FIGURE_ITEMS." f
ON fc.figure_cat_id=f.figure_cat"
.(multilang_table("FI")
? " WHERE figure_cat_language='".LANGUAGE."' AND"
: " WHERE")
." figure_cat_id='".intval($_GET['figure_cat_id'])."'
AND figure_freigabe= 1
");


werden mir die Figuren gar nicht mehr angezeigt sondern es erscheint die Warnung das keinen Figuren da sind.

auch wenn er lang ist hier mal der ganze Code

Code 

<?php

   //error_reporting(E_ALL);
   // Formularinhalte prüfen
   //echo "Formularinhalte prüfen:";
   //print_r ($_POST);
   //echo "<br>";
   // GET-Parameter prüfen
   //echo "GET-Parameter prüfen:";
   //print_r ($_GET);
   // Sessions prüfen
   //print_r ($_SESSION);
/*-------------------------------------------------------+
| PHP-Fusion Content Management System
| Copyright (C) PHP-Fusion Inc
| http://www.php-fusion.co.uk/
+--------------------------------------------------------+
| Filename: figures.php based on gallery.php
| Author: PHP-Fusion Development Team
| Co-Author: PHP-Fusion Development Team
|
| Modification: Catzenjaeger
| URL: www.aliencollectors.com
| E-Mail: admin@aliencollectors.com
+--------------------------------------------------------+
| This program is released as free software under the
| Affero GPL license. You can redistribute it and/or
| modify it under the terms of this license which you
| can read by viewing the included agpl.txt or online
| at www.gnu.org/licenses/agpl.html. Removal of this
| copyright header is strictly prohibited without
| written permission from the original author(s).
+--------------------------------------------------------*/
require_once file_exists('maincore.php') ? 'maincore.php' : __DIR__."/../../maincore.php";
include INFUSIONS."figurelib/infusion_db.php";
require_once THEMES."templates/header.php";
require_once INCLUDES."infusions_include.php";
if (!db_exists(DB_FIGURE_ITEMS)) { redirect(BASEDIR."error.php?code=404"); }

// GET GLOBAL VARIABLES
global $aidlink;
global $settings;

// LANGUAGE
if (file_exists(INFUSIONS."figurelib/locale/".LOCALESET."locale_figurelib.php")) {
    include INFUSIONS."figurelib/locale/".LOCALESET."locale_figurelib.php";
} else {
    include INFUSIONS."figurelib/locale/English/locale_figurelib.php";
}

include INFUSIONS."figurelib/templates/template_render_figure.php"; // TEMPLATE FOR FIGURE OVERVIEW PER CATEGORY
include INFUSIONS."figurelib/templates/template_render_figure_cats.php"; // TEMPLATE FOR CATEGORIES OVERVIEW
include INFUSIONS."figurelib/templates/template_render_figure_items.php"; // TEMPLATE FOR DETAILS OF A FIGURE

// GET SETTINGS
$fil_settings = get_settings("figurelib");

$figure_cat_index = dbquery_tree(DB_FIGURE_CATS, 'figure_cat_id', 'figure_cat_parent');
add_breadcrumb(array(
   'link' => INFUSIONS.'figurelib/figures.php',
   'title' => \PHPFusion\SiteLinks::get_current_SiteLinks("", "link_name")));


if (!isset($_GET['figure_id']) || !isset($_GET['figure_cat_id'])) {
   set_title($locale['INF_TITLE']);
}

/* VIEW FIGURE */
if (isset($_GET['figure_id']) && isnum($_GET['figure_id'])) {
   include INCLUDES."comments_include.php";
   include INCLUDES."ratings_include.php";

   
   $res = 0;
   $data = dbarray(dbquery("SELECT * FROM ".DB_FIGURE_ITEMS." WHERE figure_id='".intval($_GET['figure_id'])."'"));

   if (checkgroup($data['figure_visibility'])) {
      $res = 1;

      dbquery("UPDATE ".DB_FIGURE_ITEMS." SET figure_clickcount=figure_clickcount+1 WHERE figure_id='".intval($_GET['figure_id'])."'");
 figure_cat_breadcrumbs($figure_cat_index);
      // alle Daten zur einzelnen Figur werden im template geholt - nicht hier !!!
       
   $info = array();
   $info['item'] = array();
      render_figure_items($info);   

   } else {
        redirect(FUSION_SELF);
    }

/* ALL FIGURES FROM A CATEGORY   */
} else if (isset($_GET['figure_cat_id']) && isnum($_GET['figure_cat_id'])) {
   
   $info = array();
   $info['item'] = array();
/*
   $result = dbquery("SELECT
         figure_cat_name,
         figure_cat_sorting
      FROM ".DB_FIGURE_CATS." ".(multilang_table("FI") ? "
      WHERE figure_cat_language='".LANGUAGE."'
      AND" : "WHERE")." figure_cat_id='".intval($_GET['figure_cat_id'])."'");
*/   
$result = dbquery("
SELECT
  f.figure_cat,
  f.figure_freigabe,
  fc.figure_cat_id,
  fc.figure_cat_name
FROM ".DB_FIGURE_CATS." fc
INNER JOIN ".DB_FIGURE_ITEMS." f
  ON fc.figure_cat_id=f.figure_cat"
.(multilang_table("FI")
  ? " WHERE figure_cat_language='".LANGUAGE."' AND"
  : " WHERE")
." figure_cat_id='".intval($_GET['figure_cat_id'])."'
AND figure_freigabe= 1
");
         

      

   if (dbrows($result) != 0) {
      $cdata = dbarray($result);
      $info = $cdata;
      add_to_title($locale['global_201'].$cdata['figure_cat_name']);
      figure_cat_breadcrumbs($figure_cat_index);
      add_to_meta("description", $cdata['figure_cat_name']);
      $max_rows = dbcount("(figure_id)", DB_FIGURE_ITEMS, "figure_cat='".$_GET['figure_cat_id']."' AND ".groupaccess('figure_visibility'));
      $_GET['rowstart'] = isset($_GET['rowstart']) && isnum($_GET['rowstart']) && $_GET['rowstart'] <= $max_rows ? $_GET['rowstart'] : 0;
      if ($max_rows != 0) {

      $fil_settings = get_settings("figurelib");
      
      $result = dbquery("
            SELECT figure_id,
               f.figure_title,
               f.figure_freigabe,
               f.figure_description,
               f.figure_datestamp,
               f.figure_clickcount,
               f.figure_manufacturer,
               f.figure_submitter,
               f.figure_brand,
               f.figure_scale,
               f.figure_pubdate,
               f.figure_variant,
               f.figure_series,
               fm.figure_manufacturer_id,
               fm.figure_manufacturer_name,
               fb.figure_brand_id,
               fb.figure_brand_name,
               fs.figure_scale_id,
               fs.figure_scale_name,
               fy.figure_year_id,
               fy.figure_year,
               fu.user_id,
               fu.user_name,
               fu.user_status
            FROM ".DB_FIGURE_ITEMS." f
            INNER JOIN ".DB_USERS." fu ON f.figure_submitter=fu.user_id
            INNER JOIN ".DB_FIGURE_MANUFACTURERS." fm ON fm.figure_manufacturer_id = f.figure_manufacturer
            INNER JOIN ".DB_FIGURE_BRANDS." fb ON fb.figure_brand_id = f.figure_brand
            INNER JOIN ".DB_FIGURE_SCALES." fs ON fs.figure_scale_id = f.figure_scale
            INNER JOIN ".DB_FIGURE_YEARS." fy ON fy.figure_year_id = f.figure_pubdate   
            WHERE ".groupaccess('figure_visibility')."
            AND figure_cat='".intval($_GET['figure_cat_id'])."'
            AND figure_freigabe = 1
            ORDER BY ".$cdata['figure_cat_sorting']."
            LIMIT ".$_GET['rowstart'].",".$fil_settings['figure_per_page']
            );   
      
         $numrows = dbrows($result);
         $info['figure_rows'] = $numrows;
         $fil_settings = get_settings("figurelib");
         $info['page_nav'] = $max_rows > $fil_settings['figure_per_page'] ? makepagenav($_GET['rowstart'], $fil_settings['figure_per_page'], $max_rows, 3, INFUSIONS."figurelib/figures.php?figure_cat_id=".$_GET['figure_cat_id']."&amp;") : 0;
         if (dbrows($result) > 0) {
            while ($data = dbarray($result)) {
               $data['new'] = ($data['figure_datestamp']+604800 > time()+($settings['timeoffset']*3600)) ? 1 : 0;
               $data['figure'] = array(
                  'link' => INFUSIONS."figurelib/figures.php?figure_cat_id=".$_GET['figure_cat_id']."&amp;figure_id=".$data['figure_id'],
                  'name' => $data['figure_title'],
                  'manufacturer' => $data['figure_manufacturer_name'],
                  'scale' => $data['figure_scale_name'],
                  'year' => $data['figure_year'],
                  'brand' => $data['figure_brand_name'],
                  'series' => $data['figure_series'],
                  'variant' => $data['figure_variant'],
                  'submitter' => $data['figure_submitter'],
                  'views' => $data['figure_clickcount'],
                  'userid' => $data['user_id'],
                  'username' => $data['user_name'],
                  'userstatus' => $data['user_status']
                              
               );
               $info['item'][$data['figure_id']] = $data;
            }
         }
      }
        render_figure($info);
   } else {
      redirect(FUSION_SELF);
   }

} else {

/* MAIN INDEX */
   $info['item'] = array();

    $result = dbquery("
         SELECT
              fc.figure_cat_id,
              fc.figure_cat_name,
              fc.figure_cat_description,
              count(f.figure_id) 'figure_anzahl'
         FROM ".DB_FIGURE_CATS." fc
         LEFT JOIN ".DB_FIGURE_ITEMS." f on f.figure_cat = fc.figure_cat_id and ".groupaccess("figure_visibility")." and figure_freigabe = 1
         ".(multilang_table("FI") ? "WHERE fc.figure_cat_language='".LANGUAGE."'" : "")."
         GROUP BY fc.figure_cat_id
         ORDER BY figure_cat_name
         ");




    $rows = dbrows($result);

    $info['figure_cat_rows'] = $rows;

    if ($rows != 0) {
      while ($data = dbarray($result)) {
         $data['figure_item'] = array(
            'link' => INFUSIONS."figurelib/figures.php?figure_cat_id=".$data['figure_cat_id'],
            'name' => $data['figure_cat_name']
         );
         $info['item'][$data['figure_cat_id']] = $data;
      }
   }
   render_figure_cats($info);
}
require_once THEMES."templates/footer.php";


/**
 * FigureLib Category Breadcrumbs Generator
 * @param $forum_index
 */
function figure_cat_breadcrumbs($figure_cat_index) {
   global $locale;
   /* Make an infinity traverse */
   function breadcrumb_arrays($index, $id) {
      $crumb = & $crumb;
      if (isset($index[get_parent($index, $id)])) {
         $_name = dbarray(dbquery("SELECT figure_cat_id, figure_cat_name, figure_cat_parent FROM ".DB_FIGURE_CATS." WHERE figure_cat_id='".$id."'"));
         $crumb = array(
            'link' => INFUSIONS."figurelib/figures.php?figure_cat_id=".$_name['figure_cat_id'],
            'title' => $_name['figure_cat_name']
         );
         if (isset($index[get_parent($index, $id)])) {
            if (get_parent($index, $id) == 0) {
               return $crumb;
            }
            $crumb_1 = breadcrumb_arrays($index, get_parent($index, $id));
            $crumb = array_merge_recursive($crumb, $crumb_1); // convert so can comply to Fusion Tab API.
         }
      }
      return $crumb;
   }
   

   

   // then we make a infinity recursive function to loop/break it out.
   $crumb = breadcrumb_arrays($figure_cat_index, $_GET['figure_cat_id']);
   // then we sort in reverse.
   if (count($crumb['title']) > 1) {
      krsort($crumb['title']);
      krsort($crumb['link']);
   }
   if (count($crumb['title']) > 1) {
      foreach ($crumb['title'] as $i => $value) {
         add_breadcrumb(array('link' => $crumb['link'][$i], 'title' => $value));
         if ($i == count($crumb['title'])-1) {
            add_to_title($locale['global_201'].$value);
         }
      }
   } elseif (isset($crumb['title'])) {
      add_to_title($locale['global_201'].$crumb['title']);
      add_breadcrumb(array('link' => $crumb['link'], 'title' => $crumb['title']));
   }
}


 
SuNflOw
Update 2:

Code 

$result = dbquery("
  SELECT
    f.figure_cat,
    f.figure_freigabe,
    fc.figure_cat_id,
    fc.figure_cat_name
  FROM ".DB_FIGURE_ITEMS." f
  LEFT JOIN ".DB_FIGURE_CATS." fc ON fc.figure_cat_id=f.figure_cat"
  .(multilang_table("FI")
    ? " WHERE figure_cat_language='".LANGUAGE."' AND"
    : " WHERE")
  ." figure_freigabe=1
  AND figure_cat=".intval($_GET['figure_cat_id'])."
");



Nächster Versuch. Bei mir klappt es so.
________________________________________________
I got my swim trunks and my Flippie-Floppies *-*
 
Catzenjaeger
nö geht nicht damn ... No figure categories defined kommt immer
 
SuNflOw
Und Ohne Language?

Code 

$result = dbquery("
  SELECT
    f.figure_cat,
    f.figure_freigabe,
    fc.figure_cat_id,
    fc.figure_cat_name
  FROM ".DB_FIGURE_ITEMS." f
  LEFT JOIN ".DB_FIGURE_CATS." fc ON fc.figure_cat_id=f.figure_cat
  WHERE figure_freigabe=1
  AND figure_cat=".intval($_GET['figure_cat_id'])."
");



Ich habe das nach gebaut:

figure_cat
---

Code 

| figure_cat_id | figure_cat_parent | figure_cat_name | figure_cat_description | figure_cat_sorting | figure_cat_language | 
| -: | -: | - | - | - | - |
| 1 | 0 | test |  | figure_title ASC | ".LANGUAGE." |
| 2 | 0 | test2 |  | figure_title ASC | ".LANGUAGE." |



figure_items
---

Code 

figure_items
---
| figure_id | figure_freigabe | figure_submitter | figure_agb | figure_cat | figure_title | figure_variant | figure_manufacturer | figure_artists | figure_country | figure_brand | figure_series | figure_scale | figure_weight | figure_height | figure_width | figure_depth | figure_material | figure_poa | figure_packaging | figure_pubdate | figure_retailprice | figure_usedprice | figure_limitation | figure_editionsize | figure_forum_url | figure_affiliate_1 | figure_affiliate_2 | figure_affiliate_3 | figure_affiliate_4 | figure_affiliate_5 | figure_affiliate_6 | figure_affiliate_7 | figure_affiliate_8 | figure_affiliate_9 | figure_affiliate_10 | figure_eshop | figure_amazon_de | figure_amazon_uk | figure_amazon_fr | figure_amazon_es | figure_amazon_it | figure_amazon_jp | figure_amazon_com | figure_amazon_ca | figure_accessories | figure_description | figure_visibility | figure_datestamp | figure_clickcount | figure_allow_comments | figure_allow_ratings | figure_sorting | figure_language |
| -: | -: | - | -: | -: | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | -: | -: | - | -: | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | -: | -: | -: | -: | -: | - | - |
| 1 | 1 |  | 0 | 1 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | 0,00 | 0,00 |  | 0 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | 0 | 0 | 0 | 1 | 1 |  | ".LANGUAGE." |
| 2 | 1 |  | 0 | 2 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | 0,00 | 0,00 |  | 0 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | 0 | 0 | 0 | 1 | 1 |  | ".LANGUAGE." |
| 3 | 0 | das | 0 | 2 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | 0,00 | 0,00 |  | 0 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | 0 | 0 | 0 | 1 | 1 |  | ".LANGUAGE." |



Abfrage:
---

Code 

SELECT 
  f.figure_cat,
  f.figure_freigabe,
  fc.figure_cat_id,
  fc.figure_cat_name
FROM figure_items f
LEFT JOIN figure_cat fc ON fc.figure_cat_id=f.figure_cat
WHERE figure_freigabe=1
AND figure_cat=1;



Ergebnis:
---

Code 

UnbekannteTabelle
---
| figure_cat | figure_freigabe | figure_cat_id | figure_cat_name |
| -: | -: | -: | - |
| 1 | 1 | 1 | test |


________________________________________________
I got my swim trunks and my Flippie-Floppies *-*
 
Catzenjaeger
ich habs .. das hier hat gefehlt: figure_cat_sorting omg so was pipimässiges bringt einen um den verstand
Bearbeitet von Catzenjaeger am 14.07.2016 um 14:39
 
Springe ins Forum: