php variable nach Javascript übergeben

  • Hallo,
    ich habe hier eine hoffentlich lösbare Aufgabe. Mir ist es leider nicht gelungen einen Lösungsweg dafür zu finden.
    Hier das Problem:
    Auf einer Webseite habe ich html-, javascript-, css- und php-Code verwendet. Beim testen der Seite gibt es keine Beanstandungen.
    Die Übergabe der Variablen von php nach js funktioniert reibungslos.
    Sofern ich die Seite von einer anderen html-Seite aufrufe, kennt js keine Variablen aus php mehr. Meine Versuche die Datei in .php zu
    benennen oder den php Teil auszulagern und mit include einzubinden brachte auch keinen Erfolg.
    Hat jemand eine Idee woran dies liegen könnte? Ich verwende Apache mit php und mysql.
    Vieleicht kennt jemand dieses Problem. Für einen Hinweise bin ich sehr dankbar.


    Mit freundlichen Gruß
    hadida

  • Hallo synaptic, vielen Dank für Dein Interesse. Hier meinQuellcode.

    In meiner Webseite eingefügt:

    <?php include("includ2.php"); ?>

    <?php

    $ordner = "fotos"; //auch komplette Pfade möglich($ordner = "download/files";)
    $allebilder = scandir($ordner); // Sortierung A-Z
    $bildz = 0;// Bildzaehler
    $jpgarray =array();
    $gifarray =array();
    $pngarray =array();
    $txtarray =array();

    foreach($allebilder as $bild)
    {
    $bildinfo =pathinfo($ordner."/".$bild);
    $size =ceil(filesize($ordner."/".$bild)/1024);

    if ($bild !="." && $bild != ".." && $bild != "_notes"&& $bildinfo['basename'] != "Thumbs.db")
    {
    //FolgendeVariablen stehen nach pathinfo zur Verfügung
    //$bildinfo['filename'] =Dateiname ohne Dateiendung *erst mit PHP 5.2
    //$bildinfo['dirname'] = Verzeichnisname
    //$bildinfo['extension'] = Dateityp -/endung
    //$bildinfo['basename'] = voller Dateiname mit Dateiendung
    // Dateigrößeermitteln für Ausgabe

    if($bildinfo['extension'] == "jpg")
    {
    $bildname= substr($bildinfo['basename'],0,4); //Bild heraussuchen
    if ($bildname == 'bild')
    {
    $jpgarray[$bildz] =$ordner."/".$bildinfo['filename'].".jpg";
    $gifarray[$bildz] = $ordner."/".$bildinfo['filename'].".gif";
    $pngarray[$bildz] =$ordner."/".$bildinfo['filename'].".png";
    $txtarray[$bildz] =$ordner."/".$bildinfo['filename'].".txt";

    //echo $jpgarray[$bildz];

    $bildz =$bildz + 1;

    }
    }
    };
    }; // Ende foreachSchleife
    //echo $bildz;
    $rest=10-(($bildz-1)%10); // Anzahl fehlende Bilder zu einergeraden Zehnerzahl 10.. 20..30..usw
    //echo$rest;
    for ($i=0;$i<$rest; $i++)
    {
    $jpgarray[$bildz] =$ordner."/dumy.jpg";
    $gifarray[$bildz] =$ordner."/dumy.gif";
    $pngarray[$bildz] =$ordner."/dumy.png";
    $txtarray[$bildz] =$ordner."/dumy.txt";

    $bildz = $bildz +1;
    }

    // Begin der Umwandlung von php to javascript
    $jpgarr = implode(",", $jpgarray); // Erstelleeinen Gesamtstring von jeder Bildergalerie
    $gifarr =implode(",", $gifarray);
    $pngarr =implode(",", $pngarray);
    $txtarr =implode(",", $txtarray);
    // echo$jpgarr;echo('|'."\n");
    // echo$gifarr;echo('|'."\n");
    // echo$pngarr;echo('|'."\n");
    // echo$txtarr;echo('|'."\n");
    ?>

    <scriptlanguage="JavaScript">
    //alert("Begin");

    var bildz = "<?php echo $bildz; ?>";

    // Ab hier beginntder Fehler wenn diese HTML-Datei von einer anderen HTML-Datei aufgerufen wird.
    Der bildz ist leer. Dies ist auch der Fall, wenn ich dieganze includ2.php Datei einbinde.

    //alert(bildz);

    var jpgarr= new Array();
    temp ="<?php echo $jpgarr; ?>";
    jpgarr =temp.split(",");
    //alert(temp);

    var gifarr= new Array();
    temp ="<?php echo $gifarr; ?>";
    gifarr =temp.split(",");
    //alert(temp);

    var pngarr= new Array();
    temp ="<?php echo $pngarr; ?>";
    pngarr =temp.split(",");
    //alert(temp);

    var txtarr =new Array();
    temp ="<?php echo $txtarr; ?>";
    txtarr =temp.split(",");
    //alert(temp);
    alert(bildz);


    alert("Ende includ2.php");

    </script>


    Hier beginnt die Weiterverarbeitung in der HTML-Seite. Auchhier wird auf fehlende Daten hingewiesen.


    <scriptlanguage="JavaScript">
    alert("Begin");

    var bildz = "<?php echo $bildz; ?>";
    alert(bildz);

    var jpgarr= new Array();
    temp ="<?php echo $jpgarr; ?>";
    jpgarr =temp.split(",");
    //alert(temp);

    var gifarr= new Array();
    temp ="<?php echo $gifarr; ?>";
    gifarr =temp.split(",");
    //alert(temp);

    var pngarr= new Array();
    temp ="<?php echo $pngarr; ?>";
    pngarr =temp.split(",");
    //alert(temp);

    var txtarr= new Array();
    temp ="<?php echo $txtarr; ?>";
    txtarr =temp.split(",");
    //alert(temp);
    //alert(bildz);

    var objekt= new Array()
    for(i=0;i<bildz ; i++)
    {
    objekt[i] = new Array()
    objekt[i][0] = jpgarr[i]; // Bild
    objekt[i][1] = gifarr[i]; // Bildtitel
    objekt[i][2] = pngarr[i]; // Bildtext
    objekt[i][3] = txtarr[i]; // Bildinfo
    //alert(objekt[i][0]);
    }

    Hier die Ablaufbeschreeibung:
    In der index.html Datei
    <framename="linksframe" src="linksframe.html"scrolling="auto" marginheight="0" marginwidth="0"noresize="yes" />
    In der linksframe.html Datei
    <a href="fotos122a.html"target="rechtsframe" class="nav"><b>Fotos</b></a>
    In der fotos122a.html erfolgt der Aufruf der Include-Datei.
    <?php include("includ2.php"); ?> und dieweitere Verarbeitung der js-Befehle.

    Vielleicht noch ein Hinweis.
    Ich hatte versucht mit der GET POST Funktion die Variablenzu übertragen. Auch dies funktionierte nicht.
    Deshalb hatte ich mit dem nachfolgenden Programm ein Testdurchgeführt. Das Programm wurde nur mit If --> else verlassen.
    <?php
    /**
    * Prüfe ob$_GET['page'] "existiert" bzw gesetzt ist
    * Wenn nicht, gebeStartseite aus
    **/
    if(isset($_GET['page'])){
    switch($_GET['page']) {
    case 'home':
    $inhalt = 'homeseite';
    $title = 'Home';
    break;
    case 'me':
    $inhalt = 'about';
    $title = 'About me - Über mich';
    break;
    case 'Impressum':
    $inhalt = 'impressum_seite';
    $title = 'Impressum -rechtliche Absicherung';
    break;
    /**
    * Sollte keinerder GET Werte stimmen, wird veranlasst
    * das eineerror Seite ausgeben wird (z.B. NOT FOUND)
    **/
    default:
    $inhalt ='error';
    $title ='Fehler, Seite nicht gefunden';
    break;
    }
    } else {
    $inhalt = 'index';
    $title = 'Startseite';
    }
    echo$inhalt;
    echo$title;
    ?>
    <!DOCTYPEhtml PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <htmlxmlns="http://www.w3.org/1999/xhtml">
    <head>
    <metahttp-equiv="Content-Type" content="text/html;charset=utf-8" />
    <title><? echo $title?></title>
    </head>
    <body>
    <div id="wrapper">
    <h1><imgsrc="logo.jpg" alt="Logo von example Page" /></h1>
    <!-- Weiterer Quellcode-->
    <divid="content"> <!-- Inhalt - Überschriften und Texte -->
    <?php
    /**
    *Wenn $inhalt z.B. 'about', dann wird about.inc.php "eingefügt"
    * undausgegeben
    **/
    //include($inhalt.'.inc.php');
    ?>
    </div>
    </div>
    </body>
    </html>

    Nochmals vielen Dank für Ihre Bemühung.
    Mit freundlichen Grüßen
    hadida

  • also frames sind schomma murks, aber das is nich der grund, wieso es nicht geht..
    übrigens sind codetags beim einbinden von code in einem forum eeeeecht klasse, damit andere den code auch richtig lesen können.


    was dir hilft ist entweder nen handler der php-code auch in html-files ausführt
    das kommt dann in die htaccess:

    Code
    1. AddHandler application/x-httpd-php5 .html .htm


    ich empfehle dir aber eher deine html-dateien zu php-dateien zu machen, das muss gehen!!

  • Hallo synaptic,
    zunächst Danke für Ihre Hilfe.
    Sie haben Recht, es ist schon eine große Hilfe Code in Forenanzeigen und prüfen zu lassen.
    Jetzt bleibt nur noch die Konfiguration von PHP entsprechendan zu passen. Hier sieht es bei mir etwas mau aus.

    Zunächst habe ich die Dateien index.html, linksframe.htmlund die foto.html alle mit der Extension php versehen. Auch die Aufrufe derSeiten in den Programmen habe ich angepasst.
    Der Fehler beim Starten der Index.php - Datei ist nach wievor vorhanden.
    Bei den Befehl var bildz = "<?php echo $bildz; ?>"; in js auszuführen, wird nur
    <?php echo $bildz; ?> angezeigt.

    Beim 2ten Lösungsvorschlag die Zeile AddHandlerapplication/x-httpd-php5 .html .htmin die Datei htaccess einzutragen musste ich passen. Beim Suchen der htaccess-Dateienwurden mir ca. 10 Dateien angezeigt. In welcher ich nun die Zeile eintragen werdenmuß, kann ich nicht beurteilen.
    Bitte nochmal einen Hinweis, inwelcher htaccess-Datei ich die Zeile eintragen soll.
    Noch eine Frage zu PHP. Macht esSinn eine andere PHP-Konfiguration vorzunehmen?

    Mit freundlichen Grüßen
    hadida

  • Hallo Matrox,
    was bedeutet genau Ihre Antwort ich zitiere "und ab // kommentar wird in der Zeile auskommentiert, also die hälfte deines codes"
    Können Sie da etwas genauer werden?
    Gruß hadida


  • was bedeutet genau Ihre Antwort


    Vergiss die Antwort von Matrox, der schreibt grundsätzlich nur Blödsinn. Er wurde schon mehrfach gesperrt, kommt aber mit neuem Usernamen immer wieder. Er kapiert einfach nicht, dass er hier unerwünscht ist.

  • Hallo synaptic,
    die Schulaufgabe hat sich fast gelöst. Hier die vorläufigeLösung:
    Auf der Internetseite www.php-einfach.de unter der Überschrift „PHP installieren“ habe ich folgende Information erhalten.
    ________
    Wenn wir den normalen Dateipfad (c:\xampp\...) benutzen wirdder enthaltene PHP-Code nicht ausgeführt,deshalb müssen wir die Scripts über den Webserver abrufen.

    Die Adresse isthttp://localhost/ bzw. http://127.0.0.1/.
    Wennwir den normalen Dateipfad (c:\xampp\...) benutzen wird der enthaltene PHP-Codenicht ausgeführt, deshalb müssen wir die Scripts über den Webserverabrufen.


    Die Adresse ist http://localhost/bzw. http://127.0.0.1/.
    Dort wählen wir dann die PHP Datei aus und schon wird der Script ausgeführt.

    _______

    Jetzt habe ich alle html-Dateien in php-Dateien umgewandeltund das Programm mit
    http://localhost/web/index.phpim Windows-Browser gestartet.
    Es hat funktioniert. Aber nur beim 1ten mal. Erst wenn ichnach dem Starten den Browers den Inhalt gelöscht habe, konnte ich wiederProblemfrei starten.
    X X X

    synapatic, Ihre Hinweise auf die Umbenennung der Dateien inphp-Dateien war der richtige Lösungsansatz. Dafür nochmal mein Danke.

    Aber Elegant ist das nicht!

    Gibt es vielleicht eineMöglichkeit auf der Windowsoberfläche ein Button zu platzieren, der dieAnwendung zum Testen startet und dabei den Browserspeicher vorher löscht?
    Oder, kann man dies im PHP-Programm integrieren?
    Besteht vielleicht die Möglichkeit eine Einstellung in der php.inioder sonst wo vorzunehmen?

    Vielleicht hat auch Banditeinen Tipp parat.

    Jetzt noch einen schönen Abend liebe Leser.
    Gruß hadida

  • Ich glaube, du hast nicht wirklich verstanden, wofür Xampp gut ist.
    Xampp liefert u.a. einen Web- (Apache) und Datenbankserver (MySQL) Die Art der Installation entscheidet, wie diese Programme gestartet werden. Ich bevorzuge es, sowoahl den Apache als auch MySQL als Dienst laufen zu lassen. Um PHP-Scripte laufen zu lassen, müssen die Dateien die Extension .php haben, .html oder .htm wird nicht geparst. Die Dateien müssen unterhalb des htdocs-Verzeichnisses von XAMPP liegen, wenn man nicht gerade den Apache umkonfiguriert hat. Aufgerufen werden die Scripte unter XAMPP grundsätzlich mit http://localhost/scriptname.php. Es ist auch möglich, statt localhost die IP-Adresse 127.0.0.1 zu nutzen, was ich persönlich nie mache. Wenn du unterhalb von dem Verzeichnis htdocs weitere Verzeichnisse angelegt hast, musst du diese natürlich auch in der URL angeben.
    Insgesamt kannman sagen, dass du mit XAMPP einen Webserver laufen hast, der einem Webserver im Internet ähnelt. In der Regel kann man die Dateien problemlos von XAMPP auf einen Server im Internet transferienen, solange man kein absoluten Pfade benutzt.
    Zu dem Thema Button. XAMPPliefert bei der Installer-Version einProgramm, mit dem man den Webserver und MySQL starten kann.

  • wow, also ich hätte jetzt ganz als aller aller letztes damit gerechnet, dass du den xampp falsch benutzt.
    und wenn du php-code hast der ausgeführt werden soll, sind php-dateien das wohl erste was man braucht.


    ich glaube du brauchst für dein vorhaben erstmal die grundlagen für die grundlagen ;)


    bin grad baff, sorry


    aber du kannst ruhig "Du" zu mir sagen, ich bin zwar ein forum guru, aber noch keine 80 jahre alt :)

  • Hallo synaptic,
    für die Erzeugung derProgramme benutze ich den Editor von: Webocton - Scriptly
    In dem phpDocumentor ist der Pfad für die Eintragung von …/php.exe und …/phpdoc vorgesehen.
    Über den IE- Aufruf innerhalb des Editors habe ich alle html-Programmeproblemlos getestet.
    Auch die einzelne Webseite mit php-Code.
    Daher bin ich davon ausgegangen, dass dies auch mit allen Webseitenfunktionieren sollte. Wahrscheinlich warich doch zu naiv.
    Gibt es den noch etwas was ich bei der Konfiguration von phpbzw. xampp beachten muß?

    Jetzt muss ich erst mal in meinen Webseiten gründlichaufräumen.
    Auch Ihren (Deinen) Hinweis bezogen auf Frames werdeüberdenken. Ich meine zwar, mit dem Aufbaueines linken Frame (Navigation) sowie einen oberen Frame( Logo + Haupt-Navigation),läßt sich das rechte Frame vielseitig verwendet bzw. austauschen.

    Nochmal herzlichen Dank für Deine Hilfe und Anregungen.
    Gruß hadida

  • also fürs erste testen und klarkommen reicht xampp in der grundkonfiguration.


    später kann man durch ein paar handgriffe in der hosts-datei und ein paar zeilen in der extra-conf und httpd.conf das so gestalten, dass man über eine lokale eigene domain an die bereiche drankommt.
    hat den vorteil, dass man dadurch den echten aufruf einer web-application nachahmen kann :)


    und so haste dann die perfekte voraussetzung zum programmieren

  • Du kannst mit diesem Doctype

    HTML
    1. <!DOCTYPEhtml PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">


    keine Frames anzeigen.


    Frames sind ausserdem technisch gesehen STand von 1998 oder so also total veraltet und das W3C empfiehlt auf Frametechniken zu verzichten, da sie nur Nachteile haben und keinerlei Vorteile.


    Als Editor würde ich dir einen richtigen Editor empfehlen, Scriptly wird nicht mehr aktualisiert und ist auf dem Stand von 2010 stehengeblieben.
    Ich verwende den kostenlosen PSPad.