WinFuture-Forum.de: Gästebuch - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
  • 3 Seiten +
  • 1
  • 2
  • 3

Gästebuch

#16 Mitglied ist offline   Dyon 

  • Gruppe: aktive Mitglieder
  • Beiträge: 125
  • Beigetreten: 04. April 08
  • Reputation: 0

geschrieben 23. April 2008 - 13:45

also des mit dem dass es in [br] umgewandelt ist hab ich hingekriegt aber dass es dann beim anzeigen wieder umgewandelt wird will bei mir nicht so wirklich
Ich hab des nämlich dort zu den echo geschrieben, also da wo des ganze zeug denn ausgegeben wird.
0

Anzeige



#17 Mitglied ist offline   [Elite-|-Killer] 

  • Gruppe: aktive Mitglieder
  • Beiträge: 761
  • Beigetreten: 02. Oktober 05
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Passau

geschrieben 23. April 2008 - 15:00

Anstelle von ereg_replace() oder preg_replace() sollte die Funktion str_replace($search, $replace, $subject) zum Einsatz kommen, falls keine regulären Ausdrücke benötigt werden. In der Regel ist sie schneller und spart zudem das Escapen von den Sonderzeichen, in dem Fall "[" und "]".

Für das Beispiel wäre deshalb am passendsten:

$text = str_replace("\n", "[br]", $text);

zum einspeisen in die DB.


$text = str_replace("[br]", "<br />", $text);
echo $text;

zum ausgeben.
0

#18 Mitglied ist offline   Dyon 

  • Gruppe: aktive Mitglieder
  • Beiträge: 125
  • Beigetreten: 04. April 08
  • Reputation: 0

geschrieben 23. April 2008 - 15:14

ah verstanden;-)

ich musste nur bei
$text = str_replace("[br]", "<br />", $text);

durch
$teil[2] = str_replace("[br]", "<br />", $teil[2]);

in dem zuvor geposteten Gästebuchscript ändern^^
0

#19 Mitglied ist offline   Dyon 

  • Gruppe: aktive Mitglieder
  • Beiträge: 125
  • Beigetreten: 04. April 08
  • Reputation: 0

geschrieben 30. April 2008 - 21:50

So
da hab ich noch mal eine Frage zu dem Gästebuch.
Wie kann ich es erreichen dass bei der Ausgabe der Einträge die auf verschiedenen Seiten angezeigt werden. Zum Beispiel dass auf der Seite1 die zehn neusten stehn auf der seite2 die nächsten 10 und so weiter.

MFG
0

#20 Mitglied ist offline   [Elite-|-Killer] 

  • Gruppe: aktive Mitglieder
  • Beiträge: 761
  • Beigetreten: 02. Oktober 05
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Passau

geschrieben 30. April 2008 - 23:24

Poste bitte mal wie deine derzeitige Ausgabe abläuft und wie die Textdatei ausschaut in der es gespeichert ist.
Ansonsten würde sich für solche Sachen eigetnlich eine Datenbank anbieten, aber scheint mir nicht der Fall zu sein, wenn ich den Thread richtig überfligen habe.
0

#21 Mitglied ist offline   Dyon 

  • Gruppe: aktive Mitglieder
  • Beiträge: 125
  • Beigetreten: 04. April 08
  • Reputation: 0

geschrieben 01. Mai 2008 - 09:54

HI
also hier mal meine gaestebuch.php Datei
<?php

$action = $_GET['act'];
// Speichere die "act" in die Variable $action

/*
   Die Variable für die 3 Funktionen:
   show > Zeige alle Einträge (Startseite des GBs)
   comment > Einen Eintrag machen
   add > Eintrag hinzufügen
*/

  $filename = "gb.txt";
  // Die Datei mit den Eintraegen ...


