• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

PHP Array von Javascript durchsuchen lassen

In Version2.php finden sich diese Zeilen:

Code:
 var start = 0;
        var count = 5;
        function more() {
            console.log(start, count);
            var params = {
                imgurl: imgurl,
                start: start,
                count: count

Wo kriege ich bei diesem Code imgurl her ? Fehlt da eventuell ein "$z= $_POST["imgurl"];" an bestimmter Stelle ?
 
Werbung:
Also ich hab das jetzt soweit dann ausprobiert und Gute Nachrichten: Es funktioniert. Jetzt sind mir nur so ein paar Kleinigkeiten aufgefallen und zwar folgendes.

Sagen wir es gibt zu einem Bild 10 Kommentare. Dann wird nach dem alle 10 Kommentare ausgelesen wurden, kein Button mehr angezeigt. Kommt jetzt aber ein 11tes Kommentar dazu, wird der Button wieder sichtbar. Wenn man dann auf den Button klickt kommt folgende Fehlermeldung:

Warning: Invalid argument supplied for foreach() in...

Die Zeile die angesprochen wird ist in unbenannt.php:

foreach ($ergebnis as $zeile) {

Es ist ja ziemlich klar wodurch der Fehler entsteht. Das neu abgegeben Kommentar wird direkt ausgegeben, dadurch wird aber die Anzahl an alten Kommentaren nicht mehr, da die ja ohne hin schon alle ausgelesen wurden. Das heißt an sich müsste der Code irgendwann erkennen wann er quasi das letzte "alte" Kommentar ausgelesen hat. Oder wie würdest du dagegen vorgehen ?
 
Werbung:
Ja okay ich verstehe und änder die Dateinamen mal so um so das es verständlicher wird. Also wir hatten bereits eine Datei angelegt die nur für das Eintragen eines Kommentars verantwortlich ist :)

Kommentar_eintragen.php :

Code:
<?php
session_start();
$userid = $_SESSION['userid'];
$username = $_SESSION['username'];
?>
<html>
<link rel="stylesheet" type="text/css" href="javacss.css">
<body>
  
<?php
    $y= $_POST["imgurl"];
 $bobo = $_POST["Kommentar"];
 
 
 if (isset($_SESSION['userid']) &&
     isset($_SESSION['username']) &&
     isset($_POST["Kommentar"]))  {
 
 
     try {
        
        
         $pdo = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');
         $statement = $pdo->prepare("INSERT INTO kommentare (id, userid, k_path, eintrag, autor, datum) VALUES (NULL, '$userid', '$y', '$bobo', '$username', CURRENT_TIMESTAMP)");
         $statement->execute();
         echo "Eintrag hinzugef&uuml;gt";
     }   catch (PDOException $e) {
         echo 'Fehler: ' . htmlspecialchars($e->getMessage());
     }
 }
?>
 
</body>
</html>

Version2 bzw. neuerdings Kommentar_auslesen.php :

Code:
<?php
session_start();
$userid = $_SESSION['userid'];
$username = $_SESSION['username'];
?>
<html>
<link rel="stylesheet" type="text/css" href="javacss.css">
<link rel="stylesheet" href="font-awesome-4.5.0/css/font-awesome.min.css">
<body>
<div class="all">

<div class="php_kom">
<!-- Hier wird der Container für die Kommentare definiert.
        Er wird durch Aufrufe von more() gefüllt. -->
<?php
 
$z= $_POST["imgurl"];
$test = "http://192.168.178.61/PHPversion/"; // mal gucken
  
$pdo = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');
$sql = "SELECT user_id FROM `bildtabelle` WHERE path = '$z'"; 
foreach ($pdo->query($sql) as $row) {
  
    $sql = "SELECT profilbild, vorname, nachname FROM `adressen` WHERE id = '".$row['user_id']."'";
    foreach ($pdo->query($sql) as $row) {
    echo "<img class='image' src='".$test.$row['profilbild']."'><p class='name'>".$row['vorname']." ".$row['nachname']."</p>";
    }
}
    echo "<hr class='stripe2'> ";
 
?>
 </div>
<button class='button03' >weitere Kommentare laden...</button>
<script>
    var start = 0;
        var count = 5;
        var imgurl = $("#kommentarfeld").data("imgurl");
        function more() {
            console.log(start, count);
            var params = {
                imgurl: imgurl,
                start: start,
                count: count
            };
            $.ajax({
                url: "Kommentar_nachladen.php",
                type: "POST",
                data: params,
                success: function (output) {
                    console.log(output);
                    var newcomments = $("<div>" + output + "</div>");
                    start += count;
                
                    if (newcomments.find("span.ende").length != 0) {
                        $(".button03").hide();
                    }
                    $(".php_kom").append(newcomments);
                }
            });
        }
        $(".button03").on("click", more);
        more();
</script>


<hr class="stripe3">
<i id='icon2' class='fa fa-comment-o ' aria-hidden='true'></i>
<?php
$z= $_POST["imgurl"];
$pdo = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');

$statement = $pdo->prepare("SELECT k_path, COUNT(*) AS anzahl FROM kommentare WHERE k_path = '$z'");
$statement->execute(); 
while($row = $statement->fetch()) {
echo "<p class='anzahl'>".$row['anzahl']."</p>";
}
?>
<i id='icon' class='fa fa-star-half-o' aria-hidden='true'></i>
<hr class="stripe">
<form method="post" class="formular">
<textarea data-imgurl="<?php echo $z; ?>" cols="35" rows="1" id="kommentarfeld" name="Kommentar" placeholder="Kommentar hinzufügen..."></textarea><br/>
    </form>
<script>
$("#kommentarfeld").on("keydown", function (event) {
            var komm = $("#kommentarfeld").val();
            var imgurl = $("#kommentarfeld").data("imgurl");
            var code = (event.keyCode ? event.keyCode : event.which);
            if (code == 13) {
                event.preventDefault();
                console.log("enter pressed");
                // hier die Aktionen zum Abschicken des Kommentars
                $.ajax({
            url: "Kommentar_eintragen.php",
            data: {imgurl: imgurl, Kommentar: komm},
            type: "POST",
            success: function(input) {
                console.log("Success input = " + input); // kann später raus   
                inside(imgurl);
               // hier möglicherweise eine geeignete Meldung an den
               // Benutzer, dass der Kommentar eingetragen wurde
            },
            error: function() {}
      });
                $('.formular')[0].reset();
                
                 function inside(imgurl) {
        $.ajax({
            url: "Kommentar_auslesen.php",
            data: {imgurl: imgurl},
            type: "POST",
            success: function(input) {
                console.log("Success input = " + input); // kann später auch raus
                $("#comments").html(input);
                // Ausgabe von Version2.php steht unter dem Parameter output zur Verfügung
                // in deinem Fall wären das die Kommentare
            },
            error: function( /* Parameter entspr Doku */ ) {}
        })
    }
                              
            }
        });   
</script>

</div>
</body>
</html>
 
Okay also ich habe jetzt mal ein wenig rum probiert und meine den Fehler gefunden zu haben. Teste jetzt noch ein wenig und melde mich dann nochmal :)
 
Also es läuft nach ein paar Tests immer noch alles so wie gewollt so das ich weiter zum nächsten Schritt gehen kann und zwar arbeite ich gerade daran das es für den User auch möglich ist ein Kommentar zu löschen. Das löschen von Einträgen aus einer Datenbank an sich ist nicht das Problem aber ich versuche mal zu erklären woran es hackt.

Codet: Kommentar_nachladen.php
PHP:
<?php
session_start();
$userid = $_SESSION['userid'];
?>
<?php



$z= $_POST["imgurl"];
$start = $_POST["start"];
$count = $_POST["count"];
$count2 = $count + 1;
$delete = "<i id='icon3' class='fa fa-times' aria-hidden='true'></i>";
 
try {
    $db = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');
    $sql = "SELECT kommentare.id ,kommentare.userid, kommentare.k_path, kommentare.eintrag, kommentare.autor, kommentare.datum, DATE_FORMAT(datum,'%d.%m.%Y um %H:%i') AS meindatum FROM `kommentare` WHERE kommentare.k_path = '$z' ORDER BY kommentare.datum DESC LIMIT $start, $count2";
    $ergebnis = $db->query($sql);
    $countread = 0;
  
    foreach ($ergebnis as $zeile) {
        if ($countread < $count) {
          if ($userid == $zeile['userid']) {
        printf("<p class='rest'><a class='Kom_name' href=\"mailto:%s\">%s</a> am %s $delete</p>
          <h3>%s</h3><p style='margin-bottom: 15px;'>%s</p><hr noshade=\"noshade\" />",
          urlencode($zeile['']), // da stand mal email
          htmlspecialchars($zeile['autor']),
          htmlspecialchars($zeile['meindatum']),
          htmlspecialchars($zeile['']), // hier stand mal userid
          nl2br(htmlspecialchars($zeile['eintrag']))
          );
    } else {printf("<p class='rest'><a class='Kom_name' href=\"mailto:%s\">%s</a> am %s</p>
          <h3>%s</h3><p style='margin-bottom: 10px'>%s</p><hr noshade=\"noshade\" />",
          urlencode($zeile['']), // da stand mal email
          htmlspecialchars($zeile['autor']),
          htmlspecialchars($zeile['meindatum']),
          htmlspecialchars($zeile['']), // hier stand mal userid
          nl2br(htmlspecialchars($zeile['eintrag']))
          );}
        }
        $countread++;
    }
    if ($countread < $count2) {
        echo '<span class="ende"></span>';
    }
}  catch (PDOException $e) {
  echo 'Fehler: ' . htmlspecialchars($e->getMessage());
}
?>

Ich nutze diesen Code um die Kommentare aus der Datenbank auszulesen. Mittlerweile habe ich das ganze soweit überarbeitet so das ein Icon neben dem Kommentar des eingelogten Users erscheint. Klickt man auf dieses Icon, soll das Kommentar gelöscht werden.

Es gibt da dann noch diese Datei: Kommentar_loeschen.php

PHP:
<?php
session_start();
$userid = $_SESSION['userid'];
?>

<?php

$pdo = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');

$id_eintrag = $_GET["delid"];

if ($userid == $zeile['userid']) {

$statement = $pdo->prepare("DELETE FROM `kommentare` WHERE id = $id_eintrag");
$statement->execute();
}
?>

Mit dieser Datei soll der Lösch-Vorgang dann durchgesetzt werden. Das ganze kann so aber noch nicht funktionieren.
Mein Plan ist es das ich nicht extra auf eine andere Seite weitergeleitet werden um ein Kommentar zu löschen, sondern ich mich weiterhin in der Lightbox befinde. Das bedeutet also das es wieder von Vorteil wäre Ajax zu benutzen.

Doch genau hier liegt das Problem. Ich bin mir nicht ganz sicher wie ich am besten vorgehen soll. Wahrscheinlich wäre es Sinnvoll das ganze per include zu machen so wie ich das hier schon mal gemacht habe:

Code:
function inside(imgurl) {
        $.ajax({
            url: "Kommentar_auslesen.php",
            data: {imgurl: imgurl},
            type: "POST",
            success: function(input) {
                console.log("Success input = " + input); // kann später auch raus
                $("#comments").html(input);
                // Ausgabe von Version2.php steht unter dem Parameter output zur Verfügung
                // in deinem Fall wären das die Kommentare
            },
            error: function( /* Parameter entspr Doku */ ) {}
        })
    }

Doch wie übertrage ich dann noch zusätzlich Informationen wie z.B die ID des Eintrags aus der Kommentar_nachladen.php ?

PS: Ich weiß das dass nicht funktionieren kann ...$id_eintrag = $_GET["delid"];
Eigentlich soll für $id_eintrag die id aus Kommentar_nachladen.php übertragen werden
 
Werbung:
Okay also ich verstehe was du meinst. Du nutzt aber ein img-tag in dem ganzen. Ich hatte dafür ein Icon von Fontawesome und dazu die Frage ob ich das nicht rein theoretisch auch so machen kann ?

Code:
$delete = "<i id='icon3' class='fa fa-times' aria-hidden='true' data-userid='$userid' data-commid='".$zeile['id']."'></i>";
 
Okay also ich habe das ganze dann mal versucht umzusetzen. Sieht jetzt so aus

Kommentar_nachladen.php:

PHP:
<?php
session_start();
$userid = $_SESSION['userid'];
?>
<?php



$z= $_POST["imgurl"];
$start = $_POST["start"];
$count = $_POST["count"];
$count2 = $count + 1;
$delete = "<i id='icon3' class='fa fa-times' aria-hidden='true' data-userid='$userid' data-commid='".$zeile['id']."'></i>";
 
try {
    $db = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');
    $sql = "SELECT kommentare.id ,kommentare.userid, kommentare.k_path, kommentare.eintrag, kommentare.autor, kommentare.datum, DATE_FORMAT(datum,'%d.%m.%Y um %H:%i') AS meindatum FROM `kommentare` WHERE kommentare.k_path = '$z' ORDER BY kommentare.datum DESC LIMIT $start, $count2";
    $ergebnis = $db->query($sql);
    $countread = 0;
  
    foreach ($ergebnis as $zeile) {
        if ($countread < $count) {
          if ($userid == $zeile['userid']) {
        printf("<p class='rest'><a class='Kom_name' href=\"mailto:%s\">%s</a> am %s $delete</p>
          <h3>%s</h3><p style='margin-bottom: 15px;'>%s</p><hr noshade=\"noshade\" />",
          urlencode($zeile['']), // da stand mal email
          htmlspecialchars($zeile['autor']),
          htmlspecialchars($zeile['meindatum']),
          htmlspecialchars($zeile['']), // hier stand mal userid
          nl2br(htmlspecialchars($zeile['eintrag']))
          );
    } else {printf("<p class='rest'><a class='Kom_name' href=\"mailto:%s\">%s</a> am %s</p>
          <h3>%s</h3><p style='margin-bottom: 10px'>%s</p><hr noshade=\"noshade\" />",
          urlencode($zeile['']), // da stand mal email
          htmlspecialchars($zeile['autor']),
          htmlspecialchars($zeile['meindatum']),
          htmlspecialchars($zeile['']), // hier stand mal userid
          nl2br(htmlspecialchars($zeile['eintrag']))
          );}
        }
        $countread++;
    }
    if ($countread < $count2) {
        echo '<span class="ende"></span>';
    }
}  catch (PDOException $e) {
  echo 'Fehler: ' . htmlspecialchars($e->getMessage());
}
?>
<script>
$("#icon3").on("click", function {
    var params = {
        imgurl: imgurl, // weiss ich im Moment nicht, wo die her kommt, sollte aber verfügbar sein
        userid: $(this).data("userid"),
        commid: $(this).data("commid")
    }
  
    $.ajax({
            url: "Kommentar_loeschen.php",
            data: params,
            type: "POST",
            success: function(input) {
            console.log("Success input = " + input); // kann später auch raus
                $("#icon3").html(input);
            },
            error: function( /* Parameter entspr Doku */ ) {}
    })
    };
</script>


Kommentar_loeschen.php:

Code:
<?php
session_start();
$userid = $_SESSION['userid'];
?>

<?php

$pdo = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');

$start = $_POST["userid"];
$start = $_POST["commid"];

if ($userid == $_POST['userid']) {

$statement = $pdo->prepare("DELETE FROM `kommentare` WHERE id = "$_POST["commid"]"");
$statement->execute();
}
?>


Problem ist das dass ganze noch nicht funtkioniert. In der Konsole wird mir auch nichts angezeigt :/
 
Die imgurl bekomme ich ja eigentlich hierüber

$z= $_POST["imgurl"];

Kann es sein das irgendwas vor var params nicht richtig ist ? Fehlt da nicht ein function () ?
Code:
<script>
$(".close").on("click", function {
              
    var params = {
        imgurl: $z, // weiss ich im Moment nicht, wo die her kommt, sollte aber verfügbar sein
        userid: $(this).data("userid"),
        commid: $(this).data("commid")
    }
  
    $.ajax({
            url: "Kommentar_loeschen.php",
            data: params,
            type: "POST",
            success: function(input) {
            console.log("Success input = " + input); // kann später auch raus
                $(".close").html(input);
            },
            error: function( /* Parameter entspr Doku */ ) {}
    })
    };
</script>

Ich habe das ganze mit der Klasse dann auch so gelöst:
Code:
$delete = "<i id='icon3' class='fa fa-times' class='close' aria-hidden='true' data-userid='$userid' data-commid='".$zeile['id']."'></i>";

Leider funktioniert immer noch irgendwas nicht so wie es soll. In der Konsole wird auch nach wie vor nichts angezeigt :/
 
Werbung:
Mmh also irgendwie will das nicht. Ich frage mich gerade auch wofür ich die imgurl eigentlich brauche ? In der Kommentar_loeschen.php Datei benötige ich diese ja nicht.

Hier nochmal die aktuelle Kommentar_nachladen.php:

PHP:
<?php
session_start();
$userid = $_SESSION['userid'];
?>
<?php



$z= $_POST["imgurl"];
$start = $_POST["start"];
$count = $_POST["count"];
$count2 = $count + 1;
$delete = "<i id='icon3' class='fa fa-times' class='close' aria-hidden='true' data-bildurl='$z' data-userid='$userid' data-commid='".$zeile['id']."'></i>";
 
try {
    $db = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');
    $sql = "SELECT kommentare.id ,kommentare.userid, kommentare.k_path, kommentare.eintrag, kommentare.autor, kommentare.datum, DATE_FORMAT(datum,'%d.%m.%Y um %H:%i') AS meindatum FROM `kommentare` WHERE kommentare.k_path = '$z' ORDER BY kommentare.datum DESC LIMIT $start, $count2";
    $ergebnis = $db->query($sql);
    $countread = 0;
 
    foreach ($ergebnis as $zeile) {
        if ($countread < $count) {
          if ($userid == $zeile['userid']) {
        printf("<p class='rest'><a class='Kom_name' href=\"mailto:%s\">%s</a> am %s $delete</p>
          <h3>%s</h3><p style='margin-bottom: 15px;'>%s</p><hr noshade=\"noshade\" />",
          urlencode($zeile['']), // da stand mal email
          htmlspecialchars($zeile['autor']),
          htmlspecialchars($zeile['meindatum']),
          htmlspecialchars($zeile['']), // hier stand mal userid
          nl2br(htmlspecialchars($zeile['eintrag']))
          );
    } else {printf("<p class='rest'><a class='Kom_name' href=\"mailto:%s\">%s</a> am %s</p>
          <h3>%s</h3><p style='margin-bottom: 10px'>%s</p><hr noshade=\"noshade\" />",
          urlencode($zeile['']), // da stand mal email
          htmlspecialchars($zeile['autor']),
          htmlspecialchars($zeile['meindatum']),
          htmlspecialchars($zeile['']), // hier stand mal userid
          nl2br(htmlspecialchars($zeile['eintrag']))
          );}
        }
        $countread++;
    }
    if ($countread < $count2) {
        echo '<span class="ende"></span>';
    }
}  catch (PDOException $e) {
  echo 'Fehler: ' . htmlspecialchars($e->getMessage());
}
?>
<script>
$("'.close'").on("click", function {
            
    var params = {
        bildurl: $(this).data("bildurl"), // weiss ich im Moment nicht, wo die her kommt, sollte aber verfügbar sein
        userid: $(this).data("userid"),
        commid: $(this).data("commid")
    }
 
    $.ajax({
            url: "Kommentar_loeschen.php",
            data: params,
            type: "POST",
            success: function(input) {
            console.log("Success input = " + input); // kann später auch raus
                $(".close").html(input);
            },
            error: function( /* Parameter entspr Doku */ ) {}
    })
    };
</script>

Hier nochmal Kommentar_loeschen.php:

PHP:
<?php
session_start();
$userid = $_SESSION['userid'];
?>

<?php

$pdo = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');

$user = $_POST["userid"];
$id_eintrag = $_POST["commid"];



$statement = $pdo->prepare("DELETE FROM `kommentare` WHERE id = $id_eintrag");
$statement->execute();

?>

Irgendwie scheint es so als wenn der Button nicht auf den klick reagieren würde. Ich habe da gerade auch mal ein paar Sachen ausprobiert also auch ohne icon usw. aber auch da keine Reaktion. Es wundert mich auch das nicht mal in der Konsole was angezeigt wird
 
Zuletzt bearbeitet:
Oh stimmt habe das direkt verändert.

Code:
<script>
$(".close").on("click", function {
              
    var params = {
        userid: $(this).data("userid"),
        commid: $(this).data("commid")
    };
  
    $.ajax({
            url: "Kommentar_loeschen.php",
            data: params,
            type: "POST",
            success: function(input) {
            console.log("Success input = " + input); // kann später auch raus
                $(".close").html(input);
            },
            error: function( /* Parameter entspr Doku */ ) {}
    })
    };
</script>

Jedoch immer noch keine Reaktion bei einem klick. Bin jetzt schon die ganze Zeit dabei zu probieren aber so langsam gehen mir die Ideen aus :/
 
was ich irgendwie komisch finde ist das normalerweise in meinem Editor eine farbliche Hervorhebung von solchen Code teilen stattfindet

Code:
var params = {
        userid: $(this).data("userid"),
        commid: $(this).data("commid")
    };

params, userid und commid müssten eigentlich in Farbe da stehen. Werden aber in schwarz dargestellt. Kann das auf ein Problem hinweisen ?
 
Werbung:
ich mache mich gleich weiter ans Debuggen aber kann es vielleicht auch was mit $delete zu tun haben ?

Oder wäre so etwas sinnlos:
$($delete).on("click", function() {

Das ganze funktioniert nach wie vor nicht. In der Konsole ist auch weder ein success noch ein Error callback
 
@Sempervivum
Wäre es nicht einfacher, wenn du das komplette Script schreibst, ansonsten könnte das hier ein "never ending" Thread werden :D:p:D:p
 
Was meinst du mit nicht einfach für alle Kommentar ? Letztendlich soll es ja möglich sein jedes Kommentar löschen zu können und nicht nur die die neu geladen wurden...

Ich habe dann aber eventuell gerade etwas interessantes herausgefunden und zwar scheint es so als wenn die Informationen von commid nicht übermittelt werden.

Die Datei Kommentar_loeschen.php funktioniert nur bekommt einfach keine Daten. Also entweder läuft etwas mit der Übertragung schief oder die id wird gar nicht erst ermittelt.

Außerdem ist mir aufgefallen das dass Click-Event auch gar nicht triggert.

Nein, das $delete ist nur auf PHP-Ebene verfügbar.

Ein anderes Problem könnte sein: Wann registrierst Du denn den Click-Handler. Das HTML mit den Kommentaren wird ja nach für nach geladen und Du musst den Handler nach dem Laden registrieren. Dabei musst Du aufpassen, dass Du es nicht mehrfach tust, d. h. nicht einfach für alle Kommentare, sondern nur für die, die neu geladen wurden.

Naja und Kommentar_nachladen.php wird hierüber das erste mal aufgerufen, bin mir aber nicht sicher ob du das meinst.

Code:
<script>
    var start = 0;
        var count = 5;
        var imgurl = $("#kommentarfeld").data("imgurl");
        function more() {
            console.log(start, count);
            var params = {
                imgurl: imgurl,
                start: start,
                count: count
            };
            $.ajax({
                url: "Kommentar_nachladen.php",
                type: "POST",
                data: params,
                success: function (output) {
                    console.log(output);
                    var newcomments = $("<div>" + output + "</div>");
                    start += count;
                
                    if (newcomments.find("span.ende").length != 0) {
                        $(".button03").hide();
                    }
                    $(".php_kom").append(newcomments);
                }
            });
        }
        $(".button03").on("click", more);
        more();
</script>
Dieser Code-Schnipsel befindet sich in der Datei Kommentar_auslesen.php
 
Werbung:
Jetzt funktionierts ! Ich musste zwar noch die $delete ein wenig umschreiben da es nicht möglich war die data-Attribute in einem i-Tag zu nutzen aber jetzt läuft das schon mal. Wenn ich das ganze jetzt noch direkt sichtbar machen möchte das dass Kommentar gelöscht wurde nutze ich wieder die function inside ?

Also in etwa so ?

Code:
function inside(params) {
        $.ajax({
            url: "Kommentar_auslesen.php",
            data: params,
            type: "POST",
            success: function(input) {
                console.log("Success input = " + input); // kann später auch raus
                $(".close").html(input);
            },
            error: function( /* Parameter entspr Doku */ ) {}
        })
    }
 
Bin mir nicht sicher, was es mit dieser Funktion inside auf sich hat, weil ich den Aufruf nicht kenne. Wahrscheinlich musst Du alle Kommentare neu abrufen, die bisher angezeigt wurden. anzahl-1 da ja einer gelöscht wurde.

Nun ja die Funktion hatten wir benutzt um ein Kommentar direkt nach Eingabe, sichtbar zu machen. Das ganze findet sich in der Datei Kommentar_auslesen.php und sieht so aus:

Code:
if (code == 13) {
                event.preventDefault();
                console.log("enter pressed");
                // hier die Aktionen zum Abschicken des Kommentars
                $.ajax({
            url: "Kommentar_eintragen.php",
            data: {imgurl: imgurl, Kommentar: komm},
            type: "POST",
            success: function(input) {
                console.log("Success input = " + input); // kann später raus   
                inside(imgurl);
               // hier möglicherweise eine geeignete Meldung an den
               // Benutzer, dass der Kommentar eingetragen wurde
            },
            error: function() {}
      });
                $('.formular')[0].reset();
                
                 function inside(imgurl) {
        $.ajax({
            url: "Kommentar_auslesen.php",
            data: {imgurl: imgurl},
            type: "POST",
            success: function(input) {
                console.log("Success input = " + input); // kann später auch raus
                $("#comments").html(input);
                // Ausgabe von Version2.php steht unter dem Parameter output zur Verfügung
                // in deinem Fall wären das die Kommentare
            },
            error: function( /* Parameter entspr Doku */ ) {}
        })
    }
                              
            }

Wäre das Prinzip beim löschen nicht in etwa das selbe ? Denn schließlich lese ich ja auch in diesem Code, alle Kommentare erneut aus
 
Also ich habe es mit dem Code jetzt realisiert und alles scheint zu funktionieren. Ich werde das ganze wie immer noch weiter austesten und mich dann nochmal melden :)
 
Werbung:
Ich habe dann jetzt gerade mal eben verschiedenste Dinge ausprobiert und dabei ist mir etwas aufgefallen. Ich habe die Scripte jetzt nämlich auf mehrere Seiten auf meiner Website angewendet. Überall da wo ich eine Lightbox benötige. Das funktioniert auch.
Doch auf manchen Seiten benötige ich zwei Klicks bevor sich die Lightbox öffnet und das auch nur einmalig.

Also nachdem man bereits ein Bild zwei mal angeklickt hat, lässt sich ein anderes ganz normal mit einem Klick öffnen.

Was könnte das Problem sein ?
 
Das müsste man sich vollständig in Aktion ansehen. Kann mich jetzt nicht erinnern: Sind die Seiten irgendwo online? Wenn es nicht so umfangreich wäre, würde ich ja selber eine Testseite anlegen, aber mit der Datenbank und allem Drum und Dran wird es mir zu aufwändig. Wenn Du noch keinen Webspace hast, empfehle ich für Testzwecke bplaced.net
Tut mir leid das ich so lange auf ne Antwort habe warten lassen. Also war ein relativ billiger Fehler von mir der einfach was mit der CSS Datei zu tun hatte- Habe das Problem also nun von selbst gelöst. Ich habe jetzt aber in der Zeit in der ich mal wieder hier und da getestet habe noch etwas gefunden was ich nicht ganz verstehe...

Und zwar dachte ich mir das es mit Sicherheit nicht schlecht wäre wenn bspw. ein User eines seines Bilder löschen möchte, dass dabei dann auch alle zu dem gehörigen Kommentare gelöscht werden. In der Theorie eigentlich ganz leicht aber irgendwas übersehe ich.

Um ein Bild Zu löschen nutze ich folgenden Code:

Code:
<?php   
 $test = "http://192.168.178.61/PHPversion/"; // mal gucken
    
$pdo = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');
$sql = "SELECT bildtabelle.id, bildtabelle.path, bildtabelle.timestamp FROM `bildtabelle` WHERE $userid = bildtabelle.user_id ORDER BY timestamp DESC "; 
foreach ($pdo->query($sql) as $row) {
    echo "
<a data-lightbox='roadtrip' href='".$test.$row['path']."'><img class='bild3' src='".$test.$row['path']."'></a><a href=
Bilder_loeschen.php?delid=".$row['id']."><button style='width: 13%; background: red; color: white; height: 30px; margin-top: 13px; cursor: pointer; '>Löschen</button></a></br></br></br>";
}
    
?>

Das ganze leitet mich auf die Seite Bilder_loeschen.php weiter:

Code:
<?php

$pdo = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');

$x= $_GET["delid"];

$statement = $pdo->prepare("DELETE FROM `bildtabelle` WHERE id = $x");
$statement->execute();
echo "<p style='font-family: Raleway;'>Das Bild wurde erfolgreich gelöscht ! <a href =Set_Bilder_loeschen.php>Hier geht es zurück zu den Einstellungen.</a></p>"
?>

So funktioniert das auch. Doch eigentlich habe ich mir gedacht das es in Kombination mit den Kommentaren sinniger wäre wenn ich den Löschvorgang anhand des Pfads fest mache und nicht an der ID.

Also habe ich den Code minimal verändert so das dass dabei raus kam:

Code:
<?php   
 $test = "http://192.168.178.61/PHPversion/"; // mal gucken
    
$pdo = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');
$sql = "SELECT bildtabelle.id, bildtabelle.path, bildtabelle.timestamp FROM `bildtabelle` WHERE $userid = bildtabelle.user_id ORDER BY timestamp DESC "; 
foreach ($pdo->query($sql) as $row) {
    echo "
<a data-lightbox='roadtrip' href='".$test.$row['path']."'><img class='bild3' src='".$test.$row['path']."'></a><a href=
Bilder_loeschen.php?delid=".$row['path']."><button style='width: 13%; background: red; color: white; height: 30px; margin-top: 13px; cursor: pointer; '>Löschen</button></a></br></br></br>";
}
    
?>

Ich habe also die $row['id'] zu $row['path'] geändert. Das selbe in der Datei Bilder_loeschen.php:

Code:
<?php

$pdo = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');

$x= $_GET["delid"];

$statement = $pdo->prepare("DELETE FROM `bildtabelle` WHERE path = $x");
$statement->execute();
echo "<p style='font-family: Raleway;'>Das Bild wurde erfolgreich gelöscht ! <a href =Set_Bilder_loeschen.php>Hier geht es zurück zu den Einstellungen.</a></p>"
?>

Doch obwohl ich im Prinzip nur alles von id zu path geändert habe, funktioniert es einfach nicht. Was übersehe ich ? :/
 
Zurück
Oben