Thread Verfasser: Catzenjaeger
Thread ID: 983
Thread Info
Es gibt 9 Beiträge zu diesem Thema, und es wurde 5329 Mal angesehen.  Ausserdem wurden Dateien angehängt.
 Thema drucken
Logikfrage Aufbau Code - Beispiel / Hilfe gesucht
Catzenjaeger
Ich habe einmal einen grundsätzliche Frage zum Codeaufbau:

In meiner Figurendatenbank möchte ich , dass wenn die Kategorien angezeigt bekommt und dann auf eine dieser Kategorien klickt einen Unterseite aufgeht wo die Manufacturer angezeigt werden und wenn man dort wieder einen auswählt zur Figurenübersicht des Herstellers kommt und dann wiederum auf die Figuren-Detailseite. Also alles verschachtelt

Wie geht das genau ... seit Tagen zerbreche ich mir den Kopf aber bekomme das einfach nicht hin. Ich bin jetzt soweit, dass ich die Kategorien angezeigt bekommen und denn ich darauf klicke alle Figuren die da drin sind. Ich würde jetzt noch die Manufacturer dazwischen schalten .. weiß aber nicht wie das geht. Das ist ja alles in einer einzigen Datei.

Wir muss den ein Code aussehen der das macht:

Hat da jemand mal ein Beispiel?

In Fusion 9 ist die eigentliche Darstellung in templates ausgelagert.
In meinen Beispiel --> templates--> template_figurelib.php

die eigentlichen Daten kommen dann aus der figure.php

wenn das mit den Manufacturern nicht geht ist nicht ganz sso schlimm aber ich bekomme es nicht hin das mit klick auf die Figur deren Details aufgehen. Ich weiss nicht wie ich das umsetzen muss.

Kann jemand helfen oder einen Anregung geben? ich hänge beide Files mal an .. alspo die figure.php die die Daten liefert und das template was die daten ausgibt

Danke :) Wäre toll wenn jeman helfen kann
Catzenjaeger hat folgende Datei angehängt:
Du hast nicht die Berechtigung die Anhäge dieses Themas zu sehen.
 
SuNflOw
Hallo,

interessantes Projekt. Ich hoffe ich habe alles richtig verstanden und dann wollen wir mal sehen wie ich dir helfen kann.

Erstmal die Reihenfolge so wie ich sie verstanden habe:

Code 

Kategorie -> Hersteller -> Details



In einer Kategorie sind Hersteller. Klickt man einen Hersteller an, sieht man die Figuren die dazu passen?

Wenn ich das richtig verstanden habe, dann müssen wir erst einmal überlegen wie wir die Daten am Besten abspeichern. Ich schlage folgendes vor:

phpfusion-deutschland.de/forum/attachments/erd.png


Figuren werden Herstellern und Kategorien zugeordnet.
Hersteller werden in Kategorien unterteilt.
Kategorien werden Hersteller und Figuren zugeordnet.

Nachdem du deine Daten dementsprechend ergänzt hast, kannst du einfache Anfragen an die Datenbank stellen und diese wie gewohnt anzeigen. Solltest du bei den Anfragen an die Datenbank noch fragen haben kann ich dir dahingehend auch gerne weiterhelfen.

Zum Beispiel:

Code 


SELECT h.* FROM Hersteller h
LEFT JOIN Kategorie2Hersteller k2h ON k2h.Hersteller_HerstellerId=h.HerstellerId
LEFT JOIN Kategorie k ON k2h.Kategorie_KategorieId=k.KategorieId
WHERE k.KategorieId=1;


Gibt dir alle Hersteller die in einer bestimmten Kategorie sind zurück.

Liebe Grüße,
Patrick
SuNflOw hat folgende Datei angehängt:
Du hast nicht die Berechtigung die Anhäge dieses Themas zu sehen.

Bearbeitet von SuNflOw am 20.06.2016 um 14:41
________________________________________________
I got my swim trunks and my Flippie-Floppies *-*
 
Catzenjaeger
danke für das ausführliche Feedback - klasse :)
die Infusion ist schon zu 70% fertig.