if($action=="" | $action=="show") {
  // Wen $action gleich >nix< oder >show< dan zeige bzw mache dies:


  echo '<a id="normal" href="?act=comment">Einen Eintrag machen</a>';
    // Ein Link zum Eintragsformular "?" steht dafür eine Anfrage an die Datei selbst
        // kannst auch XXX.php?act=comment machen - es wird noch zusaetzlich die variable
        // "act" mit den Wert "comment übermittelt" damit das script weiss was es zu tun hat;)


  $myarray = file($filename);
  // Lade den gesamten Inhalt zeilenweise von $filename in ein array

  if(count($myarray)>10) {
   // zaehle die zeilen von myarray; wen anzahl der zeilen groeßer als 10 ist
   // setzte die variable $anzeigen auf 10
   // ist eine beschrenkung- oder willst du mit einmal 10000 einträge in
   // dein gb anzeigen lassen?
    $anzeigen = 10;
  } else {
   // wen die anzahl der zeilen kleiner als 10 ist dan zeige die an
    $anzeigen = count($myarray);
  }

   for ($i = 0; $i < count($myarray); $i++) {
    // i ist 0; i ist kleiner als 10; erhöhe i immer um eins

    $teil = explode("|" , $myarray[$i]);

    echo '<p id="newsboxheader">'.$teil[0].' schreibt:</p>';
    echo '<p id="newsboxmain"><a id="normal" href="mailto: '.$teil[1].'">' .$teil[1]. '</a></p>';
	$teil[2] = str_replace("[br]", "<br />", $teil[2]);
    echo '<p id="newsboxmain">'.$teil[2].'</p>';
    echo '<p id="newsboxbottom">Eingetragen am:'.$teil[3].'</p>';

  /* "Auf"klärung: ^^

  Jede Zeile im array wird einzeln bearbeitet, deswegen die for-schleife
  und jede zeile in der txt-datei sieht so aus: NAME|EMAIL|NACHRICHT
  mit der explode-Funktion teilen wir die zeilen ein - der trenner ist |
  so darf man sich das vorstellen:
  $teil[0] | $teil[1]   | $teil[2]  | $teil[3]
  NAME     | EMAIL      | NACHRICHT | ZEIT
  */

  }
}



if($action=="comment") {
// wen $action gleich "comment" ist dan mache dies:
?>
<p id="newsboxheader">Eintragen</p>
<form method="POST" action="?act=add">
<p id="newsboxmain">
Name:<br/> <input id="gb" type="text" name="name" /><br />
Email:<br/> <input id="gb" type="text" name="email" /><br />
Text:<br/> <textarea id="gb" cols="50" rows="6" name="text"></textarea><br /><br />
Bitte schreiben Sie "OK" in das Feld. (Es sind beides Großbuchstaben)
<br /> <input id="gb" type="text" value="" name="check" />
</p>
<p><input type="submit" name="Submit" value="Eintragen!"></p>
</form>
<!--<input type="submit" value="eintragen" />-->

</form>

<?
}


if($action=="add") {

  $name = $_POST['name'];
  $email = $_POST['email'];
  $text = $_POST['text'];
$text = str_replace("\n", "[br]", $text);

  if($name=="" | $email=="" | $text=="" | $_POST['check'] !== 'OK') {
  // wen $name, $email oder $text gleich nix sind dan zeige bzw. mache das:

  echo "Bitte alles ausfüllen!<br />";
  echo '<a id="normal" class="navi" href="java script:history.back()">Zurück</a>';

  } else {
  // amsonsten das:

  $zeit = date("d.m.Y - H:i");
  // Zeit bestimmen mit date() - tag.monat.jahr - stunde:minute

  $new_text = $name."|".$email."|".$text."|".$zeit."\n";
  // Fasse alle teile(name, email, ...) zu einer variable zusammen

  $new_text = htmlentities($new_text);

  $x = 0;
  $datei = fopen($filename, "r");
  while (!feof($datei)) {
  $x++;
  $saved[$x] = fgets($datei, 1024);
  }
  /* "Auf"klärung: ^^
  datei wird erstmal nur zum lesen geöffnet
  x ist 0 in der while-schleife wird x dan immer erhöht
  so wird jede zeile ausgelesen und im $saved[] gespeichert
  mit feof wird der datenzeiger ans ende der datei gesetzt und
  das "!" davor bedeutet, das er das was in der if-schleife steht
  nur machen soll wen der datenzeige ans ende der datei positioniert
  wurde - WOZU? - ganz einfach: die datei wird von "unten" ausgelesen
  so wird die zeile, die ganz unten steht, jetrzt ganz oben stehen
  damit alle neuen eintraege nicht ganz unten sonder ganz oben stehn!:unsure:
  */

  $datei=fopen($filename, "w");
  // oeffnet die datei im schreibmodus w
  fwrite($datei, $new_text);
  // Schreibt die neue Zeile in die datei

  for ($i=1;$i <= $x; $i++) {
  fwrite($datei, $saved[$i]);
  // haengt die alten eintraege einfach an
  // mithilfe der for-schleife
  }
  fclose($datei);
  //header("Location: ?act=show");
   echo "Ihr Eintrag wurde gespeichert!<hr>" ;
	   echo '<a id="normal" class="navi" href="java script:history.go(-2)">Zum Gästebuch</a>';
  }
}

