Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen
Thema geschlossen (topic locked)

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Ja, wie gesagt, war jetzt mal schnell angefertigt "das" ;) Bin grade auch noch am optimieren und editieren...

Habe jetzt noch hinzugefügt, was man machen muss, wenn man die Dateinamen ändern will..

Also für das erste Script dann gar nichts (wie es auch dasteht) und für die Nachfolgenden Scripte dann eben ne "Anweisung" mit Zeilenangabe

« Letzte Änderung: 18.05.05, 17:54:15 von Der olle Schwoebel »

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Wow, da ist man mal einen Tag nicht da und siehe da: Ein FAQ-Beitrag wurde geboren. Ich kann dem eigentlich nicht viel hinzufügen.

Das einzige, was mir noch einfiel, wird wohl den Rahmen dann doch etwas sprengen: Es wäre doch ein nettes "Feature", wenn man sich das Design, Anordnung der Einträge etc selbst bauen könnte. So in der Art, wie ich dass auf meiner Seite dann gemacht habe, nur dass es hier eben per Hand geschehen ist.
Blöderweise kenne ich mich in Wahrheit mit PHP eigentlich gar nicht aus ( ;D ), ich kann programmieren, aber die volle Syntax (geschweige denn von gängigen Techniken) blieb mir noch verschlossen. Ich hörte da aber mal was von Templates, wobei sich (obwohl ich Euch das sicher nicht erklären muss) jemand eine Design-HTML-Datei bastelt, die Verweise auf Variablen aus einem seperatem Script beinhaltet.

Aber während ich das hier schrieb, fiel mir auf, dass der Aufwand wohl doch etwas unangemessen ist. Vielleicht belassen wir's beim jetzigen Stand.

PS: Wollen wir noch ein News-System basteln? Ich bräuchte noch eins für meine Seite  ;D  ;D

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Ich habe mal noch n kleines Script gebastelt, dass einen bestimten Eintrag löscht. Das sollte natürlich in einem passwortgeschützten Verzeichniss liegen o.ä.

gbdel.php

<?php
    $eintraege 
= @file("../content.gb");
    
$max count($eintraege);
    
$openfile fopen("../content.gb","w");
    for( 
$a=0$a<$max$a++)
    {
      if(
$a != $id)
      {
        
flock($openfile,2);
        
fwrite($openfile,$eintraege[$a]);
        
flock($openfile,3);
      }
    }
    
fclose($openfile);
?>

Und hier der Aufruf aus dem Überverzeichnis:
echo("<a href='./admin/gbdel.php?id=".$a."' target='_self'>X</a>");an geeigneter Stelle in der Schleife, die die Einträge anzeigt.

Gruß Spawn

PS: Sorry, dass ich hier ständig die echo()-Befehle wieder reinbringe, wie gesagt: PHP-Newbie  ;D
PS: Sorry, dass ich hier ständig die echo()-Befehle wieder reinbringe, wie gesagt: PHP-Newbie  ;D

hi..

hat ja keiner was gegen echo gesagt. ich hatte nur erwähnt das bei größeren HTML-ausgaben (wie das eben bei dem Gästebuch z.b. der fall war für die Eingabe-Maske schließ ich persönlich den PHP teil kurz und öffne ihn dann erst wieder wenn ich ihn brauche. das find ich persönlich übersichtlicher, aber jedem das seine.

So um nochmal auf mein Problem mit den Zeilenumbrüchen zurückzukommen (jaja ich weiß was ihr denkt: "der olli newbiw soll doch endlich den rand halten").
Also wie gesagt mit dem gigantischen Gästebuch da will ich mich erst heranwagen wenn ich php mal halbwegs durchschaut habe. Ich habe ja auch ein soweit intaktes Gästebuch. Nur wenn ich in dem Text einen Zeilenumbruch mache (sprich "ENTER") drücke, dann gibt es einen Fehler. In meinem Gästebuch wird dann eben für diesen Zeilenumbruch eine neue Spalte angefangen und alles geht drunter und drüber!

Hier nochmal die drei Scripte:

auslesen.php:
<?php
  echo"<html><head><title>Start</title></head><body>";
  echo"<table border=1 width='100%' height='30'>";
  echo"<tr><th height='25' width='15%'>Name</th>";
  echo"<th height='30' width='15%'>eMail</th><th height='30'>Text</th></tr>";
  $handle = fopen("tabelle.txt","r");
  while (!feof($handle)) {
    $name = fgets($handle, 4096);
    $email = fgets($handle, 4096);
    $text = fgets($handle, 4096);
    echo"<tr><td width='15%'>$name </td><td width='15%'>$email </td><td>$text</td></tr>";
  }
  fclose($handle);
  echo"</table>";
  echo"</body>";
  echo"</html>";
?>


Das Formular:

<?php
echo"<html><head><title>Start</title></head><body>";
echo"<form method='GET' action='eintragen.php'>";
echo"<p>&nbsp;</p>";
echo"<p>&nbsp;</p>";
echo"<p><font color='#FFFFFF' style='font-size: 16pt'>Name:</font></p>";
echo"<p><font color='#FFFFFF'>";
   echo"<input type='input' name='namen' value=''></font></p>";
   echo"<p><font color='#FFFFFF' style='font-size: 16pt'>email: </font></p>";
echo"<p><font color='#FFFFFF'>";
   echo"<input type='input' name='mail' value=''>";
   echo"&nbsp;</font></p>";
   echo"<p align='left'>";
   echo"<font color='#FFFFFF'><span style='font-size: 16pt'>Ihr Text:</span></font></p>";
   echo"<p align='left'>";
         echo"<textarea name='text' rows='12' cols='107'>";
         echo"</textarea><br><br>";
echo"</p>";
      echo"<tr><td>&nbsp;</td><td><input type='submit' value='Abschicken'></td></tr>";
echo"</body>";
echo"</html>";
?>


eintragen.php:

<?
  $auslesen=fopen("tabelle.txt","a");
  fwrite($auslesen,$namen."\n");
  fwrite($auslesen,$mail."\n");
  fwrite($auslesen,$text."\n");
  fclose($auslesen);
?>

Und sorry aber als ich den Thread eröffnet habe war das erst mal so für mein Verständnis geplant, dass sich da jetzt so was großes (und auch ziemlich geiles) daraus entwickelt hat finde ich zwar cool, nur kann ich da halt nicht mehr mitreden!

Gruß Syrus

Achso nochmal was unabhängig von meinem vorigen Post:
Ich würde schauen, dass zumindest ein Name und ein Text eingegeben werden müssen, dass ein neuer Post erstellt wird!!!

Gruß Syrus

PS: Sorry wegen Doppelpost

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Das Problem ist, dass bei diesem "Prototypen" die Trennung der Kategorien per "\n" also Zeilenumbruch gemacht wird. Das heisst, wenn Du einen Umbruch im Text hast gibt's Probleme. Das kannst Du umgehen, indem Du, bevor Du den Text in die Datei speicherst alle Umbrüche in eine Zeichenfolge verwandelst, die den Umbruch repräsentiert (beispielsweise im "großen" GB durch "<!umbruch!>" realisert).

Der Befehl zum Ersetzen eines Strings mit einem anderen String lautet:

$neu = str_replace($einfuegen,$ersetzen,$alt);wobei $einfuegen für die einzufügende, $ersetzen für die zu ersetzende Zeichenfolge steht.
Nun musst Du natürlich, nachdem Du alles wieder ausgelesen hast, die entsprechenden Repräsentanten wieder durch den Umbruch ersetzen. Dazu analog wieder den str_replace-Befehl benutzen.

Gruß Spawn

PS: Nein, wir (zumindest ich) wollen nicht, dass Du die Klappe hälst. Im Eifer des Gefechts ist Dein Problem nur etwas verloren gegangen  :D
« Letzte Änderung: 19.05.05, 23:20:58 von Spawn »

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hi alle miteinannder, ich habe mich mal an eine kleinere Grafikversion des Gästebuchs gewaagt, schaut finde ich, schon relativ gut aus :

Das ganze kommt in den "<!-- EINTRÄGE ANZEIGEN --!>" Teil :

<span style="font-family: arial;">
<table class="GBtable" cellpadding="2" cellspacing="2" border="0"
 style="text-align: left; height: 46px; width: 50%; background-color: rgb(0, 0, 153);">
  <tbody>
    <tr class="GBhead">
      <td
 style="vertical-align: top; width: 55%; background-color: rgb(0, 0, 153); font-family: comic sans ms; color: rgb(255, 204, 51);"><small><?=$Eintrag[5];?></small></td>
      <td colspan="4"
 style="vertical-align: top; background-color: rgb(0, 0, 153);">
      <table cellpadding="2" cellspacing="2" border="0"
 style="text-align: left; width: 100%; background-color: rgb(0, 0, 153);">
        <tbody>
          <tr>
            <td style="vertical-align: top; width: 70%;"><br><br><br><br><br><small><span style="color: rgb(255, 204, 51); font-family: verdana;"><?=$Eintrag[4];?></span></small><br
 style="color: rgb(255, 204, 51);">
            <span style="color: rgb(255, 204, 51); font-weight: bold; font-family: verdana;"><?=$Eintrag[1];?></span><br
 style="color: rgb(255, 204, 51);">
            <br style="color: rgb(255, 204, 51);">
            <small><span style="color: rgb(255, 204, 51);"><a class="GBlink" href="mailto:<?=$Eintrag[3]?>"><span style="font-family: arial;;"><?=$Eintrag[3]?></a></span></small><br
 style="color: rgb(255, 204, 51);">
            <small><span style="color: rgb(255, 204, 51);"><a class="GBlink" href="<?=$Eintrag[2];?>" target="_blank"><span style="font-family: arial;"><?=$Eintrag[2];?></a></span></small><br>
            </td>
            <td style="vertical-align: top;" rowspan="1" colspan="1"><span
 style="font-family: arial;">
            <div style="text-align: right;"><img src="briefmarke02.jpg"
 title="" alt="" style="width: 100px; height: 115px;"><br>
            </div>
            </span></td>
          </tr>
          <tr>
          </tr>
        </tbody>
      </table>
      </td>
    </tr>
  </tbody>
</table>

Für "briefmarke02.jpg" kann man jetzt eine beliebige Briefmarke einsetzen, ich habe einfach mal eine erstellt.. Das ganze kann man mal ausprobieren oder anguggen :
http://schwoebelbank02.sc.funpic.de/gbbook/

Das ganze sollte irgendwie wie ne Postkarte aussehen, mit nem Vorbild von "gbserver.de" :
http://gaestebuch.gbserver.de/schwoebel,1.html

Es gibt natürlich noch ein paar KLEINE Abänderung, wie die Hintergrundfarbe und ab und zu, wo der Firefox die Schriftart oder Farbe nicht richtig anzeigt hat, eine eindeutige Definition mit <span style="color: rgb(...);">, aber sonst ist es das Original bzw. mit dem oberen Code ;)
« Letzte Änderung: 24.05.05, 17:33:36 von Der olle Schwoebel »

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Schick schick. Wollte allerdings gerade mal was eintragen und da ist nix passiert, ausser dass meine Überschrift Deinem Eintrag angefügt wurde...?

Mir ist gerade noch eine Sache aufgefallen, die wohl alle GBs auf "unserer" Basis betreffen müsste: Wenn ich ein Gänsefüßchen (") eingebe, wird das als \" gespeichert und ausgegeben. Ich dachte erst, dass betrifft Sonderzeichen im Allgemeinen und habe mal mit ! § $ & etc getestet, hier tritt das Problem allerdings nicht auf.

Jemand eine Idee?

Gruß Spawn

mmhh...vielleicht sollten wir vorher (falls das nicht automatisch passiert) mit addslashes() die phpzeichen wie ' " \ und so schützen und bei der ausgabe mit stripslashes wieder entfernen...sollte jedenfalls funktionieren

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hi |

Stripslashes bei der Ausgabe sollte reichen, da die schützenden Slashes ja schon mit gespeichert werden.

Es war auch noch ein kleiner Bug drin im Skript: wenn noch keine Textdatei angelegt war (und damit die Variable $eintraege nicht initialisiert wurde), wurde $max auf 1 gesetzt und dummerweise "1 Einträge" angezeigt. Is gefixt ;)

So, was wäre dieser Thread ohne Unmengen an Quellcode, also:

<?
#######################################################################
##  Dieses Gästebuch wurde in einer Geminschaftsarbeit mehrerer      ##
##  Mitglieder von computerhilfen.de entwickelt. Es soll all jenen,  ##
##  die sich immer wieder fragen: "Gästebuch? Wie geht das?" zeigen, ##
##  wie man ein einfaches Gästebuch erstellt.                        ##
##  Es ist auch nicht das ultimative Gästebuch, sondern nur ein Wink ##
##  in die richtige Richtung. Im Detail waren daran beteiligt:      ##
##                                                                  ##
##  Erster Entwurf und Grundfunktionen        : Jan190480            ##
##  Optimierung des Lese- und Schreibzugriffs : JoSsiF, Mario        ##
##  Verteilung der Einträge auf mehrere Sieten: Spawn                ##
##  Stylesheet-Implementierung                : Der olle Schwoebel  ##
##                                                                  ##
##  Viel Spaß mit dem Gästebuch. Fragen können gerne                ##
##  direkt an die einzelnen Mitlieder gerichtet werden              ##
##  oder im Forum gepostet werden.                                  ##
##                                                                  ##
##  2005 | computerhilfen.de                                        ##
##                                                                  ##
#######################################################################



##  Der PHP-Teil. Ohne PHP (oder einer anderen serverseitigen        ##
##  Programmiersprache (wie z.B. Perl)) wird man kein Gästebuch zum  ##
##  Laufen bekommen.                                                ##



### Konfiguration (auch wenn's hier noch nicht ganz so viel zu konfigurieren gibt *g*) #########################

$ppp = 5; // Anzahl der Beiträge, die pro Seite ausgegeben werden sollen
$textfile = "myGB.txt"; // Name der Textdatei, in der die Einträge gespeichert werden

### Ende Konfiguration #########################################################################################


/*
$page initialisieren (der Wert entspricht der aktuellen Seite der Gästebucheinträge)
Beim ersten Aufruf (keine Seite gewählt) wird diese auf 1 gesetzt

Die Variable wird immer aus dem superglobalen Array $_REQUEST[] herausgezogen,
um auch auf solchen Servern einen Wert zu erhalten, auf denen die PHP-Variable
'register_gobals' auf 'Off' gesetzt ist
*/
if (!$_REQUEST['page'])
{
  $page = 1;
}
else
{
  $page = $_REQUEST['page'];
}

// Script wird nur ausgeführt wenn der Benutzer auf "Eintragen" gedrückt hat
if ($_POST['submit'])
{
  //Alles in eine Variable hintereinander schreiben
  $GBeintrag = $_POST['myGBname']."|"; // der Name aus dem Formular
  $GBeintrag .= $_POST['myGBhp']."|"; // die Website aus dem Formular
  $GBeintrag .= $_POST['myGBmail']."|"; // die Mail-Adresse aus dem Formular
  $GBeintrag .= date("d.m.y")."|"; // das Datum aus dem Formular, gleich formatiert

  /*
  Das Zeichen '|' wird als Trennzeichen in der Textdatei des Gästebuchs verwendet.
  Falls jemand in der nachricht ein | verwendet hat, sollten wir das
  ersetzen, da sonst beim auslesen Fehler auftauchen
  */
  $_POST['myGBtext'] = str_replace("|", "<!strich!>", $_POST['myGBtext']);
 
  // Zeilenumbrüche entfernen, da anhand dieser sonst die Trennung der Datensätze erfolen würde
  $_POST['myGBtext'] = str_replace("\r\n", "<!umbruch!>", $_POST['myGBtext']);
  $_POST['myGBtext'] = str_replace("\r", "<!umbruch!>", $_POST['myGBtext']);
  $_POST['myGBtext'] = str_replace("\n", "<!umbruch!>", $_POST['myGBtext']);
 
  // Anführungszeichen als Sonderzeichen behandeln
  //$_POST['myGBtext'] = addslashes($_POST['myGBtext']);
 
  // Umbruch als Trennzeichen am Ende des Datensatzes hinzufügen
  $GBeintrag .= $_POST['myGBtext']."\r\n";

  /*
  Den Eintrag in die Textdatei schreiben und dabei vor
  gleichzeitigem Mehrfachzugriff schützen
  */
  $openfile = fopen($textfile, "a");
  flock($openfile, 2);
  fwrite($openfile, $GBeintrag);
  flock($openfile, 3);
  fclose($openfile);
}
?>

