Mehrere Variablen in URL übergeben

GudrunS

Grünschnabel
Hallo,

ich bin ganz neu hier aber habe natürlich gleich eine Frage.

Ich habe eine Homepage gemacht, auf der ich meine überflüssigen Bücher verkaufen will. Bisher habe ich ein Link "Bestellen" gehabt, hinter dem einfach eine "mailto"-Verknüpfung war.
Jetzt möchte ich die Bestellung per Formular ermöglichen und da stolpere ich von einem Problem zum anderen. Aber keine Angst, ich möchte jetzt erst mal ein Problem lösen und dann schauen, ob ich die anderen nicht selbst in den Griff bekomme...

Mein php-Hintergrund ist leider nicht sehr groß.. Mein aktuelles Problem versuche ich seit 1 Woche mit Hilfe von Büchern (leider nicht sehr viele in der Bücherei vorhanden), Forenlesen und Google-Suchen zu lösen, komme aber nicht weiter.

Ich möchte gerne von der Buchbeschreibungsseite aus das Bestellformular aufrufen und die jeweiligen Buchdaten in das Formular übergeben.
Das Anhängen der Daten an die URL habe ich begriffen:
"bestellung.phtml?a=Autor&t=Titel&b=Buchnummer&p=Preis"

ABER: Bücher haben oft Umlaute und die will ich gerne aufgelöst übergeben.
Auf "rawurlencode" bzw. "urlencode" bin ich auch schon gestossen, aber da hänge ich jetzt auch fest.
Ich habe im Forum folgenden Artikel gefunden:
http://www.tutorials.de/forum/showthread.php?s=&threadid=148251&highlight=rawurlencode
und habe dann folgendes Skript gebastelt:

PHP:
<?PHP
$autor = "Hammerstein, Oliver von";
$titel = "Ich war ein Munie - Tageb&uuml;cher und Berichte einer Befreiung aus der Mun-Sekte";
$buchnr = "G-009";
$preis = "5,10 EUR";
$autor_encode = rawurlencode($autor);
$titel_encode = rawurlencode($titel);
$buchnr_encode = rawurlencode($buchnr);
$preis_encode = rawurlencode($preis);
echo "<a href="bestellung.phtml?a=' . $autor_encode . '&t=' . $titel_encode . '&b=' . $buchnr_encode . '&p=' . $preis_encode . '"><b>Bestellen</b></a>";
?>

Als Ergebnis bekomme ich aber leider keinen Link "Bestellen" sondern folgendes: Bestellen; ?> ohne Link.

Was mache ich falsch? Ich finde einfach keine Erklärung für das Verknüpfen mehrerer Variablen und "rawurlencode"

Ich bin für jede Hilfe dankbar...

Gruß
Gudrun
 
Zum einen stimmt deine Echo-Anweisung nur bedingt. Ändere diese bitte wie folgt ab:

PHP:
echo '<a href="bestellung.phtml?a=' . $autor_encode . '&t=' . $titel_encode . '&b=' . $buchnr_encode . '&p=' . $preis_encode . '"><b>Bestellen</b></a>';

Zum anderen – falls obige Änderung nicht das Problem behebt – soltlest du überprüfen, ob auf deinem Server .phtml-Seiten auch wirklich durch den PHP-Interpreter geparst werden.
 
Vielen Dank für Deine Hilfe, aber jetzt ist - egal ob ich die Datei .phtml oder .php benenne - die Tabellenzelle, in der "Bestellen" auftauchen soll, LEER.

Jetzt bin ich völlig ratlos.

Gruß
GudrunS
 
Wie sieht denn dein Script insgesamt aus?
Was steht denn bei der Ausgabe im HTML-Quelltext?
 
also prinzipiell:

a) wie ist dein script aufgebaut.
b) werden die variablen von einer auf eine andere seite übergeben oder folgen noch mehr seiten?
c) gibt es eine datenbank?
d) warum die variablen per url übergeben?
e) wie willst du die daten verarbeiten?
f) was soll nach der verarbeitung mit den daten geschehen?
usw. usw. usw..

etwas zu umlauten. wenn du html mal gelesen hast, ist sauberer html auch in bezug auf umlaute mit sondernzeichen zu versehen. beispiel:

ä = &auml;
Ä = &Auml;

wäre das dein problem und würdest du die daten nicht an die url anhängen, sondern in den üblichen formular-tags versehenen variablen verwenden, wäre das problem recht einfach gelöst.

es gibt einige tuts zu formularen und wie diese weiter verarbeitet werden können. und das dies nicht per google oder sonstigen tuts zu finden gewesen sei.........
 
Also, in der Datei, in der das Script steht (=Buchbeschreibungsseite) ist es das einzige Script und ich habe auch den gesamten Script-Text angegeben. Die Datei habe ich jetzt mal als Attachment drangehängt: g-009.txt

