ubuntuusers.de

PHP Array an PHP übergeben...

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

KingArtus

Anmeldungsdatum:
6. August 2007

Beiträge: 582

Hi Leute... ich habe wiedermal ein problem...

Ich bekomme von meiner Suchmaschiene ein Arry wieder, das ich ausgeben möchte, bekomme ich auch ohne Probleme hin, Nun aber möchte ich dieses Besagte Array in eine CSV schreiben zum Exportieren, dafür habe ich eine weitere PHP, die mir die notwendige CSV erstellt, und über gebe die Variablen, die ich mir dann wieder über die GET methode abhole... bei den Strings, kein Problem, bei Array ? ARRR, keine Ahnung...

um Mal zu Zeigen was ich mache: Variable1 ist ein String, das Klapt wunderbar! Variable2 ist der Array, das klapt nicht,

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
<table width=100%>
<tr>
<td width=80%>
<a href="exportcsvhead.php?variable1=<?=$doc[DOCUMENTTYPE_SPEC_TEST1]?>&variable2=<?=$doc[DOCUMENTTYPE_SPEC_TEST2]?>">test csv</a>
</td>
...
...
...
</tr>
</table>

Normalerweise gebe ich den Array so aus, um jeden Inhalt zu erhalten:

1
2
3
4
5
6
7
8
<?php
        if(!empty($doc[DOCUMENTTYPE_SPEC_TEST2]))
        foreach($doc[DOCUMENTTYPE_SPEC_TEST2] as $CODE){
?>
<?=$CODE?>,
<?php
        }
?>

Das funktioniert auch Problemlos, auch wenn es warscheinlich schöner geht...

Nun habe ich nur das Problem, wie Übergebe ich meiner Export PHP das Array, so das ich es dort nutzen kann, oder wie übergebe ich die ganzen inhalte aus dem Array?

Meine Export PHP sieht so aus:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15

<?php
header("Content-type: text/plain");
header('Content-Disposition: attachment; filename="export-head.csv"');


$variable1 = $_GET["variable1"];
$variable2 = $_GET["variable2"];

echo "TEST1;TEST2\n";
echo "$variable1;$variable2;";

die();

?>

Solange die Variablen Strings sind,geht das auch...

Vielleicht habt ihr ja eine Idee für mich.

Sid_Burn

Anmeldungsdatum:
23. Oktober 2004

Beiträge: 2159

Wenn du Daten zwischen Browser und Server austauschen möchtest über JavaScript sprich Ajax, dann solltest du eine Serialisierung wie JSON nutzen. PHP wird da bestimmt schon eingebaut funktionen haben, und jedes JavaScript Framework sollte über einen entsprechenden JSON Parser verfügen.

Wenn du einfach nur Links bereits daten übergeben möchtest, dann solltest du die Links gleich in PHP generieren. Dafür wird PHP sicherlich Funktionen haben die es können. Manuel "http://example.org/info.php?var1=$wert1&var2=$wert2" zu schreiben ist nicht empfehlenswert da du $wert1 und $wert2 entsprechend Escapen musst.

Ansonsten weiß ich nicht wie PHP es macht, allerdiengs wenn du den gleichen Wert mehrmals angiebst solltest du vielleicht automatisch ein Array zurück bekommen. Also bei "...?var=wert1&var=wert2" sollte dann "var" ein Array sein mit "wert1" und "wert2".

nexonic

Anmeldungsdatum:
23. Januar 2008

Beiträge: 952

Spontan würde ich vorschlagen, dass du einfach das Array in eine Session-Variable speicherst und in dem anderen Skript wieder darauf zugreifst. Also so:

1
2
3
4
session_start();

$var = new Array();
$_SESSION['variable2'] = $var2; // Das Array in die Sessionvariable 'variable2' ablegen

Und dann einfach in der anderen Datei wieder darauf zugreifen:

1
2
3
session_start();

$var = $_SESSION['variable2'];

Gruß
- nexonic

schmauch

Avatar von schmauch

Anmeldungsdatum:
27. April 2009

Beiträge: 115

Wohnort: Wettswil a. A.

Ich weiss nicht, ob ich genau verstanden habe, was du tun willst. Trotzdem folgender Vorschlag: Du kannst mittels implode() den Array zu einem String umwandeln. Siehe hier

Gruss Schmauch

KingArtus

(Themenstarter)

Anmeldungsdatum:
6. August 2007

Beiträge: 582

Geil, Implode ist genau das was ich brache, und es Funktioniert hervorragend ☺ Danke

KingArtus

(Themenstarter)

Anmeldungsdatum:
6. August 2007

Beiträge: 582

Naja wie immer oder? ☺

Es klappt wunderbar, bis dann der Array Leer ist, sollte also kein Inhalt darin stehen bekomme ich Folgendes :

1
Warning: implode() [function.implode]: Bad arguments. in /var/www/search.php on line 211

woran könnte das liegen?

schmauch

Avatar von schmauch

Anmeldungsdatum:
27. April 2009

Beiträge: 115

Wohnort: Wettswil a. A.

Diese Fehlermeldung bekommst du, wenn du implode auf etwas anderes als ein Array anwenden willst. Das heisst also, dass die Variable, die du in implode verwendest, entweder nicht definiert oder kein Array ist. Wenn die Variable ein leeres Array wäre, gäbe es keine Fehlermeldung.

Was hast du genau vor? Ich vermute, dass es verschiedene Ansätze gebe, dein Problem zu lösen.

Gruss Schmauch

KingArtus

(Themenstarter)

Anmeldungsdatum:
6. August 2007

Beiträge: 582

ich glaube ich habe es schon, warscheinlich ist es nur nen getrixe und keine Saubere Sache aber ich löse es im moment so :

1
2
3
4
5
6
if(count($array) > 0) {
$sel = implode(",", $doc[DOCUMENTTYPE_SPEC_SALESCODE]);
}
else {
$sel = NoSalesCode;
}

Ich überprüfe einfach nur, ob der Array Leer ist und wenn, dann schreibe ich in die Variable was anderes ☺ wenn das sehr Unsauber ist und du für dieses Problem nen besseren Ansatz hast wäre ich dir dankbar...

Kurz zum Gesamten..

Ich habe eine Suchmaschiene, die gibt mir auf meine Anfrage die ergebnisse als String wieder, nur halt ein paar inhalte als Array... ich will diese ergebnisse in eine CSV schreibven, also übertrage ich diese Inhalte an eine Weitere PHP, die mir daraus eine csv macht, das Übertragen der Arrays über die Getvariable war aber nicht möglich daher musste ichd as erst in ein String wandeln...

King

schmauch

Avatar von schmauch

Anmeldungsdatum:
27. April 2009

Beiträge: 115

Wohnort: Wettswil a. A.

Das ist in der Tat ziemlich unsauber. Wenn $array kein Array sondern z.B. ein String ist, dann liefert dir count($array) 1 zurück, und die implode-Funktion liefert einen Fehler.

Besser wäre, wenn du zunächst prüfst, ob die Variable gesetzt ist, dann ob sie ein Array ist:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
if(isset($array)) {
  if(is_array($array)) {
    $sel = implode(",", $doc[DOCUMENTTYPE_SPEC_SALESCODE]);
  }
  else {
    // vielleicht möchtest du was machen, wenn $array ein string ist?
  }
}
else {
  $sel = NoSalesCode;
}

Grundsätzlich finde ich dein Vorgehen reichlich kompliziert. Wenn ich das richtig verstanden habe. Du bekommst die Daten als Strings und Arrays, packst alles in einen Get-String, den du an eine Seite weiter gibst, die dir dann das CSV erstellt? Ich glaube, da gäbe es einfachere Varianten.

Gruss Schmauch

KingArtus

(Themenstarter)

Anmeldungsdatum:
6. August 2007

Beiträge: 582

Ja, die Alternative, die mir einviele wäre, ich packe die Suchparameter, Suchwort, sortierung usw. in eine GET variable und erzuge damit eine weitere >Suche in einer Seite, die mir die ergebnisse als CSV ausgibt...

oder fällt dir nochmehr ein?

Danke für sden Hinweis.

Antworten |