php Anfänger: JavaScript mit PHP

hi,
ich möchte über PHP aus einer MySQL-Datenbank verschiedene Produkte ausgeben und zusätzlich die Möglichkeit geben über den Button "mehr Details" mehr Details zu bekommen.

wenn der User also auf
echo '<a href="Computershop_Hauptseite.php" onClick="zeig_mehr("ul'.$i.'","'.$bildschirm.'","'.$tvkarte.'","'.$laufwerk.'","'.$gewicht.'");" class="mehr" id="a'.$i.'">mehr Details</a>';

drückt sollen ihm noch weitere Details angezeigt werden.

zeig_mehr() sieht dann so aus

function zeig_mehr(id,bildschirm,tvkarte,laufwerk,gewicht){

var bildschirmli=document.createElement("li");
  var tvkarteli=document.createElement("li");
  var laufwerkli=document.createElement("li");
  var gewichtli=document.createElement("li");

document.getElementByID(id).appendChild(bildschirmli);
  document.getElementByID(id).appendChild(tvkarteli);
  document.getElementByID(id).appendChild(laufwerkli);
  document.getElementByID(id).appendChild(gewichtli);

var bildschirmtext=document.createTextNode(bildschirm);
  var tvkartetext=document.createTextNode(tvkarte);
  var laufwerktext=document.createTextNode(laufwerk);
  var gewichttext=document.createTextNode(gewicht);

bildschirmli.appendChild(bildschirmtext);
  tvkarteli.appendChild(tvkartetext);
  laufwerkli.appendChild(laufwerktext);
  gewichtli.appendChild(gewichttext);
}