<!--
Hier der Allgemein bekannte HTML-Teil welcher
das Aussehen der Seite und damit das des GBs bestimmt
Hier kann man nach belieben alles anpassen bis auf
Bestehen bleiben sollten jedoch die integrierten
PHP-Anweisungen welche sich zwischen <? //und ?> befinden.
Sebstverständlich können diese natürlich an eine andere Stelle
verfrachtet werden.
//-->

<!-- KOPF DATEN //-->
<html>
<head>
<title>Mein G&auml;stebuch</title>
<style type="text/css">
  body {background-color: #FFFFFF;}

  .GBtable {border: 1px solid #000000;
            border-collapse: collapse;
            width: 400px;}

  .GBhead {background-color: #0000FF;
          color: #FFFFFF;
          font-weight: bold;}

  .GBinput {background-color: #00FFFF;
            border: 1px solid #000000;}

  .GBcontent {background-color: #FFFFFF;}

  a.GBlink:link, a.GBlink:visited, a.GBlink:hover, a.GBlink:active { text-decoration: none;
                                                    color: #FFFFFF; }
</style>
</head>
<body>

<center>
<h1>Titel des G&auml;stebuchs</h1>

<!-- EINGABE TEIL //-->
<form action="<?=$PHP_SELF?>" method="POST">
<table class="GBtable">
  <tr class="GBhead">
    <td colspan="2">Hier ins G&auml;stebuch eintragen</td>
  </tr>
  <tr>
    <td>Dein Name</td>
    <td><input class="GBinput" name="myGBname" size="30"></td>
  </tr>
  <tr>
    <td>Deine Homepage</td>
    <td><input class="GBinput" name="myGBhp" size="30" value="http://"></td>
  </tr>
  <tr>
    <td>Deine Email</td>
    <td><input class="GBinput" name="myGBmail" size="30"></td>
  </tr>
  <tr>
    <td colspan="2" align="center">Deine Nachricht</td>
  </tr>
  <tr>
    <td colspan="2" align="center"><textarea class="GBinput" cols="45" rows="10" name="myGBtext"></textarea></td>
  </tr>
  <tr>
    <td colspan="2" align="center"><input type="submit" name="submit" value="Eintragen"></td>
  </tr>
  </form>
</table>
<br><br>

<!-- EINTRÄGE ANZEIGEN -->
<?
/*
Hier das Gästebuch öffnen und alle Einträge in ein Array einlesen;
Fehlermeldung bei noch nicht vorhandener Datei wird unterdrückt
und die Datei automatisch angelegt
*/
$eintraege = @file($textfile);

/*
Anzeigen der Einträge

Solange Einträge vorhanden sind, wird eine Schleife durchlaufen
von hinten nach vorne (also neueste zuerst)

Hier wird gleichzeitig die Logik für die dynamische Generierung
der Seitenlinks erzeugt
*/
$start = (count($eintraege) - 1) - $ppp * ($page - 1);
$stop = (count($eintraege) - 1) - $ppp * ($page - 1) - $ppp + 1;
if ($start > (count($eintraege) - 1))
{
  $start = count($eintraege) - 1;
}
if ($stop < 0)
{
  $stop = 0;
}
// Textdatei überhaupt vorhanden?
if (!$eintraege)
{
  $max = 0; //  $max gibt die Anzahl der Einträge an
}
else
{
  $max = count($eintraege);

   for ($a = $start; $a >= $stop; $a--)
   {
     // Die einzelnen Teile des Eintrags extrahieren
     $Eintrag = explode("|", $eintraege[$a]);
   
     /*
     Dann noch die Sonderstrings wie "<!umbruch!>" und "<!strich!>" wieder
     in die ursprünglichen zeichen ersetzen
     */
     $Eintrag[4] = str_replace("<!umbruch!>", "\r\n", $Eintrag[4]);
     $Eintrag[4] = str_replace("<!strich!>", "|", $Eintrag[4]);
   
     //und jetzt alles in Tabellen ausgeben
   ?>
   <table class="GBtable">
     <tr class="GBhead">
     <td>Von : <?=$Eintrag[0]?></td>
     <td>am : <?=$Eintrag[3]?></td>
     <td><a class="GBlink" href="mailto:<?=$Eintrag[2]?>">Email</a></td>
     <td><a class="GBlink" href="<?=$Eintrag[1]?>" target="_blank">Homepage</td>
     </tr>
     <tr>
     <td colspan="4"><?=stripslashes(nl2br($Eintrag[4]))?></td>
     </tr>
   </table>
   <br>
   <?
  }
}
//  jetzt noch fix die daraus resultierenden Seiten berechnen
if ($max == 0)
{
  $pages = 1;
}
else
{
  $pages = intval(($max - 1) / $ppp) + 1;
}
?>
<p align='center'>
<?
if ($page > 1)
{
?>
    <a href='<?=$PHP_SELF?>?page=1'>|<&nbsp;</a>
    <a href='<?=$PHP_SELF?>?page=<?=($page - 1)?>'><&nbsp;</a>
<?
}
for ($i = 1; $i <= $pages; $i++)
{
  if ($i == $page)
  {
  ?>
    <?=$i?>&nbsp;
  <?
  }
  else
  {
  ?>
    <a href='<?=$PHP_SELF?>?page=<?=$i?>'><?=$i?>&nbsp;</a>
  <?
  }
}
if($page < $pages)
{
?>
    <a href='<?=$PHP_SELF?>?page=<?=($page + 1)?>'>>&nbsp;</a>
    <a href='<?=$PHP_SELF?>?page=<?=$pages?>'>>|</a>
<?
}
?>
<br>Es sind <b><?=$max?></b> Eintr&auml;ge im G&auml;stebuch</p>
</center>

</body>
</html>

greez 8)
JoSsiF

ich hab noch ne frage zu dem skript,
und zwar, wo kann man da jetzt die
Einträge löschen? ich seh keinen
link oder so was.....

die funktion ist noch nicht eingebaut...vorerst wirst du nicht drumherum kommen die einträge von hand zu fuß in der textdatei zu entfernen...

Ich denk aber das wir demnächst noch ne Adminfinktion einbauen...

wie kann ich einstellen,
dass der Scrollbalken
verschwindet, bei dem
man den Text eingibt?

(Auch wenn man ihn nicht
benutzen kann...)

wie kann ich einstellen,
dass die Tabelle, wo die
Einträge angezeigt werden,
schmaler ist?

MfG


« HOMEPAGE VORLAGENAccount »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
AppleScript
AppleScript ist eine Programmiersprache von Apple für Skripte und Programme auf Systemebene. Im Gegensatz zu den Unix-Shellscripts, die seit OS X ebenfalls mögl...

Javascript
JavaScript ist eine weit verbreitete Skriptsprache, die ursprünglich von Netscape für das DOM-Scripting für Webseiten entwickelt wurde. Sie hat sich seitde...

PostScript
PostScript ist eine Programmiersprache zur Beschreibung von grafischen Objekten und Schriftzeichen zur Übertragung vom Computer zum Drucker oder Laserbelichter. Gene...