Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

Hilfe, versuche array values zu splitten - Kompliziert!

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
marc
PostRank 4
PostRank 4
Beiträge: 191
Registriert: 07.11.2005, 23:22

Beitrag von marc » 16.07.2009, 12:54

Hi,

sitze schon seit Tagen an ein und dem selben Problem und ich finde einfach keine Lösung dafür, ich hab mich schon halb totgesucht und auch schon soviele sachen gestestet das ich jetzt einfach mal versuche ob ich hier eine gute Seele finde die mir weiterhelfen kann :lol:


Ich bastel mir gerade ein Program wo ich aus mehreren Textareas einen array erstelle, die Values müssen aber nach Kategorien und Themenzugehörigkeit geordnet sein.

Kurze Erklärung:

Ich lese Keywords aus meiner Datenbank aus, diese Keywords stehen in einem Input Feld:

Code: Alles auswählen

<input type="text" id="<?php echo $i; ?>_keyword" name="keywordGer&#91;&#93;" style="width&#58;450px" value="<?php echo trim&#40;preg_replace&#40;'/\ss\s/', '\'s ', preg_replace&#40;'/\s\s+/', ' ', preg_replace&#40;'/&#91;^\w\344\366\374\304\326\334\337?&&#93;/i'," ", $d&#91;''.$row&#91;'db_keyword_field_ger'&#93;.''&#93;&#41;&#41;&#41;&#41;; ?>" onKeyDown="charCount&#40;'keyword', <?=$i?>&#41;" onKeyUp="charCount&#40;'keyword', <?=$i?>&#41;" />

      <div width="221px" style="float&#58;left;margin-left&#58;2px;margin-right&#58;2px;">Additional ways of spelling&#58;
            <br />
               <textarea cols="27" rows="3" name="additionalSpellingGer&#91;<?php echo $d&#91;''.$row&#91;'db_keyword_category_id_field'&#93;.''&#93;; ?>&#93;&#91;&#93;" id="additionalSpelling_<?php echo $i; ?>"></textarea>
Die Textarea darunter ist für zusätzliche Schreibweisen des Haupt-Keywords im Input Feld gedacht.

also so:

Code: Alles auswählen

input&#58; 
mainkeyword
Textarea&#58;
zusatzwort 1
zusatzwort 2
zusatzwort 3
usw.
Es können mehrere hundert Input Felder und Textareas sein aus denen ich diese Infos hole, jede Textarea kann natürlich auch unterschiedlich viele Zusatzkeywords enthalten, jenachdem wieviele hinein gepastet werden. Es macht also keinen Sinn für jedes Input und Textarea Feld eine eigene Variable zu erstellen...

Daher benutze ich einfach die square brackets nach dem Feldnamen

Code: Alles auswählen

additionalSpellingGer&#91;<?php echo $d&#91;''.$row&#91;'db_keyword_category_id_field'&#93;.''&#93;; ?>&#93;&#91;&#93;" 

Nun ordne ich diesem Array eine Variable zu

Code: Alles auswählen

$additionalSpellingGer = $_REQUEST&#91;'additionalSpellingGer'&#93;;

Und nun im nächsten Schritt möchte ich gerne einen Loop über den Array laufen lassen und die Array Values sortiert nach 1. Kategorie und 2. dem Thema des Input Feldes zu dem die Textarea gehört, ausgeben.

Also wenn die ursprünglichen Feld Infos in Step 1 so ausgesehen haben:

Code: Alles auswählen

Input Feld 1&#58;
Harry Potter
Textarea 1&#58;
Harry Potter Hogwarts
Harry Potter Buch
Harry Potter Bilder

Input Feld 2&#58;
Michael Jackson
Textarea 2&#58;
Bad
Moonwalk
Michael Jackson Dance
Möchte ich Daten so ausgeben:

Harry Potter
Harry Potter Hogwarts
Harry Potter Buch
Harry Potter Bilder


Michael Jackson
Bad
Moonwalk
Michael Jackson Dance


Der Array der erstellt wird sieht aber leider so aus: (Es klappt alles, bis auf die Tatsache das die Zusatzkeywords aus den Textareas alle zusammen als ein Wert in den Array geschrieben werden und nicht einzeln Linie für Linie)

Code: Alles auswählen

Array &#40;
&#91;1&#93; => Array &#40;
      &#91;0&#93; => line_1 line_2 &#40;category 1, topic1&#41;
      &#91;1&#93; => line_1 line_2 &#40;category 1, topic 2&#41;
      &#91;2&#93; => line_1 line_2 &#40;category 1, topic 3&#41;
      Array &#40;
      &#91;0&#93; => line_1 line_2 &#40;category 2, topic 4&#41;
      &#91;1&#93; => line_1 line_2 &#40;category 2, topic 5&#41;
       &#41; &#41;
