PHP-Gästebuch ohne MySQL aber mit \"x Einträge pro Seite\"

Begonnen von puchne, 21. Oktober 2005, 18:09:40

Vorheriges Thema - Nächstes Thema

puchne

hm, mir ist gerade doch ein Fehler aufgefallen, die aktuelle Seite betreffend.
Wie kann man denn errechnen auf welcher Seite man sich befindet?
(aus $eintragsnummer, $anfangsbeitrag und $endbeitrag)
http://www.licht-malerei.de\" rel=\"external nofollow\">»private Foto-Webseite



Ganz einfach, du übergibst dir immer, auf welcher Seite du bist /uploads/emoticons/icon_e_smile.gif.f7ec63a2b1c3d90a9415e40455642502.gif\" alt=\":-)\" />
 
kOOni

puchne

hab die Seitenermittlung doch noch mit einer Rechenoperation hinbekommen:

 

($seitenzahl=Anzahl aller Einträge / 5, aufgerundet)
So wie es aktuell läuft scheint es solide /uploads/emoticons/icon_e_smile.gif.f7ec63a2b1c3d90a9415e40455642502.gif\" alt=\":-)\" /> -
bin bisher jeweils auf noch keinen Fehler gestoßen *freu*.
Hier die aktuelle Version:
http://www.digitales-lichtbild.de/gaestebuchx/ausgabe.php\" rel=\"external nofollow\">.../ausgabe.php
http://www.licht-malerei.de\" rel=\"external nofollow\">»private Foto-Webseite



Sieht schon gut aus :H:
Das würde ich am Quelltext ändern:
 



 
Für deinen letzten Post.
Und das, für deinen vor-vorhergehenden Post:
 