Was Du mit "Was steht denn bei der Ausgabe im HTML-Quelltext?" meinst, verstehe ich nicht ganz, da ich ja in der letzten Version keinen Link mehr habe, den ich anklicken kann und ich daher kein Ergebnis in "bestellung.phtml" habe.

Die Datei, die dann das Bestellformular enthält (bestellung.phtml) habe ich von meinem Provider übernommen, der eine Datei formmailer.phtml anbietet, und ich habe sie schon mal teilweise auf meine Bedürfnisse umgestellt. Da sind aber noch so viele Fehler drin, dass ich nicht mit gutem Gewissen empfehlen kann, sie sich anzusehen. (Außerdem kann man hier wohl nur eine Seite dranhängen)

Bin wie immer für jeden Hinweis dankbar.

Gruß
GudrunS
 

Anhänge

Hallo saila,

zu: a) wie ist dein script aufgebaut
Das Script, bzw. die Seite in der es drinen ist, habe ich an die vorige Antwort angehängt.

zu b) werden die variablen von einer auf eine andere seite übergeben oder folgen noch mehr seiten?
Die Variablen werden an "bestellung.phtml" übergeben und dienen dort dazu, das Buchbestellformular mit den Daten des bestellten Buches zu füttern.
Ich möchte nämlich nur ein Bestellformular haben. Dieses Bestellformular soll aber mir per Email die Buchdaten übermitteln, sonst weiß ich ja nicht, was bestellt wurde.

c) gibt es eine datenbank?
Nein, ich mache für jedes Buch eine eigene html-Seite und habe halt ein paar Übersichtsseiten.

d) warum die variablen per url übergeben?
Das hat mir ein Bekannter empfohlen, der aber von php soviel Ahnung hat wie ich...

e) wie willst du die daten verarbeiten?
Die Daten sollen in "bestellung.phtml" am Anfang des Bestellformulars auftauchen und danach auch noch in die Bestell-Email eingetragen werden (und wenn es ganz gut läuft auch noch in die Bestätigunsseite).
Damit habe ich auch noch meine Schwierigkeiten. Bei meinen ersten Versuchen - da übergebe ich die Variablen ohne "rawurlencode" - kommen die Variablen zwar in "bestellung.phtml" an, werden aber nicht an die Email weitergeleitet und tauchen auch nicht auf der Bestätigunsseite auf. Das wäre dann meine nächste Baustelle, die ich beackern muss.
Das ganze kann man sich übrigens hier anschauen:
http://www.diebuecherwuermer.de/test/
Man muss bei "Buchangebot" anfangen und landet dann bei dem individualisierten Bestellformular.
Und jetzt gebe ich meine ganze Unbedartheit frei und hänge auch noch die Bestelldatei als txt-Datei an...

Die Umlaute sind eigentlich in den Dateien sauber nach html-Codierungen geschrieben. Ich erstelle alle meine Dateien mit phase5. Reines html macht mir keine Schwierigkeiten, damit schreibe ich schon seit etlichen Jahren und habe mit diesen Seiten eigentlich noch nie Schwierigkeiten gehabt. Aber php ist Neuland für mich und ich gebe es ehrlich zu, dass ich mit den meisten Anleitungen Schwierigkeiten habe.

Mir ist jetzt zwischenzeitlich der Gedanke gekommen, ob ich die Buchdaten (Autor, Titel etc.) im Bestellformular so mit php eintragen kann, dass von dem Buchangebot über die URl, die das Bestellformular aufruft, nur die Buchnummer an das Bestellformular übergeben wird und dort dann über die Buchnummer die jeweiligen Variablen angesprochen werden können.
Ins Unreine gesprochen ungefähr so:
if $buchnr=G-009 dann fülle aus: a="Hammerstein, Oliver von"; t="Ich war ein Munie - Tagebücher und Berichte einer Befreiung aus der Mun-Sekte"; b=G-009; p=5,10 EUR
Aber da habe ich jetzt noch gar nicht recherchiert.

Ich hoffe, meine Erläuterungen sind nicht zu laienhaft und bedanke mich für die Gedult, die ihr mit mir habt.

Gruß
Gudrun
 

Anhänge

Original geschrieben von GudrunS
c) gibt es eine datenbank?
Nein, ich mache für jedes Buch eine eigene html-Seite und habe halt ein paar Übersichtsseiten.

(...)

Mir ist jetzt zwischenzeitlich der Gedanke gekommen, ob ich die Buchdaten (Autor, Titel etc.) im Bestellformular so mit php eintragen kann, dass von dem Buchangebot über die URl, die das Bestellformular aufruft, nur die Buchnummer an das Bestellformular übergeben wird und dort dann über die Buchnummer die jeweiligen Variablen angesprochen werden können.
Ins Unreine gesprochen ungefähr so:
if $buchnr=G-009 dann fülle aus: a="Hammerstein, Oliver von"; t="Ich war ein Munie - Tagebücher und Berichte einer Befreiung aus der Mun-Sekte"; b=G-009; p=5,10 EUR
Aber da habe ich jetzt noch gar nicht recherchiert.

