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

PHP-Array in JS ansprechen

ickzorge

New member
Hallo,

ich nehme an, mein Problem ist ein syntaktisches, jedoch konnte ich bisher keine Lösung finden.

Der Code:
PHP:
<?php
for($count = 10; $count >= 1; $count--)
	{
		$result = mysql_query("SELECT * FROM wp_posts WHERE post_status != 'inherit' AND ID=$count");
		while($row = mysql_fetch_assoc($result))
			{
				$array[$count] = $row['post_content'];
			} 
	}
?>

das hier erstellte Array ($array) möchte ich nun gerne mit JavaScript ansprechen - Code:
Code:
<script type="text/javascript">
	for(var i = 10; i >= 0; i--){
			alert(<?php $array[i] ?>);
		}
</script>

jedoch funktioniert das nicht. Ich nehme an, es liegt an der Variable "i", die ich so nicht benutzen kann. Weiß jemand einen Rat?

Danke.
 
Soweit ich es weiß, ist es nicht möglich mit JavaScript eine PHP-Variable anzeigen zu lassen, da PHP ausgeführt wird, wenn die Seite aufgebaut wird und JabaScript während der Laufzeit aufgeführt wird.

Ein Vorschlag von mir wäre per PHP HTML-Elemente zu erstllen und dein Werte dort zu hinterlegen:
Code:
<input type= "hidden" name="phparray[]" value="<?php $array[i] ?>"

Dann kannst du mit JavaScript auf dieses HTML-Element zugreifen:
Code:
getElementsByName['phparray[]'];


LG
the-sandman
 
Ist eine Möglichkeit - geht das nicht ein wenig eleganter?

<?php echo $array ?>

dieses kleine "i" bringt mich noch auf Palme :icon8:
 
Man kann auch Javascript Code dynamisch genieren.

Richtig, dass ist natürlich auch möglich.
Man kann mit PHP JavaScript-Code erzeugen. So müsste es gehen, hab es jedoch noch nicht getestet:
Code:
<?php 
for($count = 10; $count >= 1; $count--) 
{ 
    print '<script type="text/javascript">';
	
    $result = mysql_query("SELECT * FROM wp_posts WHERE post_status != 'inherit' AND ID=$count"); 
    while($row = mysql_fetch_assoc($result)) 
    { 
        $array[$count] = $row['post_content']; 
        print 'alert($array[$count]);';
    }
	
    print '</script>';
}
?>

Nur anders herum geht das nicht. Man kann nicht mit JavaScript PHP-Code erzeugen
 
Am sinnvollsten wäre es wahrscheinlich aus dem PHP-Array ein JS-Array zu generieren. Denke mal die Ausgabe per Alert ist sicher nicht das Endziel gewesen.
 
Richtig, dass ist natürlich auch möglich.
Man kann mit PHP JavaScript-Code erzeugen. So müsste es gehen, hab es jedoch noch nicht getestet:
Irgendwie habe ich den Eindruck, Du bist ein Meister der komplizierten Lösungen.
Mal davon abgesehen, dass die zwei verschachtelten Schleifen vom Threadersteller kommen und auch dort schon völliger Quatsch waren, für jeden einzelnen Datensatz ein eigenes Skripttag zu generieren hat irgendwie etwas von Überfluss.

Nur anders herum geht das nicht. Man kann nicht mit JavaScript PHP-Code erzeugen
Am Erzeugen scheitert es nicht.
 
Mal davon abgesehen, dass die zwei verschachtelten Schleifen vom Threadersteller kommen und auch dort schon völliger Quatsch waren, für jeden einzelnen Datensatz ein eigenes Skripttag zu generieren hat irgendwie etwas von Überfluss.

Nur um es nochmal kurz zusammen zu fassen: der Code soll alle Einträge einer DB rückwärts in ein Array schreiben, wenn eine bestimmte Bedingung erfüllt ist.
Auf dieses Array möchte ich anschließend per JS zugreifen können.

Wenn du eine andere, leichtere oder deiner Meinung nach sinnvollere Lösung hast, dann bitte immer her damit. Ich bin noch ein ziemlicher PHP-Anfänger, was sicherlich keine Entschuldigung ist, aber vielleicht erklärt, warum es so kompliziert geschrieben wurde. Mit deiner Aussage kann ich nur leider überhaupt nichts anfangen.
 
Nur um es nochmal kurz zusammen zu fassen: der Code soll alle Einträge einer DB rückwärts in ein Array schreiben, wenn eine bestimmte Bedingung erfüllt ist.
Auf dieses Array möchte ich anschließend per JS zugreifen können.