=$ende;$anfang--)
{    
$ausgabe=\"name: \";
$ausgabe.=$eintrag[$anfang][\'name\'];
$ausgabe.=\"\";
$ausgabe.=\"email: \";
$ausgabe.=$eintrag[$anfang][\'email\'];
$ausgabe.=\"\";
$ausgabe.=\"nachricht: \";
$ausgabe.=$eintrag[$anfang][\'nachricht\'];
$ausgabe.=\"\";
$ausgabe.=\"\";
print($ausgabe);
}
$seite=1;
$anfang=$nr-1;
$ende=$anfang-4;
print(\"1 \");
 
// Seitenschleife
for($y=1, $x=3; $y\". $seiten .\"\"];
}
}
else                
{     // Wenn GET=Wert/String -> ab Seite 2 des GBs
$anfang=$_GET[anfang];
$ende=$_GET[ende];
for($anfang=$_GET[anfang]; $anfang>=$ende; $anfang--) {  // Ausgabeschleife
$ausgabe=\"name: \";
$ausgabe.=$eintrag[$anfang][\'name\'];
$ausgabe.=\"\";
$ausgabe.=\"email: \";
$ausgabe.=$eintrag[$anfang][\'email\'];
$ausgabe.=\"\";
$ausgabe.=\"nachricht: \";
$ausgabe.=$eintrag[$anfang][\'nachricht\'];
$ausgabe.=\"\";
$ausgabe.=\"\";
print($ausgabe);
}
$anfang=$nr-1;
$ende=$anfang-4;
for ($b=1;$b\");
print($b);
print(\"\");
print(\"] \");                                                                              
$anfang=$anfang-5;
 
$ende=$anfang-4;
}
}
?>

 
Noch ein paar Dinge:
- Nimm nicht soviele Variablen, du kannst vieles auch sinnvoll zusammenfassen
- Vermeide solche if-Anweisungen: if ($ende<=0) [...] (\"Böse If\'s\")
- vergiss keine Methoden einzubauen, mit denen du die Variablen überprüfst, die du übergeben bekommst!
Sieht schon gut aus. Vielleicht könntest du dies nun noch um eine schönes Aussehen und einen kompakteren Code erweitern? Dann ist es fertig, das Gästebuch /uploads/emoticons/icon_e_smile.gif.4a0acefcb917340d2c82e5239c009e6e.gif\" alt=\":)\" />
 
kOOni
ps.: Und bitte formatiere deinen Quellcode ein bisschen, es ist nämlich ein Kraus den zu bearbeiten /uploads/emoticons/icon_e_wink.gif.3167d127940f44558fbf1ccd9b6d60a9.gif\" alt=\";-)\" />

puchne

- Vermeide solche if-Anweisungen: if ($ende<=0) [...] (\"Böse If\'s\")[/quote] hmm, was meinst du mit \"böse if\'s\"?
(Brauch die immer für die letzte Seite, damit nicht negative (nicht existierende) Arrays in die Einträge-Schleife kommen).
- vergiss keine Methoden einzubauen, mit denen du die Variablen überprüfst, die du übergeben bekommst![/quote] Naja, ich hab ein wenig ausprobiert, was passiert wenn ich manuell in die URL, anfangs- und end-angaben, ändere/manipuliere und eigentlich traten keine größeren Fehler auf - also scheint das script dagegen relativ ressistent zu sein (einzige Bedingung: anfangsangabe muss größer sein als endangabe).
Also warum sind solche Überprüfungen wichtig (generell)?
Vielleicht könntest du dies nun noch um eine schönes Aussehen und einen kompakteren Code erweitern?[/quote] Werd mich mal dranmachen, die ganzen Kleinigkeiten einzubauen (Überprüfung ob name eingegeben, ob e-mail richtig gesetzt usw.) und dann das design dranzuhängen /uploads/emoticons/icon_e_smile.gif.f7ec63a2b1c3d90a9415e40455642502.gif\" alt=\":-)\" /> - hoffe das wird leichter von der Hand gehen /uploads/emoticons/icon_e_wink.gif.3167d127940f44558fbf1ccd9b6d60a9.gif\" alt=\";-)\" />
 - Editiert von puchne am 26.10.2005, 22:09 -
http://www.licht-malerei.de\" rel=\"external nofollow\">»private Foto-Webseite



hmm, was meinst du mit \"böse if\'s\"?[/quote] Das sind IF-Anweisungen, die dir das Testen zur Höhle machen. Und zwar sind das die, die du setzt, um bestimmten Variablen an bestimmten Stellen einen Wert zuzuweisen, wenn du *annimmst*, dass sie beispielsweise keinen richtigen Wert haben. Es ist etwas schwer zu formulieren.
Bsp.:
Du hast eine Funktion, welche dir einen string als Wert zurückgibt. Dann nimmst du eine IF-Anweisung nach dem Funktionsaufruf, der dir dieses zurückgegebenen Wert immer in einen String umwandelt. Was ist nun, wenn deine Funktion auf einmal einen int oder bool Wert zurückliefert. An anderer Stelle arbeitest du dann mit diesem Wert und denkst dir nun bspw., dass es ein bool-Wert ist und wohla, dein Skript schmiert dir ab, weil es string nicht in bool wandeln kann. Dies macht sich besonders schön, wenn du es in verschachtelten Schleifen mit langen If-ElseIf-Else-Bäumen einbaust.
Also warum sind solche Überprüfungen wichtig (generell)?[/quote] Also bei dir wird sich diese Überprüfung in grenzen halten, aber wenn du eine Datenbankanbindung mit drin hast, dann wird es richtig geil mit dem Prüfen. Das Problem ist bei übergebenen Variablen, dass dadurch oft Fehler von PHP selber ausgenutzt werden können. Zudem meine ich gehört zu haben, dass man dadurch auch das Skript manipulieren kann. Aber da du nur 2 Parameter hast und diese auch nur begrenzt einsetzt, dürfte das kein Problem sein.
Nochmal zum Thema MySQL. Nur mal ein paar Begriffe: SQL-Injection, eingeschleuster HTML- und PHP-Code,...
Werd mich mal dranmachen, die ganzen Kleinigkeiten einzubauen (Überprüfung ob name eingegeben, ob e-mail richtig gesetzt usw.) und dann das design dranzuhängen[/quote] Bin mal auf das Ergebnis gespannt, hast dir bis jetzt schon eine gute Basis geschaffen :H: Kleiner Tip: PHP-Code für sich, HTML für sich und CSS für sich.
 
kOOni

puchne

Kleiner Tip: PHP-Code für sich, HTML für sich und CSS für sich. [/quote] Naja, also HTML und CSS ist bei mir schon getrennt, aber wie soll ich PHP und HTML trennen?
Also die Ausgabe muss doch den kompletten HTML-Text der Seite enthalten ...?
P.S.: Bin noch auf der Suche nach einer Funktion die mir die übergebenen Werte auf Zahlenwerte überprüft,
also meine Sicherung überprüft zur Zeit nur ob übergebener Wert=String, wobei der übergebene Wert ja eigentlich nur eine Zahl sein soll, keine Buchstaben oder sonstige Zeichen...
Statt Überprüfung: xy=string, sowas: xy=reele Zahl ...
 - Editiert von puchne am 26.10.2005, 23:45 -
http://www.licht-malerei.de\" rel=\"external nofollow\">»private Foto-Webseite



aber wie soll ich PHP und HTML trennen?[/quote] In dem du eine sogenannte Template-Engine benutzt. Aber vielleicht ist das in deinem Fall etwas übertrieben. Wenn du möchtest, dann kannst du dich mal mit \"patTemplate\" oder \"Smarty\" befassen. Aber das sind umfangreiche Template-Engines, die du vielleicht erst mal testen solltest, wenn das Ding an sich fertig ist. /uploads/emoticons/icon_e_wink.gif.3167d127940f44558fbf1ccd9b6d60a9.gif\" alt=\";-)\" />
Anbei, wir suchen noch Mitarbeiter hier auf powie.de. Wenn du Lust hast, dann schau mal http://www.powie.de/pforum/showthread.php?id=20564\" rel=\"external nofollow\">hier vorbei. Vielleicht als Coder ?
 
kOOni

puchne

Aber das sind umfangreiche Template-Engines, die du vielleicht erst mal testen solltest, wenn das Ding an sich fertig ist[/quote] Bin ja überhaupt mal froh wenn das richtig läuft /uploads/emoticons/icon_e_wink.gif.3167d127940f44558fbf1ccd9b6d60a9.gif\" alt=\";-)\" />
Anbei, wir suchen noch Mitarbeiter hier auf powie.de. Wenn du Lust hast, dann schau mal hier vorbei. Vielleicht als Coder ? [/quote] Als Coder ist gut /uploads/emoticons/icon_e_wink.gif.3167d127940f44558fbf1ccd9b6d60a9.gif\" alt=\";-)\" /> - bin ja froh das ich mein html w3c-konform hinbekommen habe, aber ansonsten ist mit mir da glaub ich nicht viel anzufangen. PHP find ich bisher zwar recht spannend, aber wie gesagt, wenn dieses blöde Gästebuch überhaupt mal läuft, bin ich schon zufrieden /uploads/emoticons/icon_e_wink.gif.3167d127940f44558fbf1ccd9b6d60a9.gif\" alt=\";-)\" /> - da will ich gar nicht dran denken wie man solche GB\'s und Foren wie auf powie.de realisieren kann /uploads/emoticons/icon_e_wink.gif.3167d127940f44558fbf1ccd9b6d60a9.gif\" alt=\";-)\" />
P.S.: Versuch gerade doch das PHP ins html einzubauen (bzw. umgekehrt);
ist es möglich/zuläsig mehrere PHP Bereiche in einer html-Datei unterzubringen?
also ... .... ...
http://www.licht-malerei.de\" rel=\"external nofollow\">»private Foto-Webseite



Versuch gerade doch das PHP ins html einzubauen (bzw. umgekehrt);ist es möglich/zuläsig mehrere PHP Bereiche in einer html-Datei unterzubringen?
also ... .... ...
[/quote] Testen /uploads/emoticons/icon_e_wink.gif.3167d127940f44558fbf1ccd9b6d60a9.gif\" alt=\";-)\" /> Aber zu deiner Frage: Ja, es ist möglich. Aber die Datei muss als PHP-Datei abgespeichert sein. Wenn du sie als HTML-Datei abspeicherst, dann zeigt er dir den ganzen PHP-Code an /uploads/emoticons/icon_e_smile.gif.4a0acefcb917340d2c82e5239c009e6e.gif\" alt=\":)\" />
 


 
 
 

 
Aber dann als PHP-Datei speichern.
 
kOOni

puchne

So, wollt mich nochmal melden, da das Gästebuch soweit fertig ist und ich es ohne die Hilfe dieses Forums wohl kaum soweit gebracht hätte /uploads/emoticons/icon_e_wink.gif.3167d127940f44558fbf1ccd9b6d60a9.gif\" alt=\";-)\" />.
Vorallem nochmal ein Dank an k00ni!
Hab das Gästebuch sogar in modifizierter Form frei für jeden zur Verfügung gestellt:
http://www.digitales-lichtbild.de/gaestebuch/php-gaestebuch.html\" rel=\"external nofollow\">Gästebuch Script v1.1
MfG puchne
http://www.licht-malerei.de\" rel=\"external nofollow\">»private Foto-Webseite



:H: Schön geworden.
Hast dich wirklich ins Zeug gelegt. Hier werden sie gern geholfen /uploads/emoticons/icon_e_smile.gif.f7ec63a2b1c3d90a9415e40455642502.gif\" alt=\":-)\" />
 
kOOni

raiser

nochmal, e86...    die endung der datei ist vollkommen egal, solange man sie included.....
wenn man eine seite aufruft die da heist lmaa.php und diese eine datei \"sonunrecht.xyz\" required/included
spielt es keine rolle, auf was sie endet....
man könnte sogar eine .jpg inkludieren, solange der inhalt dieser datei
beinhaltet.....
so wuerde durch das einbringen dieser datei, -->  hallo world  <-- ausgegeben
(unix).... einfach mal gucken
gruß raiserle

Wissen ist das einzige Gut, dass sich vermehrt, wenn man es teilt! (Marie von Ebner-Eschenbach)




Irren ist menschlich!




Wer andern eine Grube gräbt,


sollte darüber nachdenken,


ob sie tief genug ist!!!!




Kameradschaft ist, wenn der


Kamerad schafft !!!!


d-day

Jungs,
ich kann nur immer wieder das allseits beliebte PEAR erwähnen!
hierzu insb: http://pear.php.net/package/Pager\" rel=\"external nofollow\">http://pear.php.net/package/Pager
ist einfach zu verwenden und erledigt alles, rund ums \"pagen\".
So hab ich es im letzten Projekt verwendet:


require_once \'Pager/Pager.php\';
$params = array(
   \'itemData\' => $arr_trans,   // array mit dem kompletten Ergebnis aus Select!!!
   \'perPage\' => 20,
   \'delta\' => 7,             // for \'Jumping\'-style a lower number is better
   \'append\' => true,
   //\'separator\' => \' | \',
   \'clearIfVoid\' => false,
   \'urlVar\' => \'entrant\',
   \'useSessions\' => true,
   \'closeSession\' => true,
   \'mode\'  => \'Sliding\',    //try switching modes
   //\'mode\'  => \'Jumping\',
   altFirst => \'erste Seite\',
   altPrev => \'vorherige Seite\',
   altNext => \'nächste Seite\',
   altLast => \'letzte Seite\',
   altPage => \'Seite\',
   spacesBeforeSeparator => 1,
   spacesAfterSeparator => 1,
   prevImg => \' \'>\'
);
$pager = & Pager::factory($params);
$page_data = $pager->getPageData();
$links = $pager->getLinks();
 
echo $links[\'all\'];    // Das hier gibt die Links aus!

 
im array $page_data sind dann alle Ergebniszeilen für die jeweils aktuelle Seite drin, also nur noch mit
foreach ($page_data_a as $value)  {
....
}
drüber loopen und ausgeben!
mit dem Parameter httpMethod [string] kann man dann auch noch festlegen, ob GET oder POST verwendet werden soll.
ist doch sauber, oder? Hoffe, ich konnte helfen.
Gruß,
D-Day
 
NACHTRAG:
um es nochmal klar zu machen: dem Pager wird das komplette Ergebnis (also Daten für ALLE Seiten) in \'itemData\' übergeben, den Rest erledigt komplett die Pager-Klasse und man braucht sich um nichts mehr zu kümmern!
 - Editiert von D-Day am 04.11.2005, 10:24 -
 - Editiert von D-Day am 04.11.2005, 10:28 -
http://www.couro.de\" rel=\"external nofollow\">Couro do Brasil

all your base are belong to us / Discord