Also, um Dir mal eine kleine Anregung zu geben:

Ich würde Dir empfehlen, eine Datenbank für alle Deine Bücher anzulegen. Zum einen brauchst Du da nicht für jedes Buch eine statische HTML-Seite bauen, zum anderen hast Du bei der Bestellung erhebliche Vorteile.

Das Prinzip dabei ist folgendes: Du legst jedes Buch als Eintrag in einer Datenbanktabelle ab. Dazu kannst Du ja noch alle Daten abspeichern, Die Du darstellen willst. Also beispielsweise ein Beschreibungstext, ein Bild, genau wie Du es jetzt bereits hast. Jedes Buch wird dabei mit einer einmaligen Nummer versehen, über die Du das Buch aus der Datenbank abfragen kannst.

Hast Du die Bücher in der Datenbank, kannst Du sie einfach gelistet ausgeben lassen (oder sogar nach besonderen Suchkriterien o.ä). Ein Link führt zu der Beschreibungsseite, welche Du allerdings ein einziges mal als HTML-Datei vorliegen haben musst. Die Daten für das jeweilige Buch kommen dabei aus der Datenbank, anhand von der Nummer, die über die URL mit übergeben wird. Auf der "Detailseite" machst Du, vereinfacht gesagt folgendes:

-> Datenbank: Gib mir alle Informationen zu einem Buch, wo die Nummer gleich 124 ist.

Wenn Du diese Abfrage an die Datenbank stellst, dann kannst Du auf der Seite alle Daten, die Du in der Datenbank zu dem Buch abgespeichert hast, anzeigen lassen. Will der Besucher nun das Buch bestellen, klickt er auf einen "Bestell"-Link, wo ebenfalls nur die ID zum Buch mitübergeben wird. Auf der Formularseite machst Du dann im Prinzip die gleiche Datenbankanfrage, damit Du die Daten im Formular ausgeben lassen kannst.

Du musst bedenken, wenn Du die Daten im Klartext über die URL auf die Formularseite weitergibst, sind sie veränderbar, sprich: der Besucher kann beispielsweise den Namen vom Buch ändern (ob jetzt beabsichtigt oder nicht sei mal dahingestellt). Du hast aber keinerlei Kontrolle darüber. Arbeitest Du mit einer Datenbank, kannst Du bei einer falschen Buch-Nummer eine entsprechende Fehlermeldung ausgeben lassen.

Ebenfalls hast Du den Vorteil, dass Du, sofern Du eine Datenbank verwendest, die Ausgabe auf mehrere Seiten verteilen kannst, anstatt alle Bücher auf eine Seite aufzulisten.

Also, wie Du siehst, spricht alles für eine Datenbank, vor allem bei so vielen Daten wir bei Dir. Das hört sich jetzt vielleicht, gerad für einen PHP-Anfänger, etwas kompliziert an, aber unmöglich ist das keineswegs ;) Es gibt ja schließlich noch das Forum *g*

Zum Schluss noch ein paar sehr nützliche Links, die auch sehr Anfängertauglich sind :)

http://tut.php-q.net/
http://www.schattenbaum.net/php/
 
Ein Problem gelöst...

Vielen Dank noch für die ganzen Hilfen.

Ich habe das Problem in der Urspungsdatei (=Buchseite) gelöst:
Ich Dubbel habe gestern in meinem Tran das PHP-Script in die .html-Datei und nicht in die .php-Datei eingebaut. Da kann es natürlich nicht tun...

Inzwischen habe ich das korrigiert und jetzt funktioniert dieses erste Script so wie es soll.

Meine anderen Probleme versuche ich erst mal selbst zu lösen, bevor ich wieder das Forum belästige.

Hallo Chino,

Du hast wahrscheinlich recht, dass eine Datenbanklösung vom Arbeitsaufwand geringer wäre. Aber ich habe die statischen html-Seiten mit Absicht genommen.
Wie ich in mehreren Mailinglisten von professionelen Buchverkäufern erfahren habe, werden von den Suchmaschinen - auf deren Indexierung man natürlich immer hofft - statische html-Seiten ausgewertet, dynamische aber nicht.
Am Anfang hatte ich z.B. 30 Bücher auf einer html-Seite und diese Seiten habe ich jetzt alle auf einzelne statische Seiten umgestellt, weil ich so die Möglichkeit habe, Autor und Titel im title-Tag unterzubringen und so die einzelnen Seiten ziemlich suchmaschinengerecht zu machen.
Der Arbeitsaufwand war auch am Anfang recht groß aber jetzt kommen ja nur noch die neu aufgenommenen Bücher dazu und ich habe mir die Angebotsseite wie ein Template hinterlegt, in das ich dann nur noch die relevanten Daten eintrage. Da hält sich der Aufwand in Grenzen.

Falls Du andere Infos über die Auswertung von Datenbanken durch Suchmaschinen hast, bin ich über jede neue Information dankbar.

Grüße
GudrunS
 
Zurück