Wenn du eine andere, leichtere oder deiner Meinung nach sinnvollere Lösung hast, dann bitte immer her damit. Ich bin noch ein ziemlicher PHP-Anfänger, was sicherlich keine Entschuldigung ist, aber vielleicht erklärt, warum es so kompliziert geschrieben wurde. Mit deiner Aussage kann ich nur leider überhaupt nichts anfangen.
In SQL gibt es so etwas wie ORDER BY, genauso kann man bei WHERE Bedingungen wesentlich umfangreichere Einschränkungen vornehmen, als sich auf einfache Überprüfungen auf Gleichheit oder Ungleichheit festzulegen.
 
Irgendwie habe ich den Eindruck, Du bist ein Meister der komplizierten Lösungen.
Mal davon abgesehen, dass die zwei verschachtelten Schleifen vom Threadersteller kommen und auch dort schon völliger Quatsch waren, für jeden einzelnen Datensatz ein eigenes Skripttag zu generieren hat irgendwie etwas von Überfluss.

Richtig, ich habe das Scrupt nun noch nicht perfektioniert, sondern nur mal grob einen Anhaltspunkt vorgegeben. Auf die schnelle übersieht man da auch mal was ^^

@ickzorge:
Nur als keliner Hinweis. Für SQL hat mir diese Seite hier sehr weitergeholfen:
SQL-Tutorial ? SQL Referenz- und Programmierbeispiele
 
Wollte über JS dann den Inhalt in einzelnen div-Elementen ausgeben.
Nachdem ich da ziemlich blind rangegangen bin, habe ich es mittlerweile einfach über eine direkte PHP-Ausgabe alà echo "<div ..."; gelöst, was weitaus einfacher ist. Dazu aber trotzdem danke, für die Hinweise, welche mich dann letztlich zum Erfolg geführt haben.

Dazu dann aber doch noch eine kleine Frage:
Der Anfangswert von $count soll nun dem Maximalwert von ID entsprechen (die ID's werden wie meist automatisch generiert). Ich weiß um die Funktion max() und habe es so probiert:

PHP:
$lastId = mysql_query("SELECT MAX(id) as id FROM wp_posts");

for($count = $lastId; $count >= 1; $count--)

(zusätzlich noch über einige andere Schreibweisen) - das funktioniert leider nicht. Kann mir vielleicht noch jemand einen Hinweis geben? Danke.
 
In Deinem Ursprungscode hast Du doch schon Daten aus der Datenbank lesen können, wieso kriegst Du das jetzt nicht mehr hin?

Weil die max()-Funktion scheinbar fehlerhaft ist, d.h. sie scheint nicht den gewünschten Wert zu liefern bzw. ist so fehlerhaft, dass gar nichts mehr angezeigt wird.
 
Weil die max()-Funktion scheinbar fehlerhaft ist, d.h. sie scheint nicht den gewünschten Wert zu liefern bzw. ist so fehlerhaft, dass gar nichts mehr angezeigt wird.
Deine Beobachtung ist fehlerhaft. Du könntest den SQL-Befehl mal in phpMyAdmin ausprobieren. Dann wirst Du sehen, dass Du an der falschen Stelle suchst.
Vergleiche doch mal Dein erstes Skript mit dem jetzigen. Eins von beiden kriegt erfolgreich Daten aus der Datenbank. Vielleicht guckst Du auch mal die Doku von mysql_query an, das sollte augenöffnend sein.
 
Wollte über JS dann den Inhalt in einzelnen div-Elementen ausgeben.
Nachdem ich da ziemlich blind rangegangen bin, habe ich es mittlerweile einfach über eine direkte PHP-Ausgabe alà echo "<div ..."; gelöst, was weitaus einfacher ist. Dazu aber trotzdem danke, für die Hinweise, welche mich dann letztlich zum Erfolg geführt haben.

Dazu dann aber doch noch eine kleine Frage:
Der Anfangswert von $count soll nun dem Maximalwert von ID entsprechen (die ID's werden wie meist automatisch generiert). Ich weiß um die Funktion max() und habe es so probiert:

PHP:
$lastId = mysql_query("SELECT MAX(id) as id FROM wp_posts");

for($count = $lastId; $count >= 1; $count--)

(zusätzlich noch über einige andere Schreibweisen) - das funktioniert leider nicht. Kann mir vielleicht noch jemand einen Hinweis geben? Danke.

Ich weiß zwar nicht was du mit der Schleife machen willst, aber für mich sieht das nach einem Denkfehler aus. Wer sagt denn dass deine Ids lückenlos vergeben sind? Daten können auch mal gelöscht werden. Du solltest stattdessen eher über die Anzahl der Datensätze iterieren.
 
Noch interessanter dürfte die Frage sein, was denn passiert wenn man eine Variable vom Typ resource dekrementiert?
 
Weil es nichts zu ORDERn gibt... max(id) liefert immer den gleichen Wert zurück, für alle möglichen Datensätze die da kommen.
 
Das ist mir schon klar, aber er macht diese Abfrage ja nur um eine Schleife rückwärts zu durchlaufen und das sieht mir stark danach aus, als ob er eine Ausgabe einer Abfrage sortieren wollte.
 
Zurück
Oben