Das einzigste was nicht klappt ist der Bildupload und eben die Darstellung der Figuren. Alles andere läuft soweit

Leider bin mit meinen Fähigkeiten an Ende so dass ich jetzt hier quasi als Bittsteller auftreten muss. Ich habe schon mehrfach versucht (HIER z.B) aber noch keine Antworten ;)

Ich habe bereits eine einen figures.php in der die Datenbankabfragen sind. Diese Daten werden dann innerhalb eines Templates genutzt.
Bei Fusion 9 geht wohl vieles über Templates so das man den code belassen kann und nur das Template ändern muss. Das macht es aber für mich als Anfänger besonders schwer da die Übersicht zu behalten

Die Anzeige der Kategorien geht (diese function funzt also) eine weitere function steuert nun die entsprechenden Figuren zu auch das geht prinzipiell aber ich wollte noch die Manufacturer dazwischen schalten. Was ich nicht hinbekommen habe ist die Darstellung einer einzelnen Figur mit dem quasi letzten Klick innerhalb der ganzen abfragen.

Ich habe auch in UK gefragt für Hilfe weil der Upload ja nicht klappt. Schade auch dort antwortet keiner :(

Wie gesagt meine submit.php geht bis den Bildupload. Die Bilder wollen einfach gespeichert werden :(

Meine Anfrage hier beinhaltet halt wie man das so vom Codeaufbau machen soll:

also mal als Beispiel was ich suche (der Logikaufbau)

Zitat: if (isset($_GET['cat_id']) && isnum($_GET['cat_id'])) {

Datenbankabfrage Kategorien -->

--> zeige mir die Kategorien im Template an --> render_figure_cat($info);

klick auf Kategorie --> zeige mir die Manufakturer an
if (isset($_GET['cat_id']) && isnum($_GET['manufacturer_id'])) {

klick auf Manufactuer --> zeige mir alle dazugehörigen Figuren an
klick auf einen Figur --> zeige die ganzen Detail der Figur an

Dieses bekomme ich nicht hin weil das alles functionen im template sind die dann der figures.ph mittel "render_figure_item($info)" und andere zugesteuert werdenn
 
SuNflOw
Hallo,
ich habe mir das jetzt 3 mal durchgelesen und ich verstehe es nicht. Sad
________________________________________________
I got my swim trunks and my Flippie-Floppies *-*
 
Catzenjaeger
Also, ich denke es werden da 2 Files benötigt -- aber die bauen gelingt mir nicht

infusions/fugurelib/figures.php
infusions/figurelib/templates/template_figurelib.

in der figures.php kommen die ganzen abfragen rein
in die templates kommen dann die functions so wie hier in den faqs (als Beispiel). die müssten abe rnoch erweitert bzw total umgebaut sein.

Code 

// Main View
if (!function_exists("render_faq")) {
   function render_faq($info) {
      opentable($info['faq_title']);
      echo "<!--pre_faq_idx-->\n";
      if (!empty($info['items']) && count($info['items'])) {
         echo "<div class='list-group'>\n";
         foreach ($info['items'] as $data) {
            echo "<div class='list-group-item'>\n";
            echo "<h4 style='width:100%'><a href='".$data['faq_link']."'>".$data['faq_cat_name']."</a><span class='badge pull-right'>".$data['faq_count']."</span></h4>\n";
            if ($data['faq_cat_description']) {
               echo $data['faq_cat_description'];
            }
            echo "</div>\n";
         }
         echo "</div>\n";
      } else {
         echo "<div class='well text-center'>".$info['nofaqs']."</div>\n";
      }
      closetable();
   }
}
// Category View
if (!function_exists("render_faq_item")) {
   function render_faq_item($info) {
      global $locale;
      echo "<span id='content'></span>\n";
      opentable($locale['401'].": ".$info['faq_cat_name']);
      echo "<a href='".INFUSIONS."faq/faq.php'>".$locale['400']."</a> &gt; <a href='".$info['faq_link']."'>".$info['faq_cat_name']."</a>\n";
      if (!empty($info['nofaq_items'])) {
         echo "<div class='well text-center m-t-20'>".$info['nofaq_items']."</div>\n";
      } else {
         echo "<div class='row m-t-20'>\n";
         echo "<div class='col-xs-12 col-sm-3'>\n";
         if (!empty($info['items'])) {
            echo "<ul>\n";
            foreach ($info['items'] as $data) {
               echo "<li><a href='".FUSION_REQUEST."#faq_".$data['faq_id']."'>".$data['faq_question']."</a></li>\n";
            }
            echo "</ul>\n";
         }
         echo "</div>\n";
         echo "<div class='col-xs-12 col-sm-9'>\n";
         foreach ($info['items'] as $data) {
            echo "<a class='pull-right btn btn-xs btn-default' href='".FUSION_REQUEST."#content'><i class='fa fa-arrow-up'></i> ".$locale['402']."</a>\n";
            echo "<h4 id='faq_".$data['faq_id']."'>".$data['faq_question']."</h4>\n";
            echo nl2br(parse_textarea($data['faq_answer']));
            echo "<hr/>\n";
         }
         echo "</div>\n";
         echo "</div>\n";
      }
      closetable();
   }
}


Bearbeitet von Catzenjaeger am 20.06.2016 um 21:21
 
SuNflOw
Hallo,
ich hoffe ich habe das jetzt richtig verstanden.

Du machst ein Array mit allen Daten die du später anzeigen möchtest. Dies dient nur dazu um später zu sehen welche Felder du hast. Man kann das auch weg lassen:

Code 

$figur_details = array(
  'figur_name' => '',
  'figur_was_auch_immer' => ''
);


Dann legst du ein Array an indem dann die einzelnen Figuren abgespeichert werden:

Code 

$figur_data = array();



Danach machst du deine Abfrage und füllst dieses Array mit deinen Daten:

Code 

$figur_details = array(
  'figur_name' => 'Tolle Figur',
  'figur_was_auch_immer' => 'Ja, das ist eine ganz tolle Figur'
);


Dann nur noch dem Figuren Array hinzufügen:

Code 

$figur_data[] = $figur_details;



Danach rufst du die in der Datei 'infusions/figurelib/templates/template_figurelib.php' definiere Funktion auf die dafür verantwortlich ist eine Figur anzuzeigen. Es ist wichtig dass du hier deine Figuren Details mitgibst:

Code 

render_figur_details($figur_data);



Nun nochmal zusammen:

Code 

$figur_data = array();
while($data = dbarray($result))
{
  $figur_details = array(
    'figur_name' => $data['name'],
    'figur_was_auch_immer' => $data['desc']   
  );
  $figur_data[] = $figur_details;
}
render_figur_details($figur_data);



In der Datei 'infusions/figurelib/templates/template_figurelib.php' gibt es eine Funktion:

Code 

function render_figur_details($figur_data) 
{
  echo '<ul>';
  foreach($figur_data as $figur)
  {
    echo '<li>'.$figur['name'].'</li>';
  }
  echo '</ul>';
}


________________________________________________
I got my swim trunks and my Flippie-Floppies *-*
 
Catzenjaeger
danke für deinen Hilfe. Ich habs trotzdem nicht kappiert. Ich habe momentan totale Blockade. Mir happert es an der Logig iwe man sowas aufbaut und auch umsetzt.

Ich komm vor allen mit den Begrifflichkeiten nicht zurecht .. details und data sind für mich das gleiche vom logischen her.

wenn du zB schreibst ich soll ein array mit allen daten anlegen ... nun was sind die daten?

ok ich versuch es mal wie du beschreiben hast.
Das sind die wesentlichen Daten die zu einer Figur gespeichert werden in der DB (paar andere noch wie zB rating/comments/datastamp usw)


Zitat: 

$result = dbquery(
"SELECT tb.figure_id,
tb.figure_submitter,
tb.figure_freigabe,
tb.figure_pubdate,
tb.figure_scale,
tb.figure_title,
tb.figure_variant,
tb.figure_series,
tb.figure_manufacturer,
tb.figure_brand,
tb.figure_datestamp,
tb.figure_cat,
tbc.figure_cat_id,
tbc.figure_cat_name,
tbu.user_id,
tbu.user_name,
tbu.user_status,
tbu.user_avatar,
tbm.figure_manufacturer_name,
tbb.figure_brand_name,
tby.figure_year_id,
tby.figure_year,
tbs.figure_scale_id,
tbs.figure_scale_name
FROM ".DB_FIGURE_ITEMS." tb
LEFT JOIN ".DB_USERS." tbu ON tb.figure_submitter=tbu.user_id
INNER JOIN ".DB_FIGURE_CATS." tbc ON tb.figure_cat=tbc.figure_cat_id
INNER JOIN ".DB_FIGURE_MANUFACTURERS." tbm ON tbm.figure_manufacturer_id = tb.figure_manufacturer
INNER JOIN ".DB_FIGURE_BRANDS." tbb ON tbb.figure_brand_id = tb.figure_brand
INNER JOIN ".DB_FIGURE_SCALES." tbs ON tbs.figure_scale_id = tb.figure_scale
INNER JOIN ".DB_FIGURE_YEARS." tby ON tby.figure_year_id = tb.figure_pubdate
WHERE figure_freigabe = '1'
AND figure_cat='".intval($_GET['cat_id'])."'
ORDER BY ".$cdata['figure_cat_sorting']."
LIMIT ".$_GET['rowstart'].",".$fil_settings['figure_per_page']
);

$figur_data = array();
while($data = dbarray($result))
{
$figur_details = array(

$figur_details = array(
'figure_freigabe' => 0,
'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_retailprice' => '',
'figure_usedprice' => '',
'figure_limitation' => '',
'figure_cat' => '',
'figure_editionsize' => '',
'figure_accessories' => '',
'figure_description' => '',
'figure_pubdate' => '',
'figure_agb' => 0,
'figure_datestamp' => '',


$figur_data[] = $figur_details;
}
render_figur_details($figur_data);

);


sorry Smile

im Prinzip müssten das der ganze Kram schon hier in diesen File sein aber ich bekomme es nicht geordnet .. das ist zu unübersichtlich

siehe ANHANG!!
Catzenjaeger hat folgende Datei angehängt:
Du hast nicht die Berechtigung die Anhäge dieses Themas zu sehen.

Bearbeitet von Catzenjaeger am 21.06.2016 um 14:03
 
SuNflOw
Hallo,
vielleicht ist 'details' und 'data' nicht ganz glücklich gewählt. Details repräsentiert eine Figur. Und in Data sind am Ende alle Figuren.

Ich habe auch GitHub geschaut. Was genau funktioniert da nicht? Ich habe gerade keine VM oder keinen Server hier um das zu testen.

Was ist das was du erhältst?
Was erwartet du zu erhalten?

Grüße,
Patrick
________________________________________________
I got my swim trunks and my Flippie-Floppies *-*
 
Catzenjaeger
Hallo,

danke das du schaust. Ich habe einen testaccount mal eingerichtet da siehtst das alles live. Ist einen Version 9 die nur zu Testzwecken dient und nur zum test dieser infusion .. auf alles andere habe ich da keinen wert gelegt ... also nicht erschrecken Smile

meine figures.php und die dazugehörige Template Datei zeigt nur die Kategorien und mit klick darauf die Figuren die dahinter stehen bzw zu dieser Kategorie gehören. Die Maufacturer sind nicht zu sehen . Die hätte ich noch gerne "dazwischen" geschalten. Die eigentliche Figuren-Detailseite geht gar nicht.

also --> Kategorie --> Hersteller dieser Kategorie --> Alle Figuren des Herstellers --> Detailseite mit allen Daten inklusive den Bildern der Datei.(wie auf den einen Bild zus sehen mit den 10 Bildern)


Momentan ist es so: Kategorie --> alle Figuren der Kategorie

allerdings ist diese Liste schlimm anzusehen. Ich hänge mal 2 Bilder an die zeigen sollen wie es eigentlich aussehen sollte bzw mal aussah
Catzenjaeger hat folgende Datei angehängt:
Du hast nicht die Berechtigung die Anhäge dieses Themas zu sehen.
 
Springe ins Forum: