• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Links trennen

maria1

Mitglied
Hy,

Ich muss mehrere links in eine spalte schreiben ..
Gibts es ne möglichkeit, die links die per leerzeichen getrennt sind beim INSERT mit zb einem | zu trennen und dieses dann als ende eines links zu definieren ?

Danke

DB Struktur

[TABLE="class: data ajax"]
[TR]
idtitlelinks
password[/TR]
[/TABLE]
 
Wenn deine Links schon URL-encoded sind und keine Leerzeichen mehr enthalten, dann ist das Leerzeichen ja als Trennzeichen schon geeignet. Das kannst natürlich durch jedes andere Sonderzeichen ersetzen, dass nicht in den Links vorkommt. Hast dir die Frage doch eigentlich selbst beantwortet. Ob es allerdings geschickt ist, Mehrfachwerte in einer Spalte und nicht als 1:n Relation zu modellieren, das ist eine andere Sache. So musst beim Auslesen immer wieder den Split machen und bei der exakten Suche nach einem Link diese in ein LIKE umsetzen und dann selbst das EQUAL (nach Split in der Ergebnismenge) testen
 
Okay danke versteh schon :)

Noch ne frage .

Das ist mein insert

PHP:
$sql_befehl = mysql_query("INSERT INTO `links`.`links` (`id`, `containerid`, `link`) VALUES (NULL, '$lastid', '".$_POST['links']."'); ");

keine angst ist nur local wegen der sicherheit :)

Die links werden ja in eine textarea eingegeben und dann in die DB eingetragen
Ich trage zuerst den title ein in eine tabelle namens container , dann hohl ich die last_insert_id , nehm diese und füg die links dann in die tabelle links ein . Containerid ist dann die last_insert_id.

Das heißt ich kann die links zum container zurweisen.

Meine frage nur, es wäre halt gut , wenn nun die links in der textarea getrennt werden bei nem leerzeichen (ende eines links) und jeder link in eine eigene spalte kommt mit der containerid natürlich ..
Das wäre doch viel besser oder ?
Nur wie bekomm ich das hin?
 
Ich denke, am einfachsten verwendest die split-Funktion und machst aus den Links ein Array. Dann brauchst eine weitere Tabelle für diese Links mit drei Spalten Id, Parent_ID, Link_Value. In die Parent_ID kommt deine $lastid als Verweis und in den Link_Value ein einziger Link. Dann hast du eine 1:n-Relation zwischen einer Eingabe-Id und den dort eingegebene n Links. Den Insert machst durch Loopen durch das Array.
 
Den ansatz habe ich auch schon versucht.

Also ich habs so:

PHP:
$links = split("[\n|;]",$links);print_r($links);

Ausgabe ist dann :

Array ( [0] => http://link1.de [1] => http://link2.de [2] => link3.de )


wenn ich nun das mache :

PHP:
print_r($links[0]);
bekomm ich die ausgabe aus array 0 .

Wie trage ich das nun in die db ein ?

muss ich jedem Array eine variable zuweisen also
PHP:
$link1= $links[0];
$link1= $links[1];

usw ?
 
Nein, $value enthält immer nur einen einzigen Link, die Schleife wird nur 3 Mal durchlaufen, jedes Mal wird ein anderer Link ausgegeben. Das könntest leicht sehen, wenn du außen $count=0 setzt und im foreach $count++ und dann $count im echo mit ausgibst.
PHP:
$count++;
echo "Value $count: $value<br />\n";

Statt echo musst in der Schleife nun das richtige INSERT für die Link-Details bilden (erst mal mit ECHO nur ausgeben) und mittels mysql_query einfügen (aber nur, falls trim($value) != "", könnten Leerzeilen oder Zeilen nur mit Leerzeichen drin sein).
 
Zuletzt bearbeitet:
EDIT: Es klappt :)

Aber das mit den | ist noch offen...

Also das
$links = split("[\|;]",$links);

Wie kann ich da ein leerzeichen definieren statt dem | ?


Danke danke danke !!!

EDIT:
Hmm

$links = Split($links, " ")

soltte doch klappen , tuts aber nicht,
In der DB ist der eintrag, alle links in einer spalte , leerzeichen wird aber in die DB mit eingetragen :(
 
Zuletzt bearbeitet:
Zurück
Oben