php array als alert ausgeben

5 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Öhm

Also fangen wir an .

Erstens ist alert Box warscheinlich das JavaScript gemeinte .

Du hast da aber PHP .

Also willst du das PHP Array in einer JavaScript alert funktion unterbringen .

<?php
$alertdingens = "";
$durchlauf = count($ergebnis);
for ($i = 0; $i < $durchlauf; $i++) {
$alertdingens .= $ergebnis[$i].'\n' ;
}
// HTML Ausgabe JavaScript
$page =<<<PAGEEND
<html>
<head>
</head>
<body>
<script type="text/javascript">
alert('$alertdingens');
</script>
</body>
</html>
PAGEEND;
// ab zum client damit
echo $page;
?>


RakonDark  09.04.2015, 22:31

Übrigens liegt meist der denkfehler bei :

PHP und JavaScript haben keine interaktion .

Das PHP läuft bis zum ende und schickt erst dann alles raus . Weder kann von einem noch von der anderen seite aus irgendwie zugegriffen werden . AJAX ist dann wiederum eine möglichkeit im hintergrund etwas nach zu laden , dazu liefert aber das php auch nur wieder klartext aus was dann im client verarbeitet werden muss und andersrum auch .

2
hummelxy 
Fragesteller
 09.04.2015, 22:35
@RakonDark

Hallo RakonDark,

schonmal vielen Dank für deine Antwort!

Das ist exakt die Antwort von Ascy70, nur etwas ausführlicher ;-)

Manchmal braucht man wieder einen fremden Einfall, wenn man sich in eine Variante verfahren hat...

Mal eine andere Frage:

Wenn ich in php ein Script ausgebe, in folgender Form:

echo "<script>alert('blabla \n blabla');</script>";

haut er mir eine leere Alert Box raus. Warum? Wenn ich den Zeilenumbruch "\n" entferne, funktioniert es wieder. Woran liegt das?

Über eine Antwort würde ich mich freuen!

Grüße,

Hummel

0
hummelxy 
Fragesteller
 09.04.2015, 22:39
@hummelxy

Beziehungsweise es wird keine Box angezeigt, sorry!

0
hummelxy 
Fragesteller
 09.04.2015, 22:49
@hummelxy

Habe den Fehler gefunden: Die Kommatas waren vertauscht, die alert-Box wollte die " " und php ' ' ;-)

1
RakonDark  09.04.2015, 22:55
@hummelxy

du könntest dir sicher sein mit escapen ,

addslashes($alertdingens); // hochkomma und anführungszeichen escapen

2

Nun die Antwort von oakkumulator wäre wohl der eleganteste Weg mit einem kleinen Problem. Richtig müsste es so lauten:

<script type="text/javascript">
alert('<?php echo implode('\n', $ergebnis); ?>');
</script>

implode gibt ein String zurück, der muss natürlich mit einem echo ausgegeben werden und kann nicht alleine im alert stehen, wie in der Antwort von oakkumulator.

Weiter ist es richtig, dass PHP doppelte Quotes brauch um z.B. Zeilenumbrüche zu verwenden. Das Problem ist aber, dass wir damit den Quelltext des gerenderten JavaScripts umbrechen. JavaScript kann selbstständig mit den Zeilenumbrüchen arbeiten, wir müssen also einfache Quotes innerhalb von implode verwenden, damit PHP hier keine Umbrüche erzeugt und die von JavaScript im alert erfolgen.

Woher ich das weiß:Berufserfahrung – Softwareentwickler/Projektleiter seit 2012
hummelxy 
Fragesteller
 15.04.2015, 17:20

Hallo,

vielen Dank für die Korrektur des Scripts ;-)

Jetzt habe ich auch endlich verstanden, warum "\n" einen Fehler verursacht hat - vielen Dank!

Du hast mir wirklich gut weitergeholfen, die Lösung für meine Antwort habe ich aber als hilfreichste Antwort ausgewählt, dir sende ich ein "Kompliment" als Entschädigung ;-)

Grüße,

Hummel

0

Ich hoffe ich versteh Dich richtig, vielleicht kannst Du bei jedem Durchlauf eine zweite Variable um den neuen Inhalt  erweitern, also sinngemäß


$gesamtvariable .= $ergebnis[$i]

Hinter der Schleife packst Du dann $gesamtvariable in die Alertbox

Ascy70  09.04.2015, 22:20

ok den Zeilenumbruch hab ich vergessen, aber ich hoffe es kam rüber was ich meinte :D

1
hummelxy 
Fragesteller
 09.04.2015, 22:32
@Ascy70

Perfekt, die Antwort habe ich gebraucht ;-)

Vielen Dank!

1
Ascy70  09.04.2015, 22:49
@hummelxy

cool, ich konnt mal helfen bei PHP, das freut mich, normal stellt sich bei dem Thema immer raus dass ich doch noch recht wenig Plan hab ;-)

1

1. ansatz: statt der schleife

print_r ($ergebnis);

hummelxy 
Fragesteller
 15.04.2015, 17:15

Hallo,

schön, damit gibt er mir das komplette Array mit Index aus, dass ist für den Besucher nicht wirklich schön und führt zu Verwirrungen...

Ich habe es mit der Idee von Antwort 1 umgesetzt.

Danke dennoch!

Grüße,

Hummel

0

<script type="text/javascript">

<?php implode("\n" . $ergebnis); ?>

</script>

hummelxy 
Fragesteller
 09.04.2015, 22:28

Hallo,

erstmal danke für deine Antwort!

Verstehe ich das richtig, dass du das so meinst?

$ergebnis = implode("\n" . $ergebnis);

echo "<script>alert('".$ergebnis."');</script>";

Das funktioniert leider nicht. Die alert-Box bleibt leer.

Woran liegt das?

Grüße,

Hummel

0
RakonDark  09.04.2015, 22:33
@hummelxy

es könnte sein das $ergebnis ein Hochkomma hat , das würde man aber auf der Fehlerconsole sehen .

0