• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

php array => js array

Ckappo

New member
Hallo,

ich möchte durch php eine Datenbank abfragen, das Resultat in ein Array speichern und dieses Array dann in einem separaten JS File verwenden. Mein JS file will aber kein Array annehmen. Wie kriege ich das PHP array in ein JS array?

mein Code zzt:

PHP:
$var1 = $_SESSION['one'];
$var2 = $_SESSION['two'];
 
echo $var1;
echo $var2;
 $con = mysqli_connect("");
 if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$result = mysqli_query($con,"Select name FROM table WHERE dateone < '". $var1 . "' OR datetwo < '". $var2 . "'");



$rows = array();

while($myArray = $result->fetch_array(MYSQLI_ASSOC)) {
    $rows[] = $myArray;
}

$jarray = json_encode($rows);

echo $jarray;

In meinem JS File möchte ich nun die Ergebnisse färben:

Code:
    for (var x = 0; x < jarray.length; x++) {

        $(".class#" + jarray[x]).css("background-color", "#e74c3c");

        alert(jarray);
    }

JS nimmt aber (wie gesagt) kein Array an. Was mache ich falsch?
 
Code:
<html>
.
.
 <script src="js/color.js" type="text/javascript"></script>
.
.
.
<?php
.
?>
[B] <script>
 var jarray = JSON.parse(<?php echo $jarray; ?>);
 </script>[/B]
</html>
 
Kein PHP Quellcode sondern das was im Browser ankommt bitte. Rechtsklick Quelltext anzeigen.
 
OK, sieht gut aus. Und wie wird das jetzt in die Funktion übergeben? Oder willst du es global definieren (nicht zu empfehlen).
 
eigentlich wollte ich es global definieren. Wie sollte ich die Funktion den übergeben? [return array ? ]
 
Zuletzt bearbeitet:
Die Error Console ist leer :-(

Das Array kommt im js an. Ich glaube das Problem liegt am Format des Arrays.

So kommt das array an = [{"one":"p44"},{"one":"p99"},{"one":"p16"}]

und so will ich es weiterverarbeiten:
Code:
for (var x = 0; x < stat.length; x++) {

        $(".class#" + stat[x]).css("background-color", "#e74c3c");
     
    }

stat ist das Array.
 
Zuletzt bearbeitet:
Kannst du mal ein minimalisiertes Beispiel deines Codes online stellen (z.B. über Fiddle) und den Link hier posten?
 
HTML:
while($myArray = mysqli_fetch_array($sqlresult)) { 
  echo $myArray["res1"];
  echo "<script type='text/javascript'> 
  var stats = new Array(";
  echo '"' . implode('","', $myArray) . '");';
  echo "\n</script>";}

Damit färbt das Script mir zwar eine ID! aber er färbt nur die letzte ein, weil in der Schleife die Variable 3x neu geschrieben wird.

Code:
<script type='text/javascript'> 
  var stat = new Array("p44","p44");
</script>p99<script type='text/javascript'> 
  var stat = new Array("p99","p99");
</script>p16<script type='text/javascript'> 
  var stat = new Array("p16","p16");
</script>

wie kann ich die Schleife umschreiben das die Variable alle results in das Array schiebt? Wenn ich den Code außerhalb der Schleife packe nimmt er nix mehr an
 
Das untere kann nicht dein Ernst sein?! Und es ist wieder nicht vollständig und auch kein Browsercode sondern PHP dabei. So kann man nicht vernünftig helfen. Mach bitte ein vollständiges Minimalbeispiel, aus dem man erkennen kann, was da passieren soll.
 
Das untere kann nicht dein Ernst sein?! Und es ist wieder nicht vollständig und auch kein Browsercode sondern PHP dabei. So kann man nicht vernünftig helfen. Mach bitte ein vollständiges Minimalbeispiel, aus dem man erkennen kann, was da passieren soll.

Das untere ist doch der Browsercode.
Code:
<script type='text/javascript'> 
  var stat = new Array("p44","p44");
</script>p99<script type='text/javascript'> 
  var stat = new Array("p99","p99");
</script>p16<script type='text/javascript'> 
  var stat = new Array("p16","p16");
</script>
 
Das kann ja nicht vollständig sein, sind ja nur Variablen Zuweisungen. Ich hab nach etwas gefragt, was ich von hier aus anklicken kann und das Problem sehe, wo angeblich nichts in der Fehlerkonsole steht.
 
Ja, prima. Und wenn du die Fehlerkonsole öffnest und auf Run klickst, was bekommst du dann angezeigt? Bau es erstmal sowet aus, dass wenigstens die Konsole ohne Fehler ist. Dann sagst du hier nochmal Bescheid und wir schauen uns die Logik an.
 
also jsfiddle zeigt mir folgendes an:

Uncaught ReferenceError: stat is not defined


Wenn ich die Fehlerkonsolen der Browser benutzte (IE oder Chrome) zeigen mir diese, keine Fehler an.
 
Code:
 <script>
 var stat = JSON.parse([{"col":"p44"},{"col":"p99"},{"col":"p16"}]);
 </script>

Nein, das sieht nicht gut aus und sollte auch einen Fehler in der Fehlerkonsole erzeugen (irgendwas mit "JSON.parse: unexpected character at line 1 column 2 of the JSON data").

JSON.parse() braucht einen String als Parameter - du übergibst aber ein Array, das dann zu einem String gecastet wird, der aber kein valides JSON-Format hat.

Aber das JSON.parse() ist auch komplett überflüssig:
Code:
 var stat = [{"col":"p44"},{"col":"p99"},{"col":"p16"}];

PS: globale Variablen sind extrem selten eine gute Idee...
 
Zurück
Oben