?>


und hier die gb.txt

Dyon|[email protected]|und noch ein bisschen text|01.05.2008 - 10:51
Dyon|[email protected]|und noch ein bisschen text|01.05.2008 - 10:51


Danke für die hilfe

MFG
0

#22 Mitglied ist offline   Dyon 

  • Gruppe: aktive Mitglieder
  • Beiträge: 125
  • Beigetreten: 04. April 08
  • Reputation: 0

geschrieben 02. Mai 2008 - 16:01

Hat niemand grad eine Idee wie ich die Einträge automatisch auf mehrere Seiten verteilen kann?

MFG:-)
0

#23 Mitglied ist offline   K050V4 

  • Gruppe: aktive Mitglieder
  • Beiträge: 787
  • Beigetreten: 13. August 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Stuttgart
  • Interessen:(X)HTML<br />CSS2+<br />PHP 4/5<br />MySQL 5<br />Symfony 1.2+<br />JavaScript / AJAX<br />jQuery<br />C++<br />C#<br />Java<br />...

geschrieben 02. Mai 2008 - 19:03

Ich sag es nur ungern, aber du müsstest dir erstmal selber gedanken machen ;)
Vielleicht hilft dir meine Zeichnung xD

Du kannst dann gerne wieder mit einem Lösungsansatz kommen :D

Angehängte Miniaturbilder

  • Angehängtes Bild: 1.jpg

Zitat

"In der Welt des Erkennbaren ist die Idee des Guten die höchste." - Platon

Spritify! Easy CSS-Sprite-Generator | Albanisch Deutsch Wörterbuch
0

#24 Mitglied ist offline   Slasher2k 

  • Gruppe: aktive Mitglieder
  • Beiträge: 441
  • Beigetreten: 07. Januar 02
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Sachsen

geschrieben 02. Mai 2008 - 21:02

Ich kann K050V4 nur zustimmen. Ich versuchs mal mit einem Tip.

Wenn ich das richtig sehe könnte dir "array_reverse" helfen. Ich kann mich aber auch irren, da ich jetzt gerade keinen Bock habe das zu testen.
0

#25 Mitglied ist offline   Gitarremann 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.221
  • Beigetreten: 04. Juni 06
  • Reputation: 3
  • Geschlecht:Männlich
  • Wohnort:Trebnitz

geschrieben 02. Mai 2008 - 22:05

Meine GB-Anzeigeseite für die Feuerwehrseite sieht so aus.
Das Rücksortieren, Wandeln und Unicode kann man erstmal weglassen und alles was mit Listen zu tun hat.
Das sind nur Funktionen, die die Reihenfolge ändern und die angezeigten Mailadressen in unicode umschreiben und die Anzeige hab ich mal Testweise als Liste statt als Tabelle gemacht, aber da sind die Berechnungen drin, wie nur immer 10 Beiträge angezeigt werden und unten auch ne Seitenliste ist.
Vielleicht ein bißchen umständlich aber das ist schon älter.

<div class="startspalte"><ul>
<?php

	
	require_once("Funktionen/ruecksortieren.php");
	require_once("Funktionen/unicode.php");
	
	$daten = file("eintrag.txt");
	
	foreach ($daten as $num => $value)
	{
			$daten[$num] = explode("|", $value);
		}
		
usort($daten, ruecksortieren);

$anzahl = count($daten);

if (!$anfang = @$_GET['anfang']) {$anfang = 0;}
if ($anfang > 0){ $anfang = ($anfang - 1)*10;}
if (($anfang + 10) > $anzahl) {$ende = count($daten);} else {$ende = $anfang +10;}

