Datenbank-werte in einen Link übergeben ???

Kategorien: PHP & MySQL
8 Antworten
Novadis
Novadis am Montag, 25. April 2005 um 20:09
Hy, Ich habe ein Problem und ich weiß nicht wie ich es bewältigen soll ! Also ich habe ein newsscript und im template davon (einfacher html-code im script) will ich einen link einbetten der zum Weiterlesen führt, dass heist dass ich die news nach 200 Zeichen abkürze und dann wenn ich auf den link klicke komm ich auf eine seite mit der kompletten news. aber wie soll ich das anstellen ? 1. wie kann ich es so machen dass mann in der entsprechenden news "Weiter lesen" anklicken kann und dann auch die news angezeigt wird ? 2. wie muss ich dazu den link gestalten ? hier mein script : <? HTML_Header("BENNIS NEWS SCRIPT..."); include("config.php"); //Variablen einbinden $query = mysql_query("SELECT id, title, autor, text, DATE_FORMAT(Datum, '%d.%m.%Y, %H.%i Uhr ') AS datum FROM news ORDER BY datum DESC"); while($news = mysql_fetch_array($query)) { $text = nl2br($news[text]); $title = $news[title]; $autor = $news[autor]; $datum = $news[datum]; $start = "0"; $l&auml;nge = "100"; if(strlen($text) > $l&auml;nge) { $text = substr($text,$start,$l&auml;nge).' ...'; } HTML_News($title, $datum, $text, $autor); } HTML_footer(); // ENDE HAUPTSCRIPT // FUNKTIONEN: /* function HTML_Header HTML Header schreiben brauchst du ja nur einmal, nicht in jeder schleife! */ function HTML_Header($Seitentitel){ ?> <style type="text/css"> <!-- .news2 {font-family: Arial, Helvetica, sans-serif; font-size: 12px;} .news3 { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; } --> </style> </head> <body> <div align="center"> <?php } /* function HTML_footer HTML footer schreiben ... siehe header */ function HTML_footer(){ ?> </div> </body> </html> <?php } /* function HTML_News news als HTML ausgeben */ function HTML_News($title, $datum, $text, $autor){ ?> <table width="400" border="0" cellpadding="0" cellspacing="1" bgcolor="#000000"> <tr> <td bgcolor="#C5D0DE"><table width="400" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="274"><div align="left" class="news2"><strong><?php echo $title;?></strong></div></td> <td width="126"><div align="right" class="news2"><?php echo $datum;?></div></td> </tr> </table></td> </tr> <tr> <td bgcolor="#FFFFFF"><div align="left" class="news3"><?php echo $text;?></div></td> </tr> <tr> <td bgcolor="#C5D0DE"><table width="400" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="112"><div align="left" class="news2"><a href="??? was soll hier rein ???">Weiter lesen ... </a></div></td> <td width="288"><div align="right" class="news2">von: <?php echo $autor;?> </div></td> </tr> </table></td> </tr> </table> <br> <?php } ?> Bitte um hilfe !

Kommentare

diet
diet am Dienstag, 26. April 2005 um 15:29

Also, den link für ich ca so machen.
http.//blabla.url/news.php?id=$id

und dann halt die id auslesen.

Kürzen kannst du das so
substr($string, $start, $länge)
$start = ab wann der $string ausgelesen werden soll, z.b. 0 ;)
$länge = wär dann 200.

Markus René Einicher
Markus René Einicher am Mittwoch, 27. April 2005 um 08:55

Ich würde dir aus der professionellen Ecke empfehlen, das mittels explode von Leerzeichen zu machen, sonst wird das letzte Wort irgendwo mittendrin abgeschnitten. Das musst du dann mit einer Forschleife auslesen und dabei kannst du noch ein Skript dauztun, das bestimmte Wörter verändert, hervorhebt oder Verweise einfügt - nur mal so als Anregung.

Nebenbei gibts hier zwei Seitenzerlegentutorials die das behandeln.


$anfrage = mysql_query("SELECT * FROM artikel");
while($aufstellung = mysql_fetch_assoc($anfrage)) //Alle Artikel auflisten
{
$zerlegung = explode(" ",$aufstellung[text]); //In einen Array zerlegen der pro Eintrag ein Wort beinhaltet
$wörter = 200;

for($z = 0; $z < $wörter; $z++) //Text wieder zusammensetzen
{
$neuer_text .= $zerlegung[$z].&#039; &#039;; //Wort mit Leerzeichen
}
$neuer_text = $neuer_text." ... <a>[mehr]</a>"; //mehr lesen
}

invisible.kid
invisible.kid am Mittwoch, 8. Juni 2005 um 20:15

Ich würde es auch mit JavaScript machen, dass du bei der News-Administration 2 Felder hast:
Shortnews und Komplettnews (oder so).

Bei den News soll dass dann so aussehen:

________

Shortnews
bla
bla

Weiterlesen...
|-> Bei klick klappt so ein kleines Fenster auf (javascript), wo dann die restlichen News liegen.

So müsstest du die News-ID nicht extra übergeben, aber es spart trotzdem platz :)

Gruß

fox

(PS: Ich weiß leider selbst nicht genau wie das geht, habs nur öfters gesehen, Google am besten mal oder schau bei SelfHTML vorbei ;) )

Markus René Einicher
Markus René Einicher am Mittwoch, 8. Juni 2005 um 21:19

Es gilt grundsätzlich JavaScript zu vermeiden und in diesem Fall gibt es zig Wege das mit PHP zu lösen, da musst du dich wirklich nicht in die Ungewissheit von JavaScript begeben.

unkie
unkie am Donnerstag, 9. Juni 2005 um 17:06

Naja so "ungewiss" ist JS auch nicht. Es ist recht nützlich ist bloß in Verruf gekommen weil sich im IE soviel scheiße damit machen ließ ;)

Markus René Einicher
Markus René Einicher am Freitag, 10. Juni 2005 um 19:59

Aber du weißt nun mal nicht ob JavaScript aktiviert ist, oder irgendwelche Funktionen deaktiviert sind, ob es richtig läuft, ob der Benutzer einen Netzklienten benutzt den du nicht berücksichtigt hast usw. Bei PHP hingegen hast die Garantie das es funzt.

unkie
unkie am Freitag, 10. Juni 2005 um 20:37

Jo das mag schon so sein aber bei PHP kann man leider nicht ganz so schöne Effekte machen. Aber naja größtenteils verzichte ich auch auf JS da es durch sowas wie www.raus.de in Verruf gekommen ist. Dann muss man halt auf andere Sachen zurückgreifen wie z.b.: CSS

Markus René Einicher
Markus René Einicher am Sonntag, 12. Juni 2005 um 16:41

JavaScript wird jetzt voll niedergestutzt, im Firefox kannst den Benutzer nicht einmal mehr ein Bild von dessen eigenen Platte anzeigen lassen, also ZB ein Vorschaubild beim Dateihochlader, das geht jetzt nur mehr wenn das Javascript auch auf seiner Platte liegt. Opera soll auch so reagieren und im jsforum hat einer gemeint er habe gehört das der IE7 (der auf eimal doch kommt aber nur mehr für WinXPSP2 und Longoam) die selben Sicherheitseinstellungen haben wird weil Microdreck sich endlich dauz herablassne will (!angeblich) die von den anderen Browsern eingeführten Sicherheitsstandards zu übernehmen (womit sie sich offensichtlich den schlechten Ruf IEs auf kosten des guten Rufs der OpenSourcer ausnutzen und damit missbrauchen). Demnach wird IE7 genauso wie Firefox reagieren (aber halt nur bei Sicherheitsproblemen).