Aus SQL zwei Spalten auslesen und als Link in HTML schreiben

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Aus SQL zwei Spalten auslesen und als Link in HTML schreiben

    Hallo,

    wer kann mir ein kleines PHP-Script schreiben. Für einen der Ahnung davon hat, sicherlich kein Problem.

    Was soll das Script machen.

    1.) Natürlich zuerst die Datenbank öffnen
    2.) Aus der Tabelle "testtabelle" die Spalten "auftag" und "artikel" auslesen.

    Beispiel:

    auftag | artikel
    --------------------------------------
    22 | 8
    326 | 8
    234 | 25
    456 | 12

    3.) Die ausgelesenen Daten als Link in eine HTML-Datei (links.htm) schreiben, diese sollte dann so ausehen:

    http://www.meineadresse.de/22_8.htm
    http://www.meineadresse.de/326_8.htm
    http://www.meineadresse.de/234_25.htm
    http://www.meineadresse.de/456_12.htm

    Also immer ..../auftrag_artikel.htm

    Hindergrund:
    Die URLs nach dem Format
    http://www.meineadresse.de/bestellun...g=22?artikel=8
    werden von Suchmaschinen wie Google meist nicht durchsucht und in den Index aufgenommen.

    Ich habe es mit Hilfe des Apache-Moduls "mod_rewrite" so eingestellt das die Seiten auch mit der URL
    http://www.meineadresse.de/22_8.htm
    aufgerufen werden können. Nun will ich eine HTML mit allen gültigen URLs zu den Unterseiten der Homepage generieren die von den Robots durchsucht werden kann und dann auch den Inhalt aller Unterseiten in den Index aufnimmt.

    Wenn dafür jemand eine bessere Lösung hat, bitte melden.
    Zuletzt geändert von Ninn; 24.01.2003, 18:11.

  • #2
    so, dieses Script bastelt Dir eine Links.htm, in der die Links in Deinem Format untereinander ausgegeben werden.

    PHP-Code:
    <?
    //verbindung zur Datenbank herstellen
    $dblink =mysql_connect ("hostname","username","passwort");
    $select_db=mysql_select_db ("dbname",$dblink);

    // Aufträge und Artikel selektieren
    $sql="select * from testtabelle";
    $result = mysql_query($sql);

    //Links.htm erstellen und zum Schreiben öffnen
    touch ("Links.htm");
    $datei=fopen("Links.htm", "w");

    //Anfangs-Tags schreiben
    $htmheader="<html><body>";
    fputs($datei, $htmheader);

    //Links generieren
    while ($x = mysql_fetch_array ($result)
    {
      $link = "<a href='http://www.deineseite.de/".$x[auftrag]."_".$x[artikel].".htm'>h.t.t.p://www.deineseite.de/".$x[auftrag]."_".$x[artikel].".htm<br>";
      fputs($datei, $link);
    }

    //Ende-Tags schreiben
    $htmfooter="</body></html>";
    fputs($datei, $htmfooter);

    //Datei schließen
    fclose($datei);
    ?>
    Hoffe das war, was Du haben wolltest.

    EDIT:
    Nicht wunder wegen der "." im http, da wo der Link zusammengebaut wird, mußte sein, da das Forum sonst immer versucht das automatisch als Links einzubauen
    Zuletzt geändert von P2oldi; 24.01.2003, 09:43.

    Kommentar


    • #3
      Hallo P2oldi,

      vielen Dank, das sieht (bei meinen wenigen PHP Kenntnissen) sehr gut aus, ganau das was ich will.

      Allerdings bekomme ich beim ausführen des Scripts einen "parse error" in der Zeile mit der Spitzklammer AUF.

      PHP-Code:
      //Links generieren
      while ($x mysql_fetch_array ($result)
      {
        
      $link "<a href='http://www.deineseite.de/".$x[auftrag]."_".$x[artikel].".htm'>h.t.t.p://www.deineseite.de/".$x[auftrag]."_".$x[artikel].".htm<br>";
        
      fputs($datei$link);

      Also hier Zeile 3
      Ich habe schon versucht die 2 Zeile mit einem ";" abzuschliessen (ist doch meistens so) dann bekomme ich aber den "parse error" für diese Zeile.

      Für'n kleinen Tipp woran das liegt, wäre ich sehr Dankbar.


      Noch ne Frage:
      Kennt jemand eine deutsche Anleitung für "mod_rewrite", oder hat einen Tipp dazu für mich.
      Eigentlich (habe ich gelesen) sollten bei richtiger Anwendung von "mod_rewrite" alle Links direkt in der per PHP generierten Homepage in das neue Format umgewandelt werden.
      Bei mir funktionieren zwar jetzt die alternativen URLs, auf der Homepage wird aber noch immer per URL mit "?" verlinkt.
      Wenn das so funktionieren würde, könnten die Spider ja direkt auch die Unterseiten durchsuchen, der Umweg über diese "links.htm" wäre dann unnötig.

      Hier meine .htaccess
      PHP-Code:
      RewriteEngine On
      RewriteRule 
      ^([0-9]+)_([0-9]+)\.htmbestellung.php?auftrag=$1&artikel=$
      Die habe ich aus eine Zeitschrift

      Kommentar


      • #4
        parse-error ist kein Wunder *schäm*

        der tritt soweit ich weiß, immer in der Zeile VOR der genannten auf, in diesem Fall auch. Mit der geschweiften Klammer auf ist alles in ordnung, aber in der zeile davor liegt der Fehler

        so ist sie bis jetzt, fehlerhaft
        PHP-Code:
        while ($x mysql_fetch_array ($result
        und so muß sie sein damit es läuft, hatte am Ende eine runde Klammer zu vergessen
        PHP-Code:
        while ($x mysql_fetch_array ($result)) 
        jetzt sollte es aber laufen

        Kommentar


        • #5
          1000 Dank,

          jetzt funktioniert es prima, genau wie ich es wollte.
          Und wieder habe ich etwas dazugelernt.
          Da hätte ich aber auch sekbst drauf kommen müssen, ist ja wie bei Mathe 2 Klammern auf = 2 Klammern zu

          Kommentar


          • #6
            Noch eine kurze Frage dazu.
            Eine Artikelnummer ist versteckt und nur bestimmten Leuten zugänglich. In der Liste aller Links sind aber nun auch diese dabei und über den Link auch für diejenigen erreichbar die da eigentlich keine Berechtigung haben.

            Was muß in das Script eingefügt werden das alle Seiten mit Artikelnummer 16 in der HTML nicht erscheinen, es darf also kein Link wie

            http://www.meineadresse.de/123_16.htm oder
            http://www.meineadresse.de/326_16.htm

            geben.

            Kommentar


            • #7
              PHP-Code:
              // Aufträge und Artikel selektieren
              $sql="select * from testtabelle where artikel <> 16"
              bzw. falls die Artikel-Spalte ein char()-Feld ist
              PHP-Code:
              // Aufträge und Artikel selektieren
              $sql="select * from testtabelle where artikel <> '16'"

              Kommentar


              • #8
                Vielen Dank,

                war zwar inzwischen selbst darauf gekommen, habe mich in ein PHP Tudorial eingelesen und bin dann auf <> = ungleich gekommen.

                Sollte vielleicht nicht so schnell alles hier fragen und eher versuchen die Sache selbst zu lernen.

                Kommentar


                • #9
                  das wird Dir auf jeden Fall im Endeffekt weiterhelfen... weil beim Fragen lernst Du nichts (oder wenig ). Wenn Du aber ein Problem hast und versuchst Dich in das Thema einzulesen, stößt Du vielleicht auch noch über andere nützliche Sachen Ist zwar zeitaufwendiger, bringt aber mehr. Und wenn alles läuft, kann man immernoch fragen, ob es Optimierungsmöglichkeiten / -bedarf gibt.

                  Kommentar


                  • #10
                    Original geschrieben von P2oldi
                    EDIT:
                    Nicht wunder wegen der "." im http, da wo der Link zusammengebaut wird, mußte sein, da das Forum sonst immer versucht das automatisch als Links einzubauen
                    OffTopic:
                    kannst ja den hacken bei URLs automatisch umwandeln raus machen...
                    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                    Kommentar


                    • #11
                      Original geschrieben von Abraxax
                      OffTopic:
                      kannst ja den hacken bei URLs automatisch umwandeln raus machen...
                      öööhm....stotter....rotwerd... guter Tip

                      Kommentar


                      • #12
                        Original geschrieben von P2oldi
                        öööhm....stotter....rotwerd... guter Tip
                        jeder tag, an dem man was lernt, ist ein guter tag .....
                        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                        Kommentar

                        Lädt...
                        X