Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Aus SQL zwei Spalten auslesen und als Link in HTML schreiben [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Aus SQL zwei Spalten auslesen und als Link in HTML schreiben


 
Ninn
23-01-2003, 19:50 
 
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.

 
P2oldi
24-01-2003, 09:36 
 
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 :(

 
Ninn
24-01-2003, 18:04 
 
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

 
P2oldi
25-01-2003, 14:13 
 
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

 
Ninn
26-01-2003, 22:33 
 
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:

 
Ninn
10-02-2003, 21:30 
 
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.

 
P2oldi
10-02-2003, 23:24 
 
// 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'";

 
Ninn
10-02-2003, 23:36 
 
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:

 
P2oldi
11-02-2003, 09:29 
 
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.

 
Abraxax
12-02-2003, 12:12 
 
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

 
P2oldi
12-02-2003, 14:26 
 
Original geschrieben von Abraxax
kannst ja den hacken bei URLs automatisch umwandeln raus machen... :D

öööhm....stotter....rotwerd... guter Tip :D

 
Abraxax
12-02-2003, 17:25 
 
Original geschrieben von P2oldi
öööhm....stotter....rotwerd... guter Tip :D

jeder tag, an dem man was lernt, ist ein guter tag ..... :)

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:14 Uhr.