Was muss ich machen um das oben beschriebene Ergebniss zu erhalten?
Ich bin für alle Kommentare dankbar die mich in die richtige Richtung bringen, über Beiträge mit Code würde ich mich vielleicht sogar noch mehr freuen :P


Vielen Dank schonmal für eure Hilfe.

Marc

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Liu
PostRank 1
PostRank 1
Beiträge: 3
Registriert: 16.04.2009, 10:49

Beitrag von Liu » 16.07.2009, 13:58

Ich bin mir nicht ganz sicher, ob dir das weiterhilft, aber die einzelnen Zeilen eines Textareas kriegst du mit einem einfachen explode in ein array:

Code: Alles auswählen

$array = explode&#40;'<br />', nl2br&#40;$var&#41;&#41;

marc
PostRank 4
PostRank 4
Beiträge: 191
Registriert: 07.11.2005, 23:22

Beitrag von marc » 16.07.2009, 14:03

Hey, danke für die Antwort. Explode geht leider nicht da die variable $additionalSpellingGer = $_REQUEST['additionalSpellingGer']; ja schon ein array ist...

Ich übergebe die Daten aus den ganzen Textareas ja mit eckigen Klammern nach dem namen, also so: <input type="text" name="additionalSpellingGer[kategorie_id]">

Und das widerrum muss ich denke ich so machen, da ich ja hunderte von verschiedenen textareas und inputs dynamisch erzeuge, also keine fixen namen bzw. Variablen verwenden kann, so das ich die Variable erst explode und dann den array erzeuge...

Wüsste keine Möglichkeit wie ich den array der dadurch ja schon entsteht hinterher nochmal exploden soll? Aber das heisst ja nich das es nicht möglich ist, falls du weisst wie es geht bitte posten :)



Also, ich denke eigentlich langt es aus wenn mir einer diese Grundfrage beantworten kann, ohne sich den ganzen Text oben durchlesen zu müssen:

Wie kann ich eine Textarea Linie für Linie in einen Array einlesen wenn die Textarea mit eckigen Klammern im Name Feld übergeben wird?!

mgutt
PostRank 10
PostRank 10
Beiträge: 3206
Registriert: 08.03.2005, 13:13

Beitrag von mgutt » 16.07.2009, 14:16

Mach doch einfach sowas:

Code: Alles auswählen

<input name="keywords&#91;$i&#93;&#91;'mainkw'&#93;" />
<textarea name="keywords&#91;$i&#93;&#91;'aliaskw'&#93;"></textarea>
$i übergibst Du per PHP. Nach jedem Set zählst Du dann hoch mit $i++;

in PHP kannst Du dann folgendes machen:

Code: Alles auswählen

foreach &#40;$_POST&#91;'keywords'&#93; as $k => $v&#41; &#123;
  $mainkw = $v&#91;'mainkw'&#93;;
  $aliaskw = $v&#91;'aliaskw'&#93;;
Danach behandelst Du $aliaskw mit explode usw.

P.S. Gewöhn Dir ab POST und GET wieder Variablen zuzuweisen. Im Endeffekt verdoppelst Du damit einfach nur den Arbeitsspeicherverbrauch.
Ich kaufe Dein Forum!
Kontaktdaten

marc
PostRank 4
PostRank 4
Beiträge: 191
Registriert: 07.11.2005, 23:22

Beitrag von marc » 16.07.2009, 16:09

Danke für den Tipp mit den Variablen, ich möchte mir sowieso einen saubereren Programmierstil angewöhnen da kam dieser Tipp zur rechten Zeit ;o)

Aber so wie du das schreibst:

Code: Alles auswählen

<input name="keywords&#91;$i&#93;&#91;'mainkw'&#93;" />
<textarea name="keywords&#91;$i&#93;&#91;'aliaskw'&#93;"></textarea>

foreach &#40;$_POST&#91;'keywords'&#93; as $k => $v&#41; &#123;
  $mainkw = $v&#91;'mainkw'&#93;;
  $aliaskw = $v&#91;'aliaskw'&#93;;
wird das was ich meine doch auch nix?!

Weil doch in der Textarea mehrere Linien stehen, nicht nur eine...
Da blicke ich noch nicht so ganz durch


*edit*

Jupp getestet, wird leider auch nix. Ich muss ja jede linie der textarea auslesen und zu den $v['aliaskw'] hinzufügen, gruppiert nach dem $v['mainkw'];

