• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Variable in Schleife

Werbung:
...warum willst du jetzt das nächste Beispiel schreiben.
Nun ja.. die einfache Antwort wäre jetzt... weil ich es kann ;)!
Aber das ist natürlich Quatsch. Mein erstes Gästebuch habe ich vor über 10 Jahren mal gebaut und die Erinnerung daran, ebenso wie Erinnerung an die Probleme, die ich da hatte, sind mittlerweile schon etwas verblasst. Dass ich da jetzt mitspiele ist also mehr so eine 'Selbstfindung' ... habe ich seit meinen ersten Versuchen etwas dazu gelernt? ... vielleicht gehe ich nachher sogar nochmal hin und stricke meinen alten Gästebücher etwas um, wenn ich hier auf neue Ideen komme ;)!
 
Werbung:
Und welche Methode du dafür verwenden tust.
Sicherlich eine etwas andere als du - als Erstes nutze ich ein Formular zur Übermittlung der 'Seiten-Navigation'. Dazu müssen natürlich auch die entsprechenden isset($_POST['xxx'] eingebaut sein.
Dann basiert meine Lösung ja nicht auf Datenbank, sondern weiterhin auf eine Textdatei. Aber das dürfte alles nicht die Pagination beeinflussen - bzw müsste leicht anzupassen sein.
Aber hier mal der Code für 'meine Methode':
PHP:
<!-- ***********************************************************************************************
*  Die Variaben
*
*  $_SESSION['seite'] = aktuelle Seite
*  $_SESSION['seite_max'] = maximale Anzahl der Seitenanzeige
*  $stop_position = Zahl - Pointer auf letzten Eintrag, der auf der aktuellen Seite angezeigt wird
*  $start_position = Zahl - Pointer auf ersten Eintrag, der auf der aktuellen Seite angezeigt wird
*  $_SESSION['anzahl_eintraege'] = Anzahl der Einträge gesamt
*
*  müssen vom Code vor Ausführung dieses Codes ermittelt/berechnet werden
*
*  Die Variable
*
*  $anzahl_s_max = maximale Anzahl von angezeigten Seitenlinks in Pagination
*
*  ist als Vorgabe/Grundeinstellung im Code vor Aufruf dieses Codes festzulegen
* ***************************************************************************************************  -->  
<div class="form_wrapper">
<form name="seitenwahl" action="gaestebuch.php" method="post">
   <table>
   <tr>
     <td style="text-align: left; width: 20%;">
     <?php
     if($_SESSION['seite'] > 0) /*Einblenden Vorher Button, wenn aktuelle Seite nicht erste Seite*/
       {echo "<input type=\"submit\" name=\"zurueck\" value=\"Vorherige Seite\">\n";}
     echo "</td>\n<td style=\"text-align: center;\">\n";
     $start = ($_SESSION['seite'] - intval($anzahl_s_max / 2)); /*festlegen der Startposition für Linkzählung - */
     if($start < 0)
        {$start = 0;}
     $stop = $start + $anzahl_s_max;  /*festlegen der Stopposition für Linkzählung - */
     if($stop > $_SESSION['seite_max'])
        {$stop = $_SESSION['seite_max'];}
     if($stop > $anzahl_s_max)
        {$start = $stop - $anzahl_s_max;}    
     if($start > 0)                   /*Zeigt permanenten Link zu Seite 1, wenn Startposition größer 0 */
       {echo "<button class=\"page_button\" type=\"submit\" name=\"go_page\" value=\"0\">1</button>\n";}
     if($start > 0 and $_SESSION['seite'] > 3)
       {echo "<span>... </span>";}
     for($a = $start; $a <= $stop; $a++) /*Loop Erstellung der Seitenlinks*/
        {if($a == $_SESSION['seite']) /*CSS Klasse für aktuellen Seite setzen*/
            {$akt= "_akt";}
        else
            {$akt= "";}
        echo "<button class=\"page_button".$akt."\" type=\"submit\" name=\"go_page\" value=\"".$a."\">".($a+1)."</button>\n";
        }  
     if($stop < $_SESSION['seite_max'] - 1)
        {echo "<span> ...</span>";}
     if($stop < $_SESSION['seite_max'] ) /*Zeigt permanenten Link zur letzten Seite, wenn Stopposition größer < maximale Seitenzahl */
        {echo "<button class=\"page_button\" type=\"submit\" name=\"go_page\" value=\"".$_SESSION['seite_max']."\">".($_SESSION['seite_max'] + 1)."</button>\n";}
     echo "<br>Du bist auf Seite ".($_SESSION['seite'] +1)." von ".($_SESSION['seite_max'] + 1)." / Einträge ".($stop_position +1)."-".($start_position +1)." von ".$_SESSION['anzahl_eintraege']."</td>\n";
     echo "<td style=\"text-align: right; width: 20%;\">\n";
     if($_SESSION['seite'] < $_SESSION['seite_max'])
        {echo "<input type=\"submit\" name=\"vorwaerts\" value=\"Nächste Seite\">\n";}
     ?>
     </td>
   </tr>
   </table>
</form>
</div>
... und in freier Wildbahn sieht das dann so http://s414653727.online.de/tab_test/gaestebuch.php aus.
 
Ja das ist etwas anders als wie ich es machte.
Damit ihr was zum lachen habt ,zeige ich mal meine Version
PHP:
$menge= "".$row['name']."";//Anzahl aus  db
$max=5;//Anzahl  derEinträge pro  Seite
$menge_pagniton_minus=5;//Menge unterder ahtuellen Seite
$menge_pagniton_plus=5;// Meneg dereinträge  über der aktuellen einträge
$gesamt_pagniton=round($menge_pagniton_minus+$menge_pagniton_plus);

if(isset($_GET['seite'])) {
    $seite = intval($_GET['seite']);
}
 $runde = round($row['name']/$max);//Seiten gesamt / Gesamteinträge  aus der Datenbank / Maximale Einträge pro  seite
 if($seite>=$runde){
         $vor='';
 }else{
         $vor="<a href='?seite=".round($seite+1)."'>Vor (".round($seite+1).")</a>";
 }
 if(round($seite-1)<=0){
        $zur='';
 }else{
        $zur="<a href='?seite=".round($seite-1)."'>Zurück (".round($seite-1).")</a>";
 }
        $mitte="<a href='?seite=".$seite."'>Aktuelle Seite(".$seite.")</a>";

 if($runde>=$gesamt_pagniton){
        if($seite<=4){
             $menge_pagniton_minus=$seite-1;
        }
        for($a=$menge_pagniton_minus;$a>=1;$a--){
             $links.="<a href='?seite=".round($seite-$a)."'>".round($seite-$a)."</a>";
             $d=$seite-$a;
        }
        if($seite>=$runde-5){
             $h=$runde-$seite;
             $menge_pagniton_plus=$h;
             $rechts='';
        }
        for($k=1;$k<=$menge_pagniton_plus;$k++){
             $rechts.="<a href='?seite=".round($seite+$k)."'>".round($seite+$k)."</a>";
        }
        $pag="<span id='zur'>$zur</span><span id='links1'>$links;</span><span id='mitte1'>$mitte</span><span id='rechts1'>$rechts</span><span id='vor'>$vor;</span>";
 }else{
        for($i=1;$i<=$runde;$i++){
             $links.="<a href='?seite=".round($seite+$i)."'>".round($seite+$i)."</a>";
        }
        $pag="<span id='zur'>$zur</span><span id='links1'>$links;</span><span id='vor'>$vor;</span>";//End ausgabe
 }
 // Ende  Pagnition
$start=round($seite*$max-$max);
$ende=round($start+$max);
//hiermit wird = sie sind auf  seite  von X bis Y  von XX  erzeugt
Auch hier kann man es sehen http://sebastian1012.bplaced.net/homepagebasti1012/gastebuch/gastebuch.php?seite=1
Aber GB ist noch im bau
EDIT wie kann man hier den ein php Code posten?
 
Zuletzt bearbeitet:
Werbung:
Soetwas tut mir immer in den Augen weh:
PHP:
$menge= "".$row['name']."";
Du fügst vor/nach $row['name'] nichts ein, also was soll das dann? Und achte auf deine Variablenbezeichnungen, denn eine Menge und ein Name passen semantisch nicht zusammen. So macht man sich das Leben selber nur unnötig schwer.
 
Am anfang stand davor und danach noch was.
Hatte den Code auch öffters getauscht und geändert.(Hätte zum schluß noch aufräumen müßen,STIMMT).
das mit VariablenNamen muß ich mir noch abgewöhnen,das durcheinander mache ich bei JS meist auch noch .( Änder ich auch noch ).

Und sonst ? Gab es noch mehr zu heulen ?:(

EDIT: In php Code sieht mein Code doch schöner aus:)
 
Werbung:
das mit VariablenNamen muß ich mir noch abgewöhnen
Solange man nur ein paar Zeilen Quellcode hat, mag das ja noch gehen, dann ist das nur unschön. Aber wenn der Quellcode über mehrere Bildschirmseiten geht, verliert man den Überblick und das Chaos beginnt.

Das ist auch beim Einrücken der Fall, auch da verliert man den Überblick, wenn man das nicht ordentlich macht.
 
Was anderes.
Hier im Code habe ich leere Variabeln zb $rechts='';
Ohne die ,hatte ich Warnungen deswegen bekommen.Aber der Code hatt trotzdem Funktioniert.
Bei JS ist es ja genau andersrum. Wenn du Variabeln hast die nicht definiert sind(auch wenn sie nur leer sind) schmeißt JS auch ein Fehler raus ,aber Code läuft nicht mehr.
Ist Php in solchen fällen wenniger empfindlich?
Einge Fehler lassen sich zwar mit "use strict" bei Js umgehen ,aber ist ja nicht die schöne art
 
Werbung:
Gibt es eine gute möglichkeit eine Variable aus der tunction zu bekommen .
Zb
PHP:
<?php
function raus(){
$ichwillraus='blabla';
}
?>
<html>
reichlich html und  css gedönsrat
<div>
<? php echo $ichwillraus: ?>
</div>
</html>

Habe auch gegoogelt mit nicht guten ergebniss.
erst habe iches so gemacht
PHP:
 global $ichwillraus='bla';
dann
PHP:
&$ichwillraus='bla';
oder
PHP:
$GLOBALS['func_test_$ichwillraus'] = $chwillraus;


Die ersten beiden Varianten klappen gar nicht.
Die letzte klappt zwar.Aber wird der Php Code nicht benutz weil zb <form> noch nicht gesendet hat ,steht der Fehlercode im html.
Könnte ja error reporting aus machen,aber Fuschen wollte ich nicht.Wenn dann schon lernen dann auch möglichs ohne fusch.

Habt ihr Ideen die Variable da unten ins Html zu bekommen?
Dacht vieleicht ans zwischen speichern oder so,aber ihr kennt bestimmt einfachere Wege
 
versuch es mal so...
PHP:
<?php
function raus(){
  $ichwillraus='blabla';
  return $ichwillraus;
}
?>
<html>
reiichlich gedön
<div><?php echo raus(); ?>
</div>
</html>
 
Werbung:
versuch es mal so...
PHP:
<?php
function raus(){
  $ichwillraus='blabla';
  return $ichwillraus;
}
?>
<html>
reiichlich gedön
<div><?php echo raus(); ?>
</div>
</html>
Ich glaube das geht nicht?
weil in der Function die ganze db abfrage ist und ich der Function noch vabialen mitgeben muß .
also so

PHP:
<?php
function raus($eins,$zwei){
  $ichwillraus='blabla';
 
}
raus($eins,$zwei)//und so weiter
?>
<html>
reiichlich gedön
<div><?php echo raus(); ?>// Hier währen die variabeln $eins und $zwei auch nicht  definiert
</div>
</html>
Also fällt das wohl auch flach:(
Globals never ever!

Aber du möchtest bestimmt mal in der Doku lesen: http://de2.php.net/manual/de/language.functions.php

Hatte ich versucht,aber leider nix passendes gefunden oder es übersehen.
 
Ich glaube das geht nicht?
Doch

weil in der Function die ganze db abfrage ist und ich der Function noch vabialen mitgeben muß .
Ja und? Je nachdem, was du von außen in der Funktion brauchst, kannst du übergeben.

Also fällt das wohl auch flach:(
Nein

Hatte ich versucht,aber leider nix passendes gefunden oder es übersehen.
Man darf auch mal länger in der Doku sehen und nicht nur drüber fliegen.
 
Werbung:
mh... ich glaube ich habe mich falsch ausgedrückt.
weil ihr meint bestimmt so ?
PHP:
<?php
function raus($eins,$zwei){
  $ichwillraus='blabla';
return $ichwillraus;
}
?>
<html>
reiichlich gedön
<div><?php echo raus($eins,$zwei)?>
</div>
</html>

Aber $eins und $zwei sind da unten auch nicht definiert.

Was in der Funktion steht ist egal das weiß ich,da könnte komplett ebay drinne sein.
Aber Ebay kommt nicht raus.
Die Function läst sich von unten ja auf rufen aber der Fehler sagt das $eins und $zwei nicht definiert ist.
Nur weiter oben im ersten php bereich
 
Also dein Problem ist, dass du offensichtlich das Prinzip, wie das funktioniert, noch nicht ganz durchdrungen hast - da hilft nur lesen und ausprobieren!
PHP:
<?php
function raus($eins, $zwei){
$oh_menno = $eins." ist drin ";
$oh_menno .= " und ".$zwei." auch";
return $oh_menno;
}
?>
<html>
reiichlich gedön
<div><?php echo raus('eins', 'zwei'); ?>
</div>
</html>
 
Zurück
Oben