WauWau: id++

Beitrag lesen

Hi Micha,

Der Newsflash funktioniert mit sprungmarken, sprch man klickt auf den titel und gelangt zu den ausführlichen news weiter unten.

Nenne deine Sprungmarken einfach "Anker", und jeder, der den Sourcecode gelesen hat, weiß, was du meinst.

Diese news werden ja nun durch eine id oder sonstwas identifiziert, da ich keine id hatte, hab ich einfach den title genommen... hab aber nich daran gedacht das keine leerzeichen drinsein dürften.. also hab ich jmd gefragt der sagte mir folgendes:

hmm - entweder, du ersetzt die Leerzeichen durch Unterstriche oder so was, oder du lässt deine Schleife mitzählen, oder du ... nimmst die Spalte "sid" deiner Tabelle - was ist sie?

"die mysql sachen werden ja immer mit ner mysql schleife ausgelesen
..... und die wird ja so oft wiederholt bis alle beiträge druch sind ....

Welcher "klugscheißer" sagte denn das? "MySQL-Sachen" sind in PHP allgemein "Objekte" - und "mysql schleife"n gibt's nicht. Es wird lediglich sehr oft so gehandhabt, dass man eine while() für das Überprüfen eines weiteren Tabellensatzes nutzt, denn man mit mysql_fetch_assoc, mysql_fetch_array, usw. bekommt. Diese funktionen springen lediglich bei jedem Aufruf den internen Zeiger des Datensatzes eins weiter.

und so kann man halt jedes mal, wo sie druchggaggen wird mitzählen und hätte ne künstlichje id.."

Dein intelligenter Ratgeber meint ungefähr so was:

$deine_kuenstliche_id = 0;

while($bla = mysql_fetch_row($blo))
 {
  $bla......;
  print "ID des Eintrags: ".$deine_kuenstliche_id;
  $deine_kuenstliche_id++;
 }

Und das habe ich oben schon erwähnt.

soweit sogut...ich nehm an das es funktioniert, allerdings habe ich nich verstanden wie er es meint... kann mir dabei nochmal jmd helfen?!?

Nun, ich finde diese Methode nicht sonderbar empfehlenswert, ich würde in der Tabelle eine Spalte mit auto_increment als schlüssel anlegen und diese als ID verwenden.

Also, du willst ja nun oben deine Übersicht in <h1> haben ("toc" = table of contents), unten Inhalt. afaik (bin mir gerade nicht sicher) kannst du in den datensätzen beim aufrufen nicht mehr rückwärts oder zum anfang springen (zumindest habe ich es noch nie gemacht). Das heißt, du musst bei dem durchgehen in der while() den Inhalt der Felder sowieso in einem globalen (jenachdem) Array speichern, und da würde ich gerade noch die ID dazupacken, dann geht das wunderbar.

Also, ein Beispiel:

Ich nehme an, du bekommst von deiner DB die felder "title" und "inhalt". Das Query speicherst du in $bla.

$datas = array();
$x = 0;
while($blo = mysql_fetch_assoc($bla))
{
  $datas[$x] = array();
  $datas[$x]["id"] = $x;
  print "<h1><a href="#$x">".$blo["title"]."</a></h1>";
  $datas[$x]["text"] = $blo["inhalt"];
  $datas[$x]["titel"] = $blo["title"];
  $x++;
}

Nun hast du nach dem letzten durchlauf deiner schleife in dem Array $datas die Datensätze bei 0 beginnend, jedes Array-Element ist ein Array mit den Elementen "id", "text" und "titel".
Also, wo später dann der Inhalt steht könntest du schreiben:

foreach($datas as $news)
{
  print '<a name="'.$news["id"].'" id="'.$news["id"].'"><h2>'.$news["titel"].'</h2>';
  print '<p>'.$news["text"].'</p>';
}

So einfach wäre es dann später halt.

WauWau

--
Wau - hier ist mein Selfcode:
ss:) zu:) ls:< fo:~ de:] va:) ch:° n4:# rl:( br:< js:| ie:% fl:| mo:|
[mein alter sah optisch irgendwie besser aus ;-)]