# php Datei in JavaScript öffnen



## BodyLAB (22. Dez 2021)

Hallo zusammen,

ich weiß das ich hier so gesehen nicht ganz richtig bin. Leider komme ich nur überhaupt nicht mehr weiter, vielleicht denke ich auch ganz Falsch und wollte deswegen mal eure Meinung hören.

Ich hab derzeit eine Webseite (localhost) mit WordPress erstellt. Kurz Wieso WordPress, weil es schnell gehen muss und ich kein Angula etc. beherrsche 
Nun habe ich dort eine Seite die sieht folgendermaßen aus:

Also kurz gesagt einfach nur eine Tabelle. Diese Tabelle kommt aus einer MySQL Datenbank. Das ganze sieht wie folgt aus:

```
function print_mitglieder() {
    $content = "<figure><table>";
    $content .= "<thead>
                    <tr>
                        <th>ID</th>
                        <th>Vorname</th>
                        <th>Nachname</th>
                        <th>Geburtsdatum</th>
                        <th>Beispiel</th>
                    </tr>
                <thead>";
    $content .= "<tbody>";
    $res = execute_query("select * from Mitglied");
    if($res == false) {$content .= $con->error;    }
    if($res->num_rows > 0) {
        while($row = $res->fetch_assoc()) {   
            $currDate = $row["Geburtsdatum"];
            $changeDate = date("d-m-Y", strtotime($currDate));
            $mitgliedID = $row['MitgliederID'];
            if($mitgliedID % 2 == 0)
            $content .= "<tr class='whiteRow' data-toggle='tooltip' title=' bla '>
                            <td><a href='#'  id=" . $row['MitgliederID'] . ">" . $row["MitgliederID"] . "</a></td>
                            <td><a onclick='myFunction3()'>" . $row["Vorname"] . "</a></td>
                            <td>" . $row["Nachname"] . "</td>
                            <td>" . $changeDate . "</td>
                            <td>" . '<a href="javascript:PUM.open(288);">DetailAnsicht</a>' . "</td>
                        </tr>";
            else
                    $content .= "<tr class='grayRow'>
                            <td><a href='#' id=" . $row['MitgliederID'] . ">" . $row["MitgliederID"] . "</a></td>
                            <td><a onclick='myFunction3()'>" . $row["Vorname"] . "</a></td>
                            <td>" . $row["Nachname"] . "</td>
                            <td>" . $changeDate . "</td>
                            <td>" . '<a href="javascript:PUM.open(288);">DetailAnsicht</a>' . "</td>
                        </tr>";
        }
    }   
    $content .= "</tbody></table></figure>";
    return $content;
}
```

*Wo ist nun das Problem?! Ganz "einfach" *ich möchte (dachte dort an JavaScript) wenn man über eine Zeile aus der Tabelle mit der Maus fährt, einen Link der mich auf die DetailAnsicht des Mitglieds mit dieser ID bringt. Das ganze habe ich auch versucht mit AJAX. Leider ohne Erfolg! 

Mein Gedanke war, ich schreibe oben die MitgliederID als id-Attribut an die Zeile. Diese MitgliederID könnte man nun durch DOM Funktionen abgreifen und per AJAX an die php Datei weiter geben die dann die DetailAnicht aufbaut. Ist das "normal" so zu machen? Oder ist das ein Umweg und ich sehe den Wald vor lauter Bäumen nicht? Die Abfrage der ID ist bis jetzt nur in dem einen Script verbaut. Ich hab alle 3 getestet ohne Erfolg.

HIer noch die versuche meines AJAX - Scriptes:

```
$path = PLUGIN_DIR . "includes/fetch_data.php";
    
    echo "<script>function myFunction2() {alert('<?php echo fetech_data() ?>')};</script>";
    
    echo "<script>
    function myFunction(merk) {
        jQuery(document).ready(function( $ ) {
            type: 'POST',
            url: '$path',
            data: ({ name: merk }),
            dataType: 'php',
                success: function(data) {         
                    return data;
            },
                error: function() {
                alert('Error occured');
                }
        })
    };</script>";
    
    
    echo "<script> 
    function myFunction3() {
    jQuery(document).ready(function(){
    jQuery('a').tooltip({
      classes:{
       'ui-tooltip':'highlight'
      },
      position:{ my:'left center', at:'right+50 center'},
      content:function(result){
       jQuery.post('fetch_data.php', {
        id:$(this).attr('id')
       }, function(data){
        result(data);
       });
      }
    });
}); 
    }
</script>";
```

Diese Scripts stehen in echo Befehlen weil man das wohl in WordPress so machen kann 
Die fetch_data.php sieht wie folgt aus:

```
if(isset($_POST["id"]))
{
    $result = execute_query("SELECT * FROM Mitglied WHERE id = '".$_POST["id"]."'");
    $output = '';
    foreach($result as $row)
    {
      $output .= '
      <p>Name : '.$row["Vorname"].'</p>';
    }
    echo $output;
}
```

In einem WordPress Forum wurde mir gesagt das ich einen Custom Endpoint erstellen müsste:
adding-custom-endpoints-wordpress