for ($i = $anfang; $i < $ende; $i++)
	{ 	
	
$datum = 	date("d.m.Y - H:i:s",$daten[$i][0]);

if ($daten[$i][3] == NULL) { $name = $daten[$i][1]; } else {
	 	$emailf = NULL;
	 for ($a = 0; $a < strlen($daten[$i][3]); $a++)
		{
			$emailf = $emailf.wandeln(substr($daten[$i][3],$a,1));
		}
	$name = "<a href=\"mailto:$emailf\">".$daten[$i][1]."</a>";}

	
	 echo("<li><h4>am: ".$datum." schrieb: ".$name); 
	 		if ($daten[$i][2]) {echo(" aus: ".$daten[$i][2]);} echo("</h4>
	 		<ul><li>".ereg_replace("\[br\]", "<br />", $daten[$i][4])."<br /><br /></li>");
	 		
	 if ($daten[$i][5]) {
	 echo("	<li style=\"background-color:#DDD; font-style:italic;\">Kommentar:".$daten[$i][5]."</li>"); }
	 		
	 echo("</ul></li>");
	}
	
echo("</ul></div>");
if ($anzahl > 10) { $seiten = ceil($anzahl / 10); }	
for ($seit = 1; $seit <= $seiten; $seit++)
	{
		echo("<a href=\"hauptseite.php?stat=global&amp;seite=gbuch&amp;anfang=$seit\">$seit</a> | ");
	}

?>

Der Pessimist sagt: "Das Glas ist halb leer,"
Der Optimist sagt: "Das Glas ist halb voll."
Der Realist sagt: "Bedienung, zwei Neue!"
0

#26 Mitglied ist offline   Dyon 

  • Gruppe: aktive Mitglieder
  • Beiträge: 125
  • Beigetreten: 04. April 08
  • Reputation: 0

geschrieben 03. Mai 2008 - 15:29

Also ich hab jetzt des gästebuch, des ich vorher gepostet habe nochmal angeschaut also besonders der teil
if($action=="" | $action=="show") {
  // Wen $action gleich >nix< oder >show< dan zeige bzw mache dies:


  echo '<a id="normal" href="?act=comment">Einen Eintrag machen</a>';
	// Ein Link zum Eintragsformular "?" steht dafür eine Anfrage an die Datei selbst
		// kannst auch XXX.php?act=comment machen - es wird noch zusaetzlich die variable
		// "act" mit den Wert "comment übermittelt" damit das script weiss was es zu tun hat;)


  $myarray = file($filename);
  // Lade den gesamten Inhalt zeilenweise von $filename in ein array

  if(count($myarray)>10) {
   // zaehle die zeilen von myarray; wen anzahl der zeilen groeßer als 10 ist
   // setzte die variable $anzeigen auf 10
   // ist eine beschrenkung- oder willst du mit einmal 10000 einträge in
   // dein gb anzeigen lassen?
	$anzeigen = 10;
  } else {
   // wen die anzahl der zeilen kleiner als 10 ist dan zeige die an
	$anzeigen = count($myarray);
  }

   for ($i = 0; $i < count($myarray); $i++) {
	// i ist 0; i ist kleiner als 10; erhöhe i immer um eins

	$teil = explode("|" , $myarray[$i]);

	echo '<p id="newsboxheader">'.$teil[0].' schreibt:</p>';
	echo '<p id="newsboxmain"><a id="normal" href="mailto: '.$teil[1].'">' .$teil[1]. '</a></p>';
	$teil[2] = str_replace("[br]", "<br />", $teil[2]);
	echo '<p id="newsboxmain">'.$teil[2].'</p>';
	echo '<p id="newsboxbottom">Eingetragen am:'.$teil[3].'</p>';


Jetzt steht da $anzeigen = 10; und in der Aufklärung steht dass dies eine beschränkung sein soll, dass nicht mehr als 10 Einträge insgesamt angezeigt werden (oder hab ich des überhaupt richtig verstanden?).
Des hab ich denn mal ausprobiert aber es werden mehr als zehn einträge angezeigt?

MFG
und Danke^^

Dieser Beitrag wurde von Dyon bearbeitet: 03. Mai 2008 - 15:29

0

#27 Mitglied ist offline   K050V4 

  • Gruppe: aktive Mitglieder
  • Beiträge: 787
  • Beigetreten: 13. August 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Stuttgart
  • Interessen:(X)HTML<br />CSS2+<br />PHP 4/5<br />MySQL 5<br />Symfony 1.2+<br />JavaScript / AJAX<br />jQuery<br />C++<br />C#<br />Java<br />...

geschrieben 03. Mai 2008 - 20:22

;D

Die ersten 10 Einträge auslesen:
$VON = 0;
$BIS = 10;

for ($i = $VON; $i < $BIS+1; $i++) {
  //Ausgeben
}


Die nächsten 10 Einträge:
$VON = 10;
$BIS = 20;

for ($i = $VON; $i < $BIS+1; $i++) {
  //Ausgeben
}


und so weiter...
verstanden?

Zitat

"In der Welt des Erkennbaren ist die Idee des Guten die höchste." - Platon

Spritify! Easy CSS-Sprite-Generator | Albanisch Deutsch Wörterbuch
0

#28 Mitglied ist offline   Gitarremann 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.221
  • Beigetreten: 04. Juni 06
  • Reputation: 3
  • Geschlecht:Männlich
  • Wohnort:Trebnitz

geschrieben 03. Mai 2008 - 21:08

Beitrag anzeigenZitat (K050V4: 03.05.2008, 21:22)

;D

Die ersten 10 Einträge auslesen:
$VON = 0;
$BIS = 10;

for ($i = $VON; $i < $BIS+1; $i++) {
  //Ausgeben
}


Die nächsten 10 Einträge:
$VON = 10;
$BIS = 20;

for ($i = $VON; $i < $BIS+1; $i++) {
  //Ausgeben
}


und so weiter...
verstanden?


Das wäre Murks. Da dürfen doch keine absoluten Zahlen in die Schleife, sonst muß das doch an die Beitragszahlen jedes Mal angepasst werden. Das muß sich anhand der Beitragszahl automatisch berechnen und auch der Link zum weiterblättern muß automatisch generiert werden, sonst frickelt man doch laufend am Script rum, wenn wieder 10 Beiträge mehr sind. (wäre meine Meinung dazu. Das ist doch das, was eine dynamische Seite ausmacht.)
Der Pessimist sagt: "Das Glas ist halb leer,"
Der Optimist sagt: "Das Glas ist halb voll."
Der Realist sagt: "Bedienung, zwei Neue!"
0

#29 Mitglied ist offline   Dyon 

  • Gruppe: aktive Mitglieder
  • Beiträge: 125
  • Beigetreten: 04. April 08
  • Reputation: 0

geschrieben 04. Mai 2008 - 16:16

Also ich habe mal überlegt^^
Ich muss ja die Daten zeilenweise von der *.txt Datei einlesen
$myarray = file($filename);

Dann muss ich ja die ganzen Zeilen zählen
$zahl=count($myarray);

dann brauch ich ja eine Variable für die Seitenzahl, da werden alle Einträge gezählt und dann durch die Anzahl der Einträge (bei mir 10) geteilt
$seiten=ceil($zahl/10);

dann noch eine startanweisung
if (isset($_GET['start'])) $start=$_GET['start'];
else $start="0";

Ich weiß nur noch nicht so recht wie ich den Hauptteil jetzt angehen soll:-(
0

#30 Mitglied ist offline   Gitarremann 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.221
  • Beigetreten: 04. Juni 06
  • Reputation: 3
  • Geschlecht:Männlich
  • Wohnort:Trebnitz

geschrieben 04. Mai 2008 - 16:26

Beitrag anzeigenZitat (Dyon: 04.05.2008, 17:16)

Also ich habe mal überlegt^^
Ich muss ja die Daten zeilenweise von der *.txt Datei einlesen
$myarray = file($filename);

Dann muss ich ja die ganzen Zeilen zählen
$zahl=count($myarray);

dann brauch ich ja eine Variable für die Seitenzahl, da werden alle Einträge gezählt und dann durch die Anzahl der Einträge (bei mir 10) geteilt
$seiten=ceil($zahl/10);

dann noch eine startanweisung
if (isset($_GET['start'])) $start=$_GET['start'];
else $start="0";

Ich weiß nur noch nicht so recht wie ich den Hauptteil jetzt angehen soll:-(


Also in meinem Beitrag #25 ist doch eigentlich alles drin. Mehr steht auf meiner Seite auch nicht
Der Pessimist sagt: "Das Glas ist halb leer,"
Der Optimist sagt: "Das Glas ist halb voll."
Der Realist sagt: "Bedienung, zwei Neue!"
0

Thema verteilen:


  • 3 Seiten +
  • 1
  • 2
  • 3

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0