Thread Verfasser: Catzenjaeger
Thread ID: 977
Thread Info
Es gibt 7 Beiträge zu diesem Thema, und es wurde 3365 Mal angesehen.  Ausserdem wurden Dateien angehängt.
 Thema drucken
$counter - wie funktionierts richtig?
Catzenjaeger
Ich möchte Daten mehrspaltig bzw so wie in den settings angeben ausgeben. Nun gibt es diese counter Funktion die das wohl macht. Ich habe versucht nach anderen codes das nachzubauen aber es werden nur die Daten untereinander gezeigt .. nicht nebeneinander.

Kann mir jemand kurz erklären wie man das korrekt macht?

hier mein Versuch:

Code
$counter = 1;
$cell_color = ($i % 2 == 0 ? "tbl1" : "tbl2"); $i++;
if ($i != 0 && ($i % $asettings['figure_per_line'] == 0)) { echo "</tr>\n<tr>\n"; }
            echo "<td>";
            
            echo "<span class='figure_title strong'><a href='".$data['figure']['link']."' target='_blank'><strong>".$data['figure']['name']."</strong></a></span>\n";
            
            // Manufacturer
            echo "<p><span class='small'>".$locale['LFP_003'].": ".$data['figure']['manufacturer']."</strong></a></span>\n";
            // DATE ADDED
            echo "<br><span class='small'>".$locale['figure_414']." : ".showdate("shortdate", $data['figure_datestamp'])."<br />\n";
                        
                              echo "</td>\n";
      $i++;               
      echo ($counter % 2 == 0 ? "<br />" : "");
      $counter++;


David hier aus dem Forum hat so gepostet und erklärt gehabt:

$counter = 1;
$result = dbquery("SELECT felder FROM ".DB_TABELLE." WHERE konditionen");
if (dbrows($result)) {
while ($data = dbarray($result)) {
echo "Ausgabe von etwas ..";
echo ($counter % 2 == 0 ? "<br />" : "");
$counter++;
}
}

wenn ich das genauso nach baue also so:

Code
$counter = 1;

               while ($data = dbarray($result)) {
                  echo "Ausgabe von etwas ..";
                  echo ($counter % 2 == 0 ? "<br />" : "");
            $counter++;


wirds nichts nebeneinander dargestellt. Die Daten liegen schon vor die brauch ich nicht abfragen weil ich in einem template bin.

Die Daten werden oben in der function des Templates so geholt:

Code
if (!function_exists('render_figure_item')) {
   function render_figure_item($info) {
      global $locale;
      echo render_breadcrumbs();
      
   
      if ($info['figure_rows']) {
         foreach($info['item'] as $figure_id => $data) {
            $new = $data['new'] == 1 ? "<span class='label label-success m-r-10' style='padding:3px 10px;'>".$locale['new']."</span>" : '';
            
            echo "<aside class='display-inline-block m-t-20' style='width:100%;'>\n";   
 
Manfried
Nimm doch mal aus der Zeile
Code
 echo ($counter % 2 == 0 ? "<br />" : "");

das "<br />" raus und ersetze es durch ",&#160;"
<br /> heißt ja Zeilenumbruch, so dass deine Daten zwangsläufig untereinander angezeigt werden.
Die meiste Zeit des Lebens sucht man seinen Sinn vergebens ...
 
Catzenjaeger
leider nicht die Lösung Sad
 
Manfried
In der Zeile
Code
echo "<br><span class='small'>".$locale['figure_414']." : ".showdate("shortdate", $data['figure_datestamp'])."<br />\n";


sind ebenfalls gleich zwei <br> bzw. <br /> enthalen - nimm die doch auch noch raus, vielleicht ist das dann die Lösung. :)
Die meiste Zeit des Lebens sucht man seinen Sinn vergebens ...
 
Catzenjaeger
ne auch das geht nicht :(

Zitat:  $counter = 1;

echo "<td>";

echo "<span class='figure_title strong'><a href='".$data['figure']['link']."' target='_blank'><strong>".$data['figure']['name']."</strong></a></span>\n";

// Manufacturer
echo "<span class='small'>".$locale['LFP_003'].": ".$data['figure']['manufacturer']."</strong></a></span>\n";
// DATE ADDED
echo "<span class='small'>".$locale['figure_414']." : ".showdate("shortdate", $data['figure_datestamp'])."\n";

echo "</td>\n";

echo ($counter % 2 == 0 ? "<br />" : "");
$counter++;
 
Manfried
Das *\n* ergibt in der Darstellung im Browser ja auch einen Zeilenumbruch - versuche mal diesen Code:
Code
$counter = 1;

echo "<td>";

echo "<span class='figure_title strong'><a href='".$data['figure']['link']."' target='_blank'><strong>".$data['figure']['name']."</strong></a></span> ";

// Manufacturer
echo "<span class='small'>".$locale['LFP_003'].": ".$data['figure']['manufacturer']."</strong></a></span> ";
// DATE ADDED
echo "<span class='small'>".$locale['figure_414']." : ".showdate("shortdate", $data['figure_datestamp'])." ";

echo "</td>\n";

echo ($counter % 2 == 0 ? "&#160;" : "");
$counter++;

Die meiste Zeit des Lebens sucht man seinen Sinn vergebens ...
 
Catzenjaeger
danke für deine hilfe ...geht nicht siege code unten ... aber wie baue ich ein, dass die der Wert aus den Settings : "figures per line" mit eingebaut werden kann und je nach dem welcher Wert festgelegt wurde auch übernommen wird.

ich denke in diese Zeile muss das rein oder?

echo ($counter % 2 == 0 ? "&#160;" : "");

$asettings['figure_per_line']

bedutet das counter % 2 = 2 figuren nebeneinander und dann umbruch?
heisst bei 3 nebeneinander dann counter % 3 ????


hier der code aber alles untereinander

Code
            // GALLERIEANSICHT   

            $counter = 1;
            
            echo "<td>";
            // DAS HIER IST GALLERIEANSICHT
            echo "<span class=''><a href='".$data['figure']['link']."' target='_blank'><strong>".$data['figure']['name']."</strong></a></span>";         
            // Manufacturer
            echo "<span class='small'>".$locale['LFP_003'].": ".$data['figure']['manufacturer']."</strong></span>";
            // DATE ADDED
            echo "<span class='small'>".$locale['figure_414']." : ".showdate("shortdate", $data['figure_datestamp'])."";                                 
            // RATING
            $drating = dbarray(dbquery("SELECT SUM(rating_vote) sum_rating, COUNT(rating_item_id) count_votes FROM ".DB_RATINGS." WHERE rating_item_id='".$data['figure_id']."' AND rating_type='FI'"));
            $num_votes = $drating['count_votes'];
            $rating = ($num_votes > 0 ? str_repeat("<img src='".INFUSIONS.$inf_folder."/images/star.png'>",ceil($drating['sum_rating']/$num_votes)) : "-");
            echo $locale['figure_418'].": ".$rating."";            
            // KOMMENTARE
            $comments = dbcount("(comment_id)", DB_COMMENTS, "comment_type='FI' AND comment_item_id='".$data['figure_id']."'");
            echo $locale['figure_420'].": ".$comments."";               
            // KLICKCOUNT = VIEWS
            echo $locale['clickcount'].": ".$data['figure_clickcount']."</span>";

            echo "</td>\n";
            echo ($counter % 2 == 0 ? "&#160;" : "");
            $counter++;


Zusammengefügt am 24. Juni 2016 um 10:57:57:
immer noch alles untereinander. Hier zu sehen: http://aliencollectors.com/test/infus...p?cat_id=2

hier ist der github code: https://github.com/Catzenjaeger/Figur...urelib.php

Ist n ur ne testseite die nur für diese Infusion ist .. also auge zu bei allen anderen :)

Also ich muss es irgendwie hinbekommen, das die figuren nebeneinander angezeigt werden und je nachdem was in den settings mit

"figure_per_page" => figuren pro seite danach erfolgt die Navigation einblendung

"figure_per_line" => anzahl der figuren nebeneinander .. dann erfolgt umbruch bis figure_per_page erreicht ist

kann jemand helfen?

Zusammengefügt am 24. Juni 2016 um 12:40:58:
so sieht aus :(

Zusammengefügt am 25. Juni 2016 um 14:49:21:
wie kann ich das so machen das der Wert aus den Settings beachtet wird?

das
Zitat: $counter = 0;
$columns = 2;


quasi so etwa
Zitat: $counter = 0;
$columns = $counter % $asettings['figure_per_line'];


eventuell bin ich auch aufm Holzweg. ich möchte quasi das je nachdem welcher wert bei figure in line in den Settings steht dieser auch auf der Showsite so übernommen wird.

Und wie blende ich die NaVIGATION EINß
Catzenjaeger hat folgende Datei angehängt:
Du hast nicht die Berechtigung die Anhäge dieses Themas zu sehen.

Bearbeitet von Catzenjaeger am 25.06.2016 um 14:49
 
Springe ins Forum: