| (Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI... |
Diskussion: Reihenfolge in GB-Einträgen zeitlich sortieren im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; Anzeige Hallo, liebe HaBos. Ich hab im Netz mal ein wenig rumgestöbert (bin totale php-Niete), und mir aus verschiedenen Scripts ...
![]() |
| | #1 (permalink) |
| Registriert seit: 08.07.03 ![]() Likes: 0 | Anzeige Hallo, liebe HaBos. Ich hab im Netz mal ein wenig rumgestöbert (bin totale php-Niete), und mir aus verschiedenen Scripts sozusagen ein Gästebuch zusammengebaut (wirklich nichts besonderes, ohne Admin-Oberfläche, einfach nur ein Schript, welches den Inhalt der Textboxen an eine php Seite übermittelt). Es funktioniert auch alles wunderbar, aber ich weiß nicht, wie ich die Eintrags-Reihenfolge so ändern kann, dass immer der neueste Eintrag oben steht...Kann mir da jemand helfen?! Hier der verwendete Code: Eintragen.php Code: <table> <form action=gastebuch.php method=post> <textarea cols=50 rows=1 name="namedestyps">Name</textarea> <p> <textarea cols=50 rows=10 name="text">Nachricht</textarea> <p> <textarea cols=50 rows=1 name="homepage">Homepage</textarea> <p> <textarea cols=50 rows=1 name="email">eMail</textarea> <p> <input type=submit value="Eintragen"> </form> </table> Code: <table>
<a href="eintragen.php">Eintragen</a>
<?
$date = date("j.n.y");
if($text != "") {
$fp=fopen("text.php","a");
fwrite ($fp, "<table>$namedestyps $date <a href='$homepage' target='_blank'>$homepage</a> <a href='mailto:$email'>mail</a><br> $text <hr width='50%'></table>");
fclose($fp);
}
$array=file("text.php");
$lines=sizeof($array);
$text=file("text.php");
$lines=sizeof($text);
for($i=0;$i<$lines;$i++) {
echo $text[$i];
}
?>
</table> Kann mir jemand sagen, wie ich die Einträge so anzeigen lasse, dass der Neueste immer oben ist?! (Wenn möglich, mit Erklärung für Dummies) :rolleyes: Wäre wirklich klasse. Danke für's Lesen. Tine |
| | |
| | #2 (permalink) |
| mal so nebenbei, hast du kein MysQL, damit wäre das um einiges einfacher.. Aber es geht auch mit Array. Wenn du deine Einträge also in ein Array speicherst (wie du das schienbar machst, wie ich im kurzen überfliegen gesehen hab), so kannst du dein array auch sortieren lassen. Daui gibt es mehrere funktionen, und möglichkeiten.. Am besten schaust du dir diese seite mit den dazugehörigen querverwesen mal an. http://de.php.net/manual/de/function.asort.php | |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| Themenstarter Registriert seit: 08.07.03 ![]() Likes: 0 | O...kay...*kopfkratz*...danke schonmal für die flinke Hilfe, aber ich bin scheinbar noch nicht ganz ausgeschlafen. Meinst du das Array von file? Das bleibt doch immer nur eins. Wo soll ich das sortieren? Oder meinst du date? (< Is das eigentlich ein Array?!) Sorry, wie gesagt ich hab echt null Plan. Danke für den Link, ich habe mal etwas über die verschiedenen Sortier-Funktionen gelesen, und fand das hier irgendwie einleuchtend: Code: $order=='asc' Kannst du mir noch einen Denkanstoß geben, bitte?! ?( |
| | |
| | #4 (permalink) |
| Registriert seit: 20.01.03 ![]() Likes: 0 | Da würd ich die Datei text.php oben auffüllen, sprich: Neueinträge immer an den Anfang der Datei statt ans Ende setzen. Geht glaube ich mit dem Schalter "r" bei fopen. Dadurch sind bereits in der Datei die Einträge absteigend sortiert. |
| | |
| | #5 (permalink) |
| Themenstarter Registriert seit: 08.07.03 ![]() Likes: 0 | Zwirni, ich habe deine Methode gerade mal ausprobiert (mit r+), aber dann wird immer nur ein einziger eintrag angezeigt, bzw. die anderen (nachfolgenden) entries werden alle gelöscht. |
| | |
| | #6 (permalink) |
| Registriert seit: 20.01.03 ![]() Likes: 0 | Dann versuch mal die Einträge immer an den Anfang der Datei zu setzen. Reihenfolge: 1. Datei komplett einlesen und Daten in einem String speichern 2. an den Anfang dieses Strings den neuen Eintrag setzen 3. den kompletten String in der Datei speichern (überschreiben) So bekommste auch den neuesten Eintrag ganz oben hin. Wie sieht eigentlich der Text aus den du speicherst? Gibt es da auch einen Unix-Zeitstempel? Evtl. kannste ja die Inhalte in einem Array speichern und dieses dann nach diesem Zeitstempel sortieren lassen. Da gabs irgendeinen Befehl für, fällt mir nur gerade nicht ein. array_sort oder sowas. |
| | |
| | #7 (permalink) |
| also ich habs jetzt so geschaft allerdings bekommt er probleme wenn er eine mehrzeilkige nachricht verfasst (@tine hab ein paar sachen in der eintrage.php verändert gefiel mir besser kannst es aber auch wieder löschen und wenn du ne sqldb hast, ich hab noch glaub ich ein gb auf dbbasis rumliegen): eintragen.php Code: <table>
<script language="javascript">
function leeren (Wert,Wert2)
{
if (document.bar.elements[Wert2].value == Wert)
{
document.bar.elements[Wert2].value='';
}
}
</script>
<form name="bar" action=gastebuch.php method=post>
<input type="text" name="namedestyps" value="Name" onclick="leeren('Name','namedestyps')">
<p>
<textarea cols=50 rows=10 name="text" onclick="leeren('Nachricht','text')">Nachricht</textarea>
<p>
<input type="text" name="homepage" value="Homepage" onclick="leeren('Homepage','homepage')">
<p>
<input type="text" name="email" value="Email" onclick="leeren ('Email','email')">
<p>
<input type=submit value="Eintragen">
</form>
</table> Code: <table>
<a href="eintragen.php">Eintragen</a><br><br>
<?
$date = date("j.n.y");
if($text != "") {
$fp=fopen("text.php","a");
fwrite ($fp, "<table>$namedestyps $date <a href='$homepage' target='_blank'>$homepage</a> <a href='mailto:$email'>mail</a><br> $text <hr width='50%'></table>
"); //dieser Zeilenumbruch muss hier stehen
echo "Erfolgreich eingetragen";
fclose($fp);
}
$text=file("text.php");
$lines=count($text);
$text = array_reverse ($text); //dreht Array rum.
for($i=0;$i<$lines;$i++)
{
echo $text[$i]."<br><br>";
}
?>
</table> @zwirni modus"r" ist lediglich ein normale read modus s.h. selfphp.de | |
| | |
| | #8 (permalink) |
| Themenstarter Registriert seit: 08.07.03 ![]() Likes: 0 | @ Zwirni: Ich hab mal eine Zeit mit eingebaut. Code: $time = date("h:m"); @CPU8080: Ich hab grad deinen Vorschlag gesehen, und werde es auch sofort mal testen...Und wenn das nicht klappt, geb ich es auf, mir raucht schon die Birne! Ja, ich hätte die Möglichkeit, das Ganze mit einer DB zu machen, aber ich hab mich davor gescheut, weil ich noch weniger Ahnung von MySQL als von PHP hab...Shame on me, ich weiß. ![]() Edit: CPU8080: ich habe deinen Vorschlag jetzt mal getestet, und wie du schon sagtest, wenn der Eintrag länger ist, werden da leider mehrere draus. Aber danke trotzdem. Ob man das wohl irgendwie hinbekommt, dass ein Eintrag auch wirklich einer bleibt?! |
| | |
| | #9 (permalink) | |
| Zitat:
| ||
| | |
| | #10 (permalink) | |
| Registriert seit: 20.01.03 ![]() Likes: 0 | Zitat:
Oder direkt: http://www.php.net/manual/de/ref.array.php Oder das: http://www.webmaster-resource.de/tri...-sortieren.php | |
| | |
| | #11 (permalink) |
| Registriert seit: 17.03.04 ![]() Likes: 2 | Hallo, es ist ganz leicht, Ihr dürft keine reinen HTML-Tags in der Datei speichern! Ich habe mir vor einiger Zeit auch ein GB auf File basis gecodet, und stand vor denn selben Problemen. Man hat z.B. das Problem beim IE dass man in einer Textarea einen Zeilenumbruch machen kann. Beim Firefox geht das nicht, der IE fügt dann auch gleich ein Steuerzeichen mit ein /n, und das führt zu einem Zeilenumbruch in der Datei. Tja, es gibt da noch mehr Probleme die auf einen zukommen. Ach ja, speichere Dein Datum nicht formatiert, sondern als Unix-Timestamp mit der Funktion mktime(). Das ASC gibts bei DB's!! Und jetzt zeig ich euch noch die Funktion die bei mir das schreiben regelt. PHP-Code:
__________________ Mfg Basic Avid - Use it or be used! - |
| | |
| | #12 (permalink) | |
| Zitat:
$eintragtext = str_replace("\n", '<br>', $text); //Einfach \n rausziehen 8D Code: <table>
<a href="eintragen.php">Eintragen</a><br><br>
<?
$date = date("j.n.y");
if($text != "") {
$fp=fopen("text.php","a");
$eintragtext = str_replace("\n", '<br>', $text);
fwrite ($fp, "<table>$namedestyps $date <a href='$homepage' target='_blank'>$homepage</a> <a href='mailto:$email'>mail</a><br> $eintragtext <hr width='50%'></table>
"); //dieser Zeilenumbruch muss hier stehen
echo "Erfolgreich eingetragen";
fclose($fp);
}
$text=file("text.php");
$lines=count($text);
$text = array_reverse ($text); //dreht Array rum.
for($i=0;$i<$lines;$i++)
{
echo $text[$i]."<br><br>";
}
?>
</table> | ||
| | |
| | #13 (permalink) |
| Das machts aber um einiges leichter mit ner datenbank.. das mit der datei is doch recht kompliziert.. kurze einführung in mysql Code:
define('MYSQL_HOST', 'localhost');
define('MYSQL_USER', 'user');
define('MYSQL_PASS', 'pass');
define('MYSQL_DATABASE', 'dbase'); dort wird 1. die adresse zum sql server angegeben (sagt dir dein provider) 2. der username für den sqlzugang 3. das passwort 4. dort steht der name der datenbank. (den legst du beim erstellen der datenbank fest) Code: mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS); mysql_select_db(MYSQL_DATABASE); Jetzt musst du den befehl für die sql-action zusammenstellen: Code: $sql = "INSERT INTO tabellenname ( `ID` , `name` , `nachricht` , `homepage`, `email` , `datum`)
VALUES ('', '$name', '$message', '$hp', '$email', now())"; INSERT INTO sagt aus, dass ein weiterer datensatz hinzugefügt werden kann, dort gibt es dann noch SELECT, INSERT, UPDATE, ..., um die grundsätzliche action zu definieren. daanch folgtd er tabellenname. inerhalb einer datenbank muss man tabellen definieren. um die daten zu speichern. hier heist sie einfach tabellenname. dann volgt die genaue anweisung was mit den einzelnen datenfeldern angesetllt werden soll. wir defineiren die Tabellenspalten, in die wir etwas schreiben wollen. und nach values kommen die entsprechenden werte in der oben angegebenen folge. eine besonderheit bieten now() das ist keine wariable, sondern eine funktion, die den aktuellen zeitstempel ausgibt. Um das ganze jetzt an die datenbank zu übergeben, müssen wir die funktion mysql_query($Sql); ausführen. Code: mysql_query($Sql); wenn du es auslesen willst gehst du genauso vor, nur dass die anweisung in der variablen $sql etwas anders lautet: Code: SELECT * FROM tabellenname ORDER BY datum DESC"; danach kommen die einzelnen datenfelder die abgefragt werden sollen. * heißt das alle abgefragt werden. Order BY gibt die anweisungd ie datensätze vorher zu sortieren darauf folgt dann das datenfeld, anhand der die ausgabe sortiert werden soll. und dahinter dier sortier algorithmus ASC (aufsteigend) oder DESC (absteigend). danach mus sman die abfrage wieder übergeben Code: $res = mysql_query($Sql); diese variable ist ein Array, und enthält somit die gesamte tabellenstrucktur, aber damit kann man nicht arbeiten, deswegen muss man das ganze noch umwandeln. $row = mysql_fetch_assoc($result); gibt eine reihe als array aus, da wir aber mehrere reihen haben, brauchen wir eine schleife Code: while ($row = mysql_fetch_assoc($result)) { } so könne wir dann eine ausgabe wie diese starten: Code: echo "<table><td>name:</td><td>".$row[name]."</td> (...) "; http://www.php4-forum.de/datenbank.htm Kannst dich auch gerne per IM direkt an mich wenden bei fragen. | |
| | |
| | #14 (permalink) |
| Themenstarter Registriert seit: 08.07.03 ![]() Likes: 0 | @CPU8080: So wie du das da gecodet hast übernehme ich es einfach mal, scheint problemlos zu funktionieren. @BasicAvid: Öj, das sieht ja völlig anders aus. Ich werd mir das nachher mal genauer ansehen, und versuchen das zu kapieren. @flame: WOW! Kurze Einführung? Also danke schonmal, so mega-schwer sieht das ja gar nicht aus, aber leider scheitert das dann oft an der Umsetzung...(Weiber und ihre Logik...aber Selbsterkenntnis ist ja der Beste Weg zur Besserung *grins*) Danke nochmal an alle, die geholfen haben. Ich wünsche einen angenehmen Samstag. |
| | |
| | #15 (permalink) | ||
| Registriert seit: 17.03.04 ![]() Likes: 2 | @CPU8080 Mit sowas würde ich aufpassen, wie gesagt ich würde niemals reine HTML mit in der Datei speichern. Und dafür gibts einige Gründe. Die Datei wird unnötig aufgebläht durch sowas. Man kann denn Style / Aufbau des Eintrags nur mit viel Aufwand ändern. Und man könnte noch ganz viele andere schönen Sachen machen ;-)! Zitat:
Zitat:
__________________ Mfg Basic Avid - Use it or be used! - | ||
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Zahlen in zufälliger Reihenfolge | CDW | Programmieraufgaben | 49 | 02.02.12 20:06 |
| Programm zeitlich steuern | D31~$0u1 | Code Kitchen | 3 | 01.10.07 17:03 |
| Programm zum löschen von gesperrten Reg einträgen | Xman | Virenschutz · Tools & Aggressive Software | 5 | 27.11.05 22:22 |
| Zeitlich gesteuerter Internetzugang? | Twister | Windows | 0 | 24.06.04 13:51 |
| IP-Adresse aus Foren-Einträgen?!?! | tine | (In)security allgemein | 5 | 30.12.03 22:11 |