PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Link in MySQL schreiben und lesen



sowatt
27-05-2002, 10:34
Hallo,
ich habe folgendes Problem:
ich bekomme aus einem Formular mehrere Variablen in ein Skript
übermittelt, u.a. einen String aus einem Textfeld und einem Hiddenfield
und eine Int aus einem Radiobutton.Nun möchte ich in dem empfangenden
Skript aus diesen Variablen einen Link basteln den ich in eine MySQL DB schreiben kann und später wieder auslesen kann.Der Text der aus dem Textfeld kommt
soll der Link werden plus der Variablen aus dem Hiddenfield und dem Radiobutton.
Da ich noch recht neu bin was PHP angeht , würdet ihr mir sehr helfen
wenn mir jemand die Syntax erklären könnte.
Gesucht habe ich schon reichlich,aber nix passendes gefunden (bin wohl zu
blöd das richtige zu finden und zu kapieren).

ich hoffe das alles halbwegs verständlich geschildert zu haben.

Vielen Dank , schon einmal....

Many Greetz
sowatt

elrond
27-05-2002, 11:38
versuch's so:

global $QUERY_STRING;

$link="seite.php?".$QUERY_STRING;

in $QUERY_STRING steht die gesamte Parameterliste drin, so dass du dich nicht mit einzelnen felder rumschlaagen musst.

wenn du nur einige Felder in die url übernehmen willst solltest du einfach die url als string zusammenbauen => <varname>=<varwert>. Die übergebenen werte solltest du mit urlencode() behandeln. das erspart probleme beim aufruf, wenn die url ungültige zeichen entahlten sollte. z.B. $link=$link."textinurl=".urlencode($textausform)

:cool:

sowatt
27-05-2002, 12:34
hi elrond,

das zeigt mir schmerzlich auf wie wenig Ahnung ich von PHP habe.
Ich verstehe nix von dem was du mir erklären willst.
Tut mir echt leid!
Ich kann mir echt nicht denken wie ich das in eine Insert Anweisung
bekommen soll.
Vieleicht hast Du das ja mal ,für einen ganz Dummen , in einfachen Worten?

Trotzdem vielen Dank.
Many Greetz
sowatt

elrond
27-05-2002, 13:18
ich versuch's:

Deine Seite heisst "test.php" und wird mit folgendem Link aufgerufen:
"http://www.deinserver.de/test/test.php?var1=rot&var2=blau&var3=gelb"
in Test.php hast du jetzt die variabeln var1...var3 zur verfügung.

Wenn Du einfach den gesamten link in die DB schreiben willst kannst du einfach folgendes tun:


global $PHP_SELF; #$PHP_SELF=>"http://www.deinserver.de/test/test.php"
global $QUERY_STRING; #$QUERY_STRING=>"var1=rot&var2=blau&var3=gelb"

$link=urlencode($PHP_SELF."?".$QUERY_STRING);


willst Du nur einzelne Variabeln haben bzw einen neuen link zusammenbauen geht bsp. das so:



$link=urlencode("http://www.deinserver.de/test/testneu.php?var1=$var1&action=start");


das insert in die db ist dann einfach:



$sql="insert into linktab(url) values(\"$link\")


besser ??
wenn nicht frag ruhig weiter...

sowatt
27-05-2002, 13:44
Super, das soll sogar ich verstehen, hoffe ich.

Also erstmal probieren (wegen lernen) und wenn gar nichts geht
dann frage ich nochmal.

Vielen Dank für deine Mühe

Many Greetz
sowatt

sowatt
27-05-2002, 14:29
Ich nochmal,

also was ich nicht ganz verstehe ist wie ich den String den ich aus dem Formular
bekomme , zu einem Link mache.
Die Sache ist die das ich einen ganz normalen Satz,eine Überschrift, aus
dem Textfeld bekomme.An diesen Text muss ich nun eine ID und eine Nummer
anhängen.Denn das ganze soll auf ein Template verweisen welches dann,
Dank der ID und des Tabellennamens in der DB, den richtigen Eintrag aus der
Tabelle "fischt".Der Link würde in HTML folgendermaßen aussehen:
<a href="template4.php?id=50&layout=3">Dies ist die Überschrift aus dem Formular</a>.
Diese Links landen auf einer Seite die nur die Links darstellt und von da
aus geht der Link zu einer Seite die dann dank der Infos im Link
die richtigen Inhalte aus der DB holt.

Wenns nicht zu sehr nervt, wäre ich sehr dankbar wenn nochmal ein Tip
kommt.
Vielen Dank
Greetz
sowatt

elrond
27-05-2002, 14:44
hai,

ich bin nicht sicher, ob ich dich richtig verstehe...

falls dein problem ist, dass du an den text "Dies ist die Überschrift aus dem Formular" nicht rankommst, musst du den HTML-Link entsprechend anpassen



$linktext="Dies ist die Überschrift aus dem Formular";
$link="<a href=\"template4.php?id=50&layout=3&headline".urlencode($linktext)."\">$linktext</a>";

