Archiv verlassen und diese Seite im Standarddesign anzeigen : 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/bestellung.php?auftrag=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.
so, dieses Script bastelt Dir eine Links.htm, in der die Links in Deinem Format untereinander ausgegeben werden.
<?
//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.
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 :(
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.
//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
RewriteEngine On
RewriteRule ^([0-9]+)_([0-9]+)\.htm$ bestellung.php?auftrag=$1&artikel=$2
Die habe ich aus eine Zeitschrift
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
while ($x = mysql_fetch_array ($result)
und so muß sie sein damit es läuft, hatte am Ende eine runde Klammer zu vergessen
while ($x = mysql_fetch_array ($result))
jetzt sollte es aber laufen
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 :teach:
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.
// Aufträge und Artikel selektieren
$sql="select * from testtabelle where artikel <> 16";
bzw. falls die Artikel-Spalte ein char()-Feld ist
// Aufträge und Artikel selektieren
$sql="select * from testtabelle where artikel <> '16'";
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. :dontknow:
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.
Original geschrieben von P2oldi
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 :(
kannst ja den hacken bei URLs automatisch umwandeln raus machen... :D
Original geschrieben von Abraxax
kannst ja den hacken bei URLs automatisch umwandeln raus machen... :D
öööhm....stotter....rotwerd... guter Tip :D
Original geschrieben von P2oldi
öööhm....stotter....rotwerd... guter Tip :D
jeder tag, an dem man was lernt, ist ein guter tag ..... :)
|
-
- |