Die erste Frage ist eben: Macht man das so? Oder gibt es einen viel besseren Weg so etwas zu erstellen? 
Die zweite Frage wäre: Bin ich bei dem AJAX Script auf einem "guten" Weg oder stimmt da gar nichts 🙃  
Die dritte Frage: naja kann mir vielleicht mal noch jemand sagen wie man in der Webentwicklung Debuggt? Das ist ja ein kraus gegen Java!!! 
Die vierte Frage: geht eher dann wieder an ein WordPress Forum falls ich es selbst nicht hin bekomme :-D Wenn das Script so weit okay ist, wie bekommt man das ganze dann lauffähig in WordPress.

Ich kann euch verstehen wenn Ihr hier keine Lust drauf habt zu Antworten, das es doch sehr speziell ist und eben auch in die Kategorie CMS WordPress gehört   Deswegen ist es okay wenn Ihr euch damit nicht beschäftigen möchtet ;-) Nur weiß ich derzeit einfach gar nicht mehr weiter! Und hier hab ich immer gute und nette Hilfe bekommen  (bleibt alle Gesund)


----------



## Mart (22. Dez 2021)

BasBeg hat gesagt.:


> <p>Name : '.$row["Vorname"].'</p>';


wieso echost du hier einen p tag? ändere es um zu einem link zu deinem php script mi den parametern basierend auf dem VOrnamen

das kannst du mit get oder POST machen, und dann führst du das script darauf basierend auf, das kannst du komplett alles mit php machen

das <p> tag ist halt das most useless tag überhaupt mach doch einfach einen link <a> xD


sowas in der art
<a link="/mein.php?ersterParameter=Vorname"> Vorname </a> 

hab das aber selber shcon lange nicht mehr gemacht das ist einfachste get Request.... sollte man können


----------



## Oneixee5 (22. Dez 2021)

Ich empfehle da eigentlich immer die Doku zu Rate zu ziehen: https://api.jquery.com/jquery.post/
Ein POST-Request sieht etwa so aus:

```
var jqxhr = $.post( "example.php", { data: "TEST" }, function() {
  alert( "success" );
}).done(function() {
    alert( "success done" );
}).fail(function() {
    alert( "error" );
}).always(function() {
    alert( "finished" );
});

jqxhr.always(function() {
  alert( "other finished" );
});
```
Eigentlich schreibt auch niemand `jQuery` aus, es wird normalereise immer die Kurzform `$` verwendet.


----------



## Mart (22. Dez 2021)

Oneixee5 hat gesagt.:


> Ich empfehle da eigentlich immer die Doku zu Rate zu ziehen: https://api.jquery.com/jquery.post/
> Ein POST-Request sieht etwa so aus:
> 
> ```
> ...


warum immer das komplizierteste? warum nicht einfach ein link tag echon


----------



## Oneixee5 (22. Dez 2021)

Mart hat gesagt.:


> warum immer das komplizierteste? warum nicht einfach ein link tag echon


Ich wollte nur die Frage nach dem Ajax-Post-Request beantworten, da dort offensichtlich Fehler im Code sind. Zu PHP selbst wollte ich gar nichts sagen. PHP habe ich aus guten Grund schon Jahre nicht mehr gemacht. Wenn ich den Code oben so sehe, fühle ich mich da auch bestätigt.


----------



## Mart (22. Dez 2021)

Oneixee5 hat gesagt.:


> Zu PHP selbst wollte ich gar nichts sagen. PHP habe ich aus guten Grund schon Jahre nicht mehr gemacht. Wenn ich den Code oben so sehe, fühle ich mich da auch bestätigt.


ja wow das ist das selbe wie wenn du dir selber eine xml datei zusammen printelst... am anfang siehts immer scheiße aus ohne libs und bibliotheken


----------



## Oneixee5 (22. Dez 2021)

Mart hat gesagt.:


> ja wow das ist das selbe wie wenn du dir selber eine xml datei zusammen printelst... am anfang siehts immer scheiße aus ohne libs und bibliotheken


Was⁉️


----------



## Mart (22. Dez 2021)

```
$content .= "<thead>
                    <tr>
                        <th>ID</th>
                        <th>Vorname</th>
                        <th>Nachname</th>
                        <th>Geburtsdatum</th>
                        <th>Beispiel</th>
                    </tr>
                <thead>";
```
es ist natürlich dass das scheiße aussieht

es sieht am anfang vom lernen immer scheiße aus

aber deswegen ist die sprache nicht schlecht... schau dir laravel an das funktioniert auch wunderbärchen und produziert nicht "so einen" code wenn man halbwegs mit den klassen arbeitet


----------



## Oneixee5 (22. Dez 2021)

Mart hat gesagt.:


> ```
> $content .= "<thead>
> <tr>
> <th>ID</th>
> ...


Nein, da bin ich anderer Meinung. Auch ein Anfänger begreift, das dass unübersichtlich und fehleranfällig und unwartbar ist. Wer Anfängern so was beibringt sollte seinen Job aufgeben.


----------



## Mart (22. Dez 2021)

Oneixee5 hat gesagt.:


> Nein, da bin ich anderer Meinung. Auch ein Anfänger begreift, das dass unübersichtlich und fehleranfällig und unwartbar ist. Wer Anfängern so was beibringt sollte seinen Job aufgeben.


man muss aber verstehen um was es geht, ansonsten hat man kein fundament

er kann sich jetzt eine methode shcreiben die eine tabelle mit den jeweiligen werten echod ... dann muss er die methode nie mehr anschauen und nie mehr solche tabellen schreiben


----------