echo $link;


in template4.php kommt dann auch der text ($linktext) an...

Wenn das nicht reicht, pack mir doch eine zip-datei mit den dateien zusammen und häng sie an deine antwort...

sowatt
27-05-2002, 15:21
Hi Elrond,
dann will ich das mal gezippt dazupacken.

Ist das Formular und das Skript das den Eintrag,nach aufbereitung
der Variablen,in die DB machen soll.

Also, nochmal vielen dank für deine Geduld und Mühe die Du
Dir machst.


Many Greetz
sowatt

elrond
27-05-2002, 15:55
:confused:
Du verwendest in der Datei upload_falz_form.php
zum Start der form <form name="uploadfalz" method="get" action="test.php" enctype="multipart/form-data" >. Ich habe leider keine ahnung wofür enctype="multipart/form-data" gut ist... wenn du es rausnimmst, hast du auf der aufgerufenen seite auch alle felder/variabeln zur verfügung...

ich verwende das bisher nicht und hab auch auf die Schnelle nichts dazu gefunden.

beim schreiben in die db macht urlencode() trotzdem sinn...
if ($OK == true){
$eintrag = sql_ausfuehren("INSERT INTO falzdach(ID,Link,Textsmall,Bild,Textbig,LayoutNR)".
"VALUES('".$eintragnr."' , '".urlencode($html_link)."' , '".$text1."' , '".$pic."' , '".$text2."' , '".$layout."')");
mysql_close();
}


ps: mit welchem editor arbeitest du? wird enctype="multipart/form-data" vielleicht per default gesetzt?

sowatt
27-05-2002, 16:07
hi,
das mit dem enctype ist doch für den Dateiupload,
ich muss doch auch ein Bild in in die DB schieben.
Das macht also nicht der Glimmer sondern das stand
bei Münz im SELF_HTML das man das für den Dateiupload braucht.

greetz
sowatt

elrond
27-05-2002, 16:35
ich habs mir noch mal angesehen:
folgendes funxt:


in upload_falz_form.php

<form name="uploadfalz" method="post" action="upload_falz_check.php" enctype="multipart/form-data">
<table align="center" width="500" bgcolor="#88C8C8">
.
.
.
.
</table>
</form>

(ich habe action angepasst, sonst nichts)


in upload_falz_check.php



<?php
// Hier eventuelle Leerzeichen in den Strings entfernen.
$linker = trim($linker);
$text1 = trim($text1);
$text2 = trim($text2);

// Hier die letzte ID in der DB checken und dann mit der for-Schleife raufzählen.

// Hier die Variablen aufbereiten,damit sie in der DB zu gebrauchen sind.


// Jetzt checken welche Variablen gesetzt sind.
$OK = true;
if (!isset($layout)){
echo ("<b>Sie haben kein Template-Layout ausgewaehlt</b><br>\n");
$OK = false;
echo ( "<B>Bitte benutzen Sie den Backbutton Ihres Browsers, damit Ihre Einträge erhalten bleiben.<\B><br>\n" );
exit;
}
if (!isset($linker)){
echo ("<b>Sie haben keinen Link eingetragen.</b><br>\n");
$OK = false;
echo ( "<B>Bitte benutzen Sie den Backbutton Ihres Browsers, damit Ihre Einträge erhalten bleiben.<\B><br>\n" );
exit;
}
if (!isset($text1)){
echo ("<b>Sie haben keinen Kurztext eingetragen.</b><br>\n");
$OK = false;
echo ( "<B>Bitte benutzen Sie den Backbutton Ihres Browsers, damit Ihre Einträge erhalten bleiben.</B><br>\n" );
exit;
}
if (!isset($text2)){
echo ("<b>Sie haben keine Beschreibung eingetragen.</b><br>\n");
$OK = false;
echo ( "<B>Bitte benutzen Sie den Backbutton Ihres Browsers, damit Ihre Einträge erhalten bleiben.</B><br>\n" );
exit;
}
if ($OK == true){
$eintrag = "INSERT INTO falzdach(ID,Link,Textsmall,Bild,Textbig,LayoutNR)".
"VALUES('".$eintragnr."' , '".urlencode($linker)."' , '".$text1."' , '".$pic."' , '".$text2."' , '".$layout."')";
echo $eintrag;
}




?>


ich sehe dann ein sql-statement, das ok ist...

INSERT INTO falzdach(ID,Link,Textsmall,Bild,Textbig,LayoutNR)V ALUES('' , 'www.testlink.de%2Ftest%2Ftest.php%3Fid%3D14%26lay out%3D22' , 'das ist der kurze
text' , '/tmp/phpfVOl6I' , 'das ist der lange text' , '3')

zu dem upload: an der stelle wird ein temp-filename erzeugt. die datei muss dann noch irgendwohinm kopiert werden und einen vernünftigen namen kriegen; am besten VOR dem schreiben in die db

sowatt
28-05-2002, 01:13
hi,

super, nun habe ich das ausprobiert und es funzt.

vielen dank nochmal.......

many greetz
sowatt