geht aber nicht. Weis vielleicht jemand woran das liegt. Wäre sehr froh über ein paar Antworten :)

  1. Hi,

    ich möchte über PHP aus einer MySQL-Datenbank verschiedene Produkte ausgeben und zusätzlich die Möglichkeit geben über den Button "mehr Details" mehr Details zu bekommen.

    Und warum willst du das nur dann machen, wenn JavaScript verfuegbar ist?

    wenn der User also auf
    echo '<a href="Computershop_Hauptseite.php" onClick="zeig_mehr("ul'.$i.'","'.$bildschirm.'","'.$tvkarte.'","'.$laufwerk.'","'.$gewicht.'");" class="mehr" id="a'.$i.'">mehr Details</a>';

    Ohne JavaScript verlinkst du mich als auf ein Dokument, welches dem Namen nach vermutlich die Hauptseite des Shops(?) darstellt - obwohl ich auf einen Link mit dem Text "mehr Details" geklickt hatte ...? Du willst also, dass ich mir als Nutzer verarscht vorkomme?

    Mach's doch bitte *vernuenftig*, und verlinke auf eine Seite, die die Produktdetails separat darstellt (Produkt-ID als GET-Parameter uebergeben, im Zielscript dann zugehoerige Daten auslesen und darstellen ... o.s.ae.).

    JavaScript fuer die Anzeige im selben Dokument kannst du dann als *optionales* Extra einbauen.

    geht aber nicht.

    Tja, auch diese Version von "funzt nicht" ist leider keine brauchbare Problembeschreibung, sondern Mist.

    </hilfe/charta.htm#tipps-fuer-fragende>

    Weis vielleicht jemand woran das liegt.

    Wie sieht der Code aus, den der Client erhaelt (nein, obiger PHP-Schnippsel interessiert bei einem clientseitigen Problem natuerlich erst mal *ueberhaupt* *nicht*), welche Fehlermeldungen bekommst du in der JavaScript-Konsole, etc.

    MfG ChrisB

  2. Hi,

    Willst du deine PhP variablen als Test oder als JS Var ausgeben. Hatte glaub ich letzten das gleiche Prob.! Wie sieht z.b. der Inhalt von

    $bildschirm aus?

    $Bildschirm="texthaumichblau"; = JS var
    $Bildschirm="'texthaumichblau'"; = text

    Probier mal. Von JS hab ich keinen Plan aber vielleicht hilft das schon.

    Grüße

  3. Hi,

    prinzipiell: PHP-Code ist für JS-Probleme irrelevant. Das nächste Mal also nur den fertigen HTML-/JS-Code posten.

    echo '<a href="Computershop_Hauptseite.php" onClick="zeig_mehr("ul'.$i.'","'.$bildschirm.'","'.$tvkarte.'","'.$laufwerk.'","'.$gewicht.'");" class="mehr" id="a'.$i.'">mehr Details</a>';

    Nach zeig_mehr() wird der Link ausgeführt. Was mit den Änderungen passiert, wenn eine neue Seite geladen wird, überlasse ich deiner Phantasie ... =;-)

    Vermeide am besten diesen unsinnigen, weil ggf. irreführenden Link.

    Gruß, Cybaer

    --
    Man kann doch sehr leicht jenen tugendhaften Menschen begegnen, (...) die eine Art "unkrümmbaren Zeigefinger" besitzen, der ständig den kalten Wind des Rechthabens ausströmt. (Wolfgang Huber, Bischof)
    Die Tugend jagt nicht den Teufel, sondern den Sündhaften. Damit wird sie zum Terror. (Hans-Ulrich Jörges, Journalist)
    1. Hi,

      prinzipiell: PHP-Code ist für JS-Probleme irrelevant. Das nächste Mal also nur den fertigen HTML-/JS-Code posten.

      sorry hab jetzt gar nicht dran gedacht ;)

      so sieht die html-Ausgabe aus

      <a href='' onClick='zeig_mehr('ul0','21','dedicated','DVD/CD','3');' class='mehr' id='a0'>mehr Details</a></td><td class="main3">

      und das müsste die Funktion zeig_mehr() ausführen

      function zeig_mehr(id,bildschirm,tvkarte,laufwerk,gewicht){

      var bildschirmli=document.createElement("li");
        var tvkarteli=document.createElement("li");
        var laufwerkli=document.createElement("li");
        var gewichtli=document.createElement("li");

      document.getElementByID(id).appendChild(bildschirmli);
        document.getElementByID(id).appendChild(tvkarteli);
        document.getElementByID(id).appendChild(laufwerkli);
        document.getElementByID(id).appendChild(gewichtli);

      var bildschirmtext=document.createTextNode(bildschirm);
        var tvkartetext=document.createTextNode(tvkarte);
        var laufwerktext=document.createTextNode(laufwerk);
        var gewichttext=document.createTextNode(gewicht);

      bildschirmli.appendChild(bildschirmtext);
        tvkarteli.appendChild(tvkartetext);
        laufwerkli.appendChild(laufwerktext);
        gewichtli.appendChild(gewichttext);
      }

      Ich wollte das jetzt nicht über eine externe Seite machen, da es nur 4 weitere Parameter sind, eben nur bildschirm, tvkarte

      Das ganze ist nur ein FH-Projekt, wo auf jeden Fall JavaScript auf
      den Browsern aktiviert ist

      1. Mahlzeit,

        <a href='' onClick='zeig_mehr('ul0','21','dedicated','DVD/CD','3');' class='mehr' id='a0'>mehr Details</a></td><td class="main3">

        Hier beginnt der Wert ^          ^ und hier endet der Wert des Attributs "onclick".

        Was soll der Browser Deiner Meinung nach mit "ul0','21','dedicated','DVD/CD','3');'" anfangen?

        Verwende für HTML und Javascript unterschiedliche Anführungszeichen und escape die in Strings vorkommenden Anführungszeichen sorgfältig, wo es notwendig ist.

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        1. Verwende für HTML und Javascript unterschiedliche Anführungszeichen und »»escape die in Strings vorkommenden Anführungszeichen sorgfältig, wo es »»notwendig ist.

          Habs jetzt geändert funktioniert aber immer noch nicht:

          <a href="javascript:zeig_mehr('ul0','21','NVidia','DVD/CD','3')" class='mehr' id='a0'>mehr Details</a>

          So siehts bei Selfhtml.org aus,aber die löschen in ihrem Beispiel(http://de.selfhtml.org/javascript/objekte/node.htm) nur Listen
          ich will aber neue Listen hinzufügen. Geht das vielleicht irgendwie mit AJAX.

          1. <a href="javascript:zeig_mehr('ul0','21','NVidia','DVD/CD','3')" class='mehr' id='a0'>mehr Details</a>

            versuchs mal so (löst dein problem nicht, stil ist aber besser)
            <span onclick="zeig_mehr('ul0','21','NVidia','DVD/CD','3');" class='mehr' id='a0'>mehr Details</span>

            oder zur not so (siehe oben)
            <a href="#" onclick="zeig_mehr('ul0','21','NVidia','DVD/CD','3'); return false;" class='mehr' id='a0'>mehr Details</a>

            So siehts bei Selfhtml.org aus,aber die löschen in ihrem Beispiel(http://de.selfhtml.org/javascript/objekte/node.htm) nur Listen
            Geht das vielleicht irgendwie mit AJAX.

            natürlich geht das

            1. Hallo

              <a href="javascript:zeig_mehr('ul0','21','NVidia','DVD/CD','3')" class='mehr' id='a0'>mehr Details</a>

              versuchs mal so (löst dein problem nicht, stil ist aber besser)
              <span onclick="zeig_mehr('ul0','21','NVidia','DVD/CD','3');" class='mehr' id='a0'>mehr Details</span>

              oder zur not so (siehe oben)
              <a href="#" onclick="zeig_mehr('ul0','21','NVidia','DVD/CD','3'); return false;" class='mehr' id='a0'>mehr Details</a>

              Bleibt nachwievor die unbeantwortete Frage von ChrisB, was denn mit den paar Leuten ist, denen JavaScript nicht zur Verfügung steht.

              Entweder blendet man den Verweis mit JavaScript ein, damit diese Leute erst garnichts zu sehen bekommen, oder man gibt allen einen richtigen Link, dessen Ziel die Infos ebenfalls anzeigt <a href="detail.php?class=ul0&amp...">, arbeitet des Weiteren mit zeig_mehr(this) und klabustert die der Funktion übergebenen Parameter und deren Werte in der JS-Funktion auseinander.

              Tschö, Auge

              --
              Die deutschen Interessen werden am Liechtenstein verteidigt.
              Veranstaltungsdatenbank Vdb 0.2
              1. Entweder blendet man den Verweis mit JavaScript ein, damit diese Leute erst garnichts zu sehen bekommen, oder man gibt allen einen richtigen Link, dessen Ziel die Infos ebenfalls anzeigt <a href="detail.php?class=ul0&amp...">, arbeitet des Weiteren mit zeig_mehr(this) und klabustert die der Funktion übergebenen Parameter und deren Werte in der JS-Funktion auseinander.

                jep, diese diskussion war denke ich vor ein paar wochen schon mal da ;)

                aus dem grund baue ich meine seiten immer erst ohne javascript und überlege mir dann, was ich mit javascript "vereinfachen" kann

                1. klar ich weis schon das dann die Leute ohne JavaScript auch die Details
                  nicht sehen können, nur ist diese Seite nichts Kommerzielles, sondern eine
                  abgeschirmte Seite auf dem FH-Server. JavaScript ist nun mal Teil der Aufgabe,
                  ich krieg dafür Punkte ;)

                  Was ich nicht verstehe ist, ich kann also keine Links dynamisch erstellen,
                  die dann eine JavaScript-Funktion aufrufen. Dann müsste das doch auch für Ajax gelten. Geht das dann wirklich nur über eine neue Seite-Laden. :(

                  1. ich krieg dafür Punkte ;)

                    sprich es ist eine bewertete arbeit - du bekommst also punkte für bewusst nicht barrierefreie seiten? ;)

                    Was ich nicht verstehe ist, ich kann also keine Links dynamisch erstellen,
                    die dann eine JavaScript-Funktion aufrufen. Dann müsste das doch auch für Ajax gelten. Geht das dann wirklich nur über eine neue Seite-Laden. :(

                    sicher kannst du links erstellen, die dann eine javascript funktion aufrufen - diese funktion kann wiederum neue links erstellen, die dann wieder ganz anderen funktionen erzeugen, die vorher noch garnicht existent waren und diese aus irgendwelchen scripten beziehen

                    1. ich krieg dafür Punkte ;)
                      sprich es ist eine bewertete arbeit - du bekommst also punkte für bewusst »»nicht barrierefreie seiten? ;)

                      Ich würde mir dafür auch länger Zeit lassen und PHP objektorientiert machen und auch noch andere Möglichkeiten ausdenken für User, die JavaScript ausgeschaltet haben, aber dann werde ich nicht fertig, zumal das nicht bewertet wird. Was mein Prof sehen will ist, dass ich alles irgendwie benutze
                      was er irgendwann mal gesagt hat ;)

                      Was ich nicht verstehe ist, ich kann also keine Links dynamisch »»erstellen, die dann eine JavaScript-Funktion aufrufen. Dann müsste das doch »»auch für »»Ajax gelten. Geht das dann wirklich nur über eine neue »»Seite-Laden. :(

                      sicher kannst du links erstellen, die dann eine javascript funktion »»aufrufen - diese funktion kann wiederum neue links erstellen, die dann »»wieder ganz anderen funktionen erzeugen, die vorher noch garnicht existent »»waren und diese aus irgendwelchen scripten beziehen

                      Ja aber wie. Auf allen Seiten von selfhtml.org zu diesem Thema funktioniert dieses dynamische Ändern von Elementinhalten. Wo ist dann mein Fehler

                      Dieser dynamisch generierte Funktionsaufruf
                      <a href="javascript:zeigmehr('td0','Inspireon','DELL-PC','Windows Vista','1.73','2','500','21','NVidia','DVD/CD','3')" class="mehr" id="a0">mehr Details</a>

                      ruft diese Funktion auf

                      function zeigmehr(id,kategorie,beschreibung,betriebssystem,prozessor,ram,festplatte,bildschirm,tvkarte,laufwerk,gewicht){

                      document.getElementByID(id).innerText='hallo';

                      }

                      Es passiert gar nichts, ich versteh nicht wieso.
                      Vielleicht hat sich das ja jemand das hier durchgelesen und kann mir sagen,
                      was ich falsch mache.

                      1. Hi,

                        document.getElementByID(id).innerText='hallo';
                        Es passiert gar nichts, ich versteh nicht wieso.

                        1. JS is case-sensitive
                        2. innerText ist proprietäres IE-JScript. Der Einfachheit halber, kannst Du auch hier innerHTML nehmen.
                        3. Webseiten/Scripts auf dem IE zu entwickeln, ist von allen bisher gesehen Fehlern der *mit Abstand* größte! Nutze FF, am besten noch verfeinert mit PlugIns wie Console und Web-Developer.

                        Gruß, Cybaer

                        --
                        Man kann doch sehr leicht jenen tugendhaften Menschen begegnen, (...) die eine Art "unkrümmbaren Zeigefinger" besitzen, der ständig den kalten Wind des Rechthabens ausströmt. (Wolfgang Huber, Bischof)
                        Die Tugend jagt nicht den Teufel, sondern den Sündhaften. Damit wird sie zum Terror. (Hans-Ulrich Jörges, Journalist)
                  2. Hi,

                    JavaScript ist nun mal Teil der Aufgabe,
                    ich krieg dafür Punkte ;)

                    Das waere aber unfair gegenueber anderen Mitschuelern/-studenten, die von JavaScript wenigstens eine grundlegende Ahnung vorweisen koennen.

                    MfG ChrisB

      2. Hi,

        <a href='' onClick='zeig_mehr('ul0','21','dedicated','DVD/CD','3');' class='mehr' id='a0'>mehr Details</a></td><td class="main3">

        Ist immer noch ein Link, der ausgeführt wird. Nimm doch ein SPAN oder BUTTON, und formatier ihn entsprechend.

        Wenn JS vorausgesetzt werden kann, kann man auch ein A nehmen (kein B! Hohoho - schenkelklopf ;->), und das JS mit "return false;" beenden, damit der Link nicht von der HTML-Engine noch ausgeführt wird ...

        Gruß, Cybaer

        --
        Man kann doch sehr leicht jenen tugendhaften Menschen begegnen, (...) die eine Art "unkrümmbaren Zeigefinger" besitzen, der ständig den kalten Wind des Rechthabens ausströmt. (Wolfgang Huber, Bischof)
        Die Tugend jagt nicht den Teufel, sondern den Sündhaften. Damit wird sie zum Terror. (Hans-Ulrich Jörges, Journalist)