Micha: id++

Tag! :-)

Also nochmal wegen dem nuke block... hier erstmmal der source:

<?
  mysql_connect("localhost","***","***") or die
  ("Keine Verbindung moeglich");
  mysql_select_db("dhdusiw") or die ("Die Datenbank existiert
  nicht");
  $abfrage = "SELECT title, sid FROM stories ORDER BY sid DESC LIMIT 10";
  $ergebnis = mysql_query($abfrage);
  while($row = mysql_fetch_object($ergebnis))

{
       $title = $row -> title;
       echo "<h1><a href="#$title">$title</a><h1>\n";
    }

mysql_free_result($ergebnis);
 ?>

So, dies ergibt einen Newsflash, welcher nur die Überschriften der News anzeigt, im unterem bereich der seite sind dann ausführlichere news.
Der Newsflash funktioniert mit sprungmarken, sprch man klickt auf den titel und gelangt zu den ausführlichen news weiter unten.
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:

"die mysql sachen werden ja immer mit ner mysql schleife ausgelesen
..... und die wird ja so oft wiederholt bis alle beiträge druch sind ....
und so kann man halt jedes mal, wo sie druchggaggen wird mitzählen und hätte ne künstlichje id.."

später kam die genauee erklärung:

"wegen der id
kannst du doch einfach in der while schleife ne id selberbauen

$i=0;
und dann inner schleife imm er $i++;
dann hast du pro eintrag ne neue id und kann das so benutzen. "

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

Thx :-D

Gruss Micha

--
Wer sagt es geht nicht,
soll bitte nicht den stören, der es gerade macht!
  1. 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 ;-)]
    1. Tag!

      Hört sich schwierig an aber ich versuchs und meld mich falls ich was nicht hinkrieg.

      Mit dem sid... das wäre natürlich das einfachste, in der spalte sid, ist die id jedes newseintrags, wonach sie ja auch absteigend sortiert wird.
      Ich hatte es auch mit sid probiert, allersings kommt da wieder das problem nuke.. alles muss vorher in der mainfile ect angegeben werden(wo ich garnich durchsteig) und so spuckt er mir nur fehler ect aus. :-(

      Dieser Klugscheisser warn 16jähriger Typ der eigentlich(so dachte ich jedenfalls immer) ganz gut in Sachen php ist.

      Gruss Micha

      --
      Wer sagt es geht nicht,
      soll bitte nicht den stören, der es gerade macht!
      1. Hallo,

        Ich hatte es auch mit sid probiert, allersings kommt da wieder das problem nuke.. alles muss vorher in der mainfile ect angegeben werden(wo ich garnich durchsteig) und so spuckt er mir nur fehler ect aus. :-(

        Auf jeden Fall bekommst du es mit einem Db-eigenen "index" am besten hin, da du da "superglobal" jedem News-eintrag eine ID zugeordnet hast. Ich meine damit, dass du dein id-system auch woanders benutzen kannst - und nicht nur in deinem script. (ich habe bspw. ein news-system, in dem ich die News einzeln anzeigen lasse, und im Query kommt dann eben ein get["id"], welches die ID des News meiner DB repräsentiert.

        Dieser Klugscheisser warn 16jähriger Typ der eigentlich(so dachte ich jedenfalls immer) ganz gut in Sachen php ist.

        hmmm - ich bin jünger als er ;-)

        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 ;-)]
  2. Hallo.

    <?
      mysql_connect("localhost","***","***") or die
      ("Keine Verbindung moeglich");
      mysql_select_db("dhdusiw") or die ("Die Datenbank existiert
      nicht");
      $abfrage = "SELECT title, sid FROM stories ORDER BY sid DESC LIMIT 10";
      $ergebnis = mysql_query($abfrage);

    // wegen der id kannst du doch einfach in der while schleife ne id selberbauen
      $i=0;

    while($row = mysql_fetch_object($ergebnis))

    {

    // und dann inner schleife imm er $i++;
    // dann hast du pro eintrag ne neue id und kann das so benutzen. "
            $i++;

    $title = $row -> title;
           echo "<h1><a href="#$i">$title</a><h1>\n";
        }

    mysql_free_result($ergebnis);
     ?>

    Grüße aus Würzburg
    Julian

    --
    "machines will eat itself." Bau Dir Deinen eigenen Bot.
    http://www.hgb-leipzig.de:83/~franz/hyperportrait/testers/
  3. Hallo,

    Tag! :-)

    DU schon wieder? :-)

    Diese news werden ja nun durch eine id oder sonstwas identifiziert, da ich keine id hatte,

    Warum hat Deine Tabelle keinen ID als autoincrement-Wert? Meines Wissens sollte eine DB-Table welche Datensätze speichert eigentlich immer eine ID-Spalte als autoincrement haben, dies dient u.a. zum eindeutigen Identifizieren des Datensatzes.

    hab ich einfach den title genommen... hab aber nich daran gedacht das keine leerzeichen drinsein dürften..

    Das ist verzeih mir bitte IMHO a bissl Bullshit ;-) (Du könntest auch die Leerzeichen durch Sonderzeichen ersetzen %20 glaub ich, aber lass es ;-)

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

    später kam die genauee erklärung: [...]

    Ist zwar IMHO eine Krücke, kann man machen wenn Du die Struktur der DB-Tabelle nicht ändern kannst/willst.

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

    Hmm, so wie Du das beschrieben hast passt es doch schon?

    $i = 1; //Initalisierung der Variable $i (könnte auch $id heissen)

    while($row = mysql_fetch_object($ergebnis))
      {
        $title = $row -> title;
        echo "<h1><a href=#"" . $i . "">" . $title . "</a><h1>\n";

    $i++; //Hier wird der Wert der Variable $i um 1 erhöht

    }

    Beachte meine Schreibweise beim echo(), das dient so IMHO gewaltig der Übersicht.

    Thx :-D

    Nix für ungut, aber ich glaube Du solltest Dich mal echt mit den Grundlagen von PHP auseinandersetzen. Denn die Probleme die Du geschildert hast sind Grundlagenwissen!
    Anstatt einem Buch kannst Du auch online schauen, meine drei Favoriten:

    -> http://de2.php.net/
       Die Bibel, auch von "alten Hasen" immer wieder gerne benutzt
    -> http://www.dclp-faq.de/index.html Die FAQ der deutschen Newsgroup
    -> http://tut.php-q.net/index.html IMHO eine für Anfänger sehr gut geschriebene Einführung, sollte für Dich auf jeden Fall mal Pflicht sein!

    Viel Spass & Grüsse
    AndreD

    1. Tag! :-)

      Nix für ungut, aber ich glaube Du solltest Dich mal echt mit den Grundlagen von PHP auseinandersetzen. Denn die Probleme die Du geschildert hast sind Grundlagenwissen!
      Anstatt einem Buch kannst Du auch online schauen, meine drei Favoriten:

      -> http://de2.php.net/
         Die Bibel, auch von "alten Hasen" immer wieder gerne benutzt
      -> http://www.dclp-faq.de/index.html Die FAQ der deutschen Newsgroup
      -> http://tut.php-q.net/index.html IMHO eine für Anfänger sehr gut geschriebene Einführung, sollte für Dich auf jeden Fall mal Pflicht sein!

      Nix für Ungut..ich weiß selbst das ich im Grunde mehr so ein noob bin, ich mach alerdings noch nich wirklich lang was mit php, da mir stumpfes lesen meist nach kurzer Zeit langweilig wird.

      Aber ich bin ja schon dabei und such mir Tut´s raus und versteh sie eigentlich recht gut.
      Nur dauerts bei so einem Thema ein wenig, und bis ich dann der Beste der besten bin, muss ich wohl euch noch ein wenig nerven. ;-)

      Gruss Micha

      --
      Wer sagt es geht nicht,
      soll bitte nicht den stören, der es gerade macht!
      1. Hallo Micha,

        Nix für Ungut..ich weiß selbst das ich im Grunde mehr so ein noob bin, ich mach alerdings noch nich wirklich lang was mit php, da mir stumpfes lesen meist nach kurzer Zeit langweilig wird.

        Sollte keine Anmache sein, ich denke aber das Du das auch nicht falsch verstanden hast ;-P
        Ich kann es Dir halt nur nahe legen das Du Dir _zuerst_ die rudimentären Kenntnisse einer jeden Programmiersprache verdeutlichst. Das sollte Dir gerade bei fremden Code wie phpnuke helfen zu _verstehen_ was der Code eigentlich macht.

        Aber ich bin ja schon dabei und such mir Tut´s raus und versteh sie eigentlich recht gut.

        Wenn Du Dich hauptsächlich an die drei Quellen die ich Dir geschrieben habe hälst ist das IMHO schon die halbe Miete :-)

        Nur dauerts bei so einem Thema ein wenig, und bis ich dann der Beste der besten bin, muss ich wohl euch noch ein wenig nerven. ;-)

        Richtig, PHP u.ä. lernt man nicht von heute auf morgen. Selbst wenn man die Grundlagen intus hat und ungefähr weiss was für Funktionen PHP bereitstellt. Es braucht halt immer noch ein wenig praktische Erfahrung um eine Problem zu analysieren und strukturiert anzugehen um es zu lösen.

        Grüsse AndreD

    2. Tag,

      mist, ich hab grad gesehen das ich euch den falschen source gegeben habe.. ich versuchs trotzdem mal einzubauen, und hier nochma der source:

      <?php

      if (eregi('block-newsflash.php',$PHP_SELF)) {
          Header('Location: index.php');
          die();
      }
      mysql_connect('localhost','**','**') or die
        ('Keine Verbindung moeglich');
        mysql_select_db('dhdusiw') or die ('Die Datenbank existiert
        nicht');
      $abfrage = 'SELECT title, sid FROM nuke_stories ORDER BY sid DESC LIMIT 10';
        $ergebnis = mysql_query($abfrage);
      while($row = mysql_fetch_object($ergebnis)) {
             $title = $row -> title;

      $content  .=  "<tr><td> <a href="#$title">$title</a></td></tr>\n";

      }

      ?>

      1. Hello,

        mist, ich hab grad gesehen das ich euch den falschen source gegeben habe.. ich versuchs trotzdem mal einzubauen, und hier nochma der source:

        Der Code ist eigentlich furzegal. Das Prinzip der künstlichen ID die innerhalb Deiner Schleife hochgezählt und mit ausgegeben wird bleibt das gleiche.

        Grüsse AndreD