Meine Güte, wie mach ich das bloss? :naund:

Liu
PostRank 1
PostRank 1
Beiträge: 3
Registriert: 16.04.2009, 10:49

Beitrag von Liu » 17.07.2009, 05:54

Du kannst zum einen mit dem explode $v['aliaskw'] in einen Array verwandeln und einfach die Weiterverarbeitung des array etwas anpassen.

Oder du machst so etwas:

Code: Alles auswählen

$i = 0;
$array = explode&#40;'<br />', nl2br&#40;$v&#91;'aliaskw'&#93;&#41;&#41;;
foreach &#40;$array as $row&#41; &#123; 
$v&#91;'aliaskw'.$i&#93; = $array&#91;$i&#93;
$i++;
&#125;

mgutt
PostRank 10
PostRank 10
Beiträge: 3206
Registriert: 08.03.2005, 13:13

Beitrag von mgutt » 17.07.2009, 13:29

Ich bin davon ausgegangen, dass Du damit selber weiter kommst ;)

Was Liu schreibt, wäre die "Lösung". Ist eben die Frage, was Du mit den Werten machen willst.

Du kannst ja auch das machen:

Code: Alles auswählen

foreach &#40;$_POST&#91;'keywords'&#93; as $k => $v&#41; &#123; 
  $kw&#91; $v&#91;'mainkw'&#93; &#93; = explode&#40;'<br />', nl2br&#40;$v&#91;'aliaskw'&#93;&#41;&#41;;
&#125;
Dann wäre Dein Array $kw so aufgebaut:

Code: Alles auswählen

array&#40;
  &#91;MAIN_KW1&#93; => array&#40;
    &#91;0&#93; => ALIAS_KW1
    &#91;1&#93; => ALIAS_KW2
  &#41;,
  &#91;MAIN_KW2&#93; => array&#40;
    &#91;0&#93; => ALIAS_KW1
    &#91;1&#93; => ALIAS_KW2
    &#91;2&#93; => ALIAS_KW3
  &#41;,
&#41;
Ist eben die Frage, wie Du Dein Ergebnis brauchst, so bastelst Du es Dir eben zurecht.
Ich kaufe Dein Forum!
Kontaktdaten

Outman
PostRank 6
PostRank 6
Beiträge: 394
Registriert: 03.12.2004, 22:55
Wohnort: Orlamünde

Beitrag von Outman » 17.07.2009, 13:55

Hallo,

wenn ich es richtig verstanden habe, möchte marc doch nur ein Mehrdimensonales Array Sortieren, oder?


Dazu findest Du unter https://www.php-space.info/php/space/ar ... tieren.php eine Anleitung wie man dies macht.

Grüße Nico
Webhosting Partnerprogramm mit 2 Refebenen, PHP Webspace mit .de Domain ab 2 Euro, Zusätzlich suche ich Linkpartner zum Thema "Webmaster". Suchst du einem PHP Programmierer?

mgutt
PostRank 10
PostRank 10
Beiträge: 3206
Registriert: 08.03.2005, 13:13

Beitrag von mgutt » 17.07.2009, 14:08

Wo liest Du das denn :P
Ich kaufe Dein Forum!
Kontaktdaten

Outman
PostRank 6
PostRank 6
Beiträge: 394
Registriert: 03.12.2004, 22:55
Wohnort: Orlamünde

Beitrag von Outman » 17.07.2009, 14:14

ohne worte :)
Webhosting Partnerprogramm mit 2 Refebenen, PHP Webspace mit .de Domain ab 2 Euro, Zusätzlich suche ich Linkpartner zum Thema "Webmaster". Suchst du einem PHP Programmierer?

marc
PostRank 4
PostRank 4
Beiträge: 191
Registriert: 07.11.2005, 23:22

Beitrag von marc » 18.07.2009, 03:43

Danke Leute,

das hat mir jetzt schon weitergeholfen. Hatte vorher noch nie mit Arrays gearbeitet und war ziemlich verwirrt , jetzt funktioniert aber alles so wie ich es haben möchte. :D

Hatte nicht so ganz verstanden wie ich es anstelle das ich die Daten die ja in einem Array gesendet werden, dann exploded werden sollen und gleich wieder in einen Array gesteckt werden, bearbeiten soll.

Immer wenn ich versucht habe zu exploden kam nur: array

Jetzt hab ich aber einen großen Loop gebastelt in dem mehrere verschachtelte loops die daten aufsplitten, dann sortiere ich und am schluss schreibe ich in den endgültigen array.

super! Vielen Dank nochmal an alle :wink:

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag