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

PHP User in Freundesliste abspeichern

Also ich bin nach wie vor am probieren und mir ist da glaube ich was aufgefallen was nicht stimmt und zwar bin ich der Meinung das kein Wert für $action übergeben wird. Habe das ganze mal mit var_dump ausgeben lassen und dabei kommt 0 raus

Liegt das hier dran ?
Code:
<form method="post">
<?php
if ($userid == $user) {
    echo "";
} else {
   echo "<div id='button'></div>";
}
?>
</form>

Außerdem wollte ich noch fragen welchen Code ich nun eigentlich für die follow.php verwenden soll.
Den :
Code:
<?php
error_reporting(E_ALL);
ini_set('display_errors', true);
$userid = $_GET['userid'];
$user = $_GET['user'];
var_dump($user);
var_dump($userid);
if (isset($_GET['action'])) $action = $_GET['action']; else $action = "";
$pdo = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');
var_dump($action);
if ($action == "Folgen") {
    $statement = $pdo->prepare("INSERT INTO abonnenten (iduser, followed) VALUES ('$userid', '$user')");
    $statement->execute();
}
 
if ($action == "Entfolgen") {
    $statement = $pdo->prepare("DELETE FROM `abonnenten` WHERE iduser = '$userid' AND followed = '$user'");
    $statement->execute();
}
 

$sql = "SELECT iduser, followed FROM abonennten WHERE iduser ='$userid' and followed = '$user'";
//var_dump($sql);
//var_dump($pdo->query($sql));
$result = $pdo->query($sql)->fetchAll();
if(count($result) == 0) {
    echo '<input class="follow" type="button" name="Folgen" value="Folgen">';
} else  {
    echo '<input class="follow" type="button" name="Entfolgen" value="Entfolgen">';
}
?>

oder den:

Code:
<?php
error_reporting(E_ALL);
ini_set('display_errors', true);
$pdo = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');
$userid = $_GET['userid'];
$user = $_GET['user'];
if (isset($_GET['action'])) $action = $_GET['action']; else $action = "";

switch ($action) {
    case "Folgen":
        $statement = $pdo->prepare("INSERT INTO abonennten (iduser, followed) VALUES ('$userid', '$user')");
        $statement->execute();
        echo "Entfolgen";
        break;
    case "Entfolgen":
        $statement = $pdo->prepare("DELETE FROM `abonennten` WHERE iduser = '$userid' AND followed = '$user'");
        $statement->execute();
        echo "Folgen";
        break;
    default:
        $sql = "SELECT iduser, followed FROM abonennten WHERE iduser ='$userid' and followed = '$user'";
        $result = $pdo->query($sql)->fetchAll();
        if(count($result) == 0) {
            echo 'Folgen';
        } else  {
            echo 'Entfolgen';
        }
}
?>
 
Werbung:
Also ich habe es jetzt nach langem austesten geschafft ! Vielen Dank bis hier hin auf jeden Fall doch es ein kleines Problem habe ich jetzt dazu bekommen.

Auf der Seite wird nämlich auch noch die Anzahl an Leuten angezeigt die einem Folgen bzw. denen man folgt. Die Zahl die da aber angezeigt wird, arbeitet verzögert. Das bedeutet der Button und die Funktion dahinter werden ausgeführt, die Anzahl der Leute bleibt aber bestehen bis ich die Seite neu lade.

Vermutlich wird auch das wieder über Ajax realisiert. Doch hier erstmal der Code zum Auslesen der Anzahl an Leuten

follower.php:

Code:
<html>

<link rel="stylesheet" href="follower_Design.css" type="text/css" />
    
<body>
<?php
$pdo = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');

$statement = $pdo->prepare("SELECT followed, COUNT(*) AS anzahl FROM abonennten WHERE followed = '$user'");
$statement->execute(); 
while($boo = $statement->fetch()) {
echo "<p id='myBtn' style='cursor: pointer'>".$boo['anzahl']."</p>";
}
?>

<!-- The Modal -->
<div id="myModal" class="modal">

  <!-- Modal content -->
<span class="close">&times;</span>
  <div class="modal-content">

    <p>
    <?php 
    $test = "http://192.168.178.61/PHPversion/";
    $pdo = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');
    $sql = "SELECT abonennten.iduser, abonennten.followed, adressen.profilbild, adressen.id, adressen.benutzername FROM abonennten, adressen WHERE abonennten.followed = '$user' AND adressen.id = abonennten.iduser"; 
    foreach ($pdo->query($sql) as $zeile)
    {
        echo "<img class='profilbild2' src='".$test.$zeile['profilbild']."'><p style='padding-top: 10px;'>".$zeile['benutzername']."</p><br>";
        
    }
    ?></p>
  </div>

</div>   

<script>
// Get the modal
var modal = document.getElementById('myModal');

// Get the button that opens the modal
var btn = document.getElementById("myBtn");

// Get the <span> element that closes the modal
var span = document.getElementsByClassName("close")[0];

// When the user clicks the button, open the modal
btn.onclick = function() {
    modal.style.display = "block";
}

// When the user clicks on <span> (x), close the modal
span.onclick = function() {
    modal.style.display = "none";
}

// When the user clicks anywhere outside of the modal, close it
window.onclick = function(event) {
    if (event.target == modal) {
        modal.style.display = "none";
    }
}
</script>   
    
</body>
</html>

auf der Hauptseite wird das ganze wie folgt eingebunden:

Code:
<h2 style="color: black; font-weight: normal; display: inline-block;">Follower<br><?php include("follower.php"); ?></h2>

Jetzt die Frage wie eine Einbindung über Ajax aussehen müsste. Ich habe da jetzt schon mal in etwa was geschrieben was noch nicht funktioniert. Wie müsste das ganze aussehen wenn das ganze funktionieren soll ?

Code:
<script>
 
                    $.ajax({
                        url: "follower.php",
                        data: dat,
                        type: "POST",
                        success: function (input) {
                            console.log("Success input = " + input); // kann später auch raus
                            $(".test").html(input);
                        },
                        error: function ( /* Parameter entspr Doku */) { }
                    });
                });
            
        </script>
 
Werbung:
Das follower.php benutzt die Variable $user. Wird es über Ajax aufgerufen, ist diese nicht gesetzt. Du musst sie in dem Fall als POST-Parameter übergeben.


Okay das habe ich dann mal probiert. Das ist jetzt mein Ajax-Code:

Code:
<script>
    
    var zahl = 32;
                function test() {
                    $.ajax({
                        url: "follower.php",
                        data: zahl,
                        type: "POST",
                        success: function (output) {
                            console.log("Success output = " + output); // kann später auch raus
                            $("#number").html(output);
                        },
                        error: function ( /* Parameter entspr Doku */) { }
                    });
                });
    $(".follow").on("click", test);
    test();
            
</script>

zahl soll später die Variable $user sein. Kann man das bei Ajax auch so schreiben ?
var zahl = $user;

#number ist das Element in dem dann auf der Hauptseite die Anzahl angezeigt werden soll. Sieht so aus
Code:
<h2 style="color: black; font-weight: normal; display: inline-block;">Follower<br><div id="number"></div></h2>

und dann möchte ich ja das quasi bei jedem Klick auf den Folgen/Entfolgen Button die Ajax Funktion ausgeführt wird. Deswegen diese Zeile (.follow ist der Button):
$(".follow").on("click", test);

In follower.php sieht das ganze dann wie folgt aus:
Code:
<html>

<link rel="stylesheet" href="follower_Design.css" type="text/css" />
    
<body>
<?php
$rom = $_POST['zahl'];   

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

$statement = $pdo->prepare("SELECT followed, COUNT(*) AS anzahl FROM abonennten WHERE followed = '$rom'");
$statement->execute(); 
while($boo = $statement->fetch()) {
echo "<p id='myBtn' style='cursor: pointer'>".$boo['anzahl']."</p>";
}
?>

<!-- The Modal -->
<div id="myModal" class="modal">

  <!-- Modal content -->
<span class="close">&times;</span>
  <div class="modal-content">

    <p>
    <?php 
    $test = "http://192.168.178.61/PHPversion/";
    $pdo = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');
    $sql = "SELECT abonennten.iduser, abonennten.followed, adressen.profilbild, adressen.id, adressen.benutzername FROM abonennten, adressen WHERE abonennten.followed = '$rom' AND adressen.id = abonennten.iduser"; 
    foreach ($pdo->query($sql) as $zeile)
    {
        echo "<img class='profilbild2' src='".$test.$zeile['profilbild']."'><p style='padding-top: 10px;'>".$zeile['benutzername']."</p><br>";
        
    }
    ?></p>
  </div>

</div>   

<script>
// Get the modal
var modal = document.getElementById('myModal');

// Get the button that opens the modal
var btn = document.getElementById("myBtn");

// Get the <span> element that closes the modal
var span = document.getElementsByClassName("close")[0];

// When the user clicks the button, open the modal
btn.onclick = function() {
    modal.style.display = "block";
}

// When the user clicks on <span> (x), close the modal
span.onclick = function() {
    modal.style.display = "none";
}

// When the user clicks anywhere outside of the modal, close it
window.onclick = function(event) {
    if (event.target == modal) {
        modal.style.display = "none";
    }
}
</script>   
    
</body>
</html>

Problem an dem ganzen ist das es nicht funktioniert. Was habe ich falsch gemacht ?
 
Hab ich gemacht und sieht jetzt so aus:

Code:
<script>
                function test() {
                    var zahl = 32;
                    $.ajax({
                        url: "follower.php",
                        data: {zahl: zahl},
                        type: "POST",
                        success: function (output) {
                            console.log("Success output = " + output); // kann später auch raus
                            $("#number").html(output);
                        },
                        error: function ( /* Parameter entspr Doku */) { }
                    });
                });
    $(".follow").on("click", test);
    test();
         
</script>

Funktioniert aber nach wie vor nicht. Die Daten werden nicht an follower.php übergeben und $rom aus Posting #58 ist gleich NULL.

Was mache ich falsch ?

In der Konsole findet sich auch nichts...

Letztendlich soll die Zahl ja immer im Element #number ausgegeben werden. Bei einem Klick auf follower.php soll sich die Zahl darin verändern doch das will einfach nicht klappen da die variable Zahl einfach nicht an follower.php übergeben wird :/
 
Also ich habe es hinbekommen :D Lag wohl an einem Unexpected Token.

Das ganze sieht jetzt so aus:

Code:
<script>
  $(".follow").on("click", test) 
    var zahl = 32;
    
                function test(zahl) {
                    $.ajax({
                        url: "follower.php",
                        data: {zahl: zahl},
                        type: "POST",
                        success: function (output) {
                            console.log("Success output = " + output); // kann später auch raus
                            $("#number").html(output);
                        },
                        error: function ( /* Parameter entspr Doku */) { }
                    });
                };
      test(zahl);
 
            
</script>

Jetzt fehlt mir nur noch eine entscheidende Sache. Ich brauche die Variable $user nur leider habe ich keine Ahnung wie ich es hinkriege sie hier einzubauen

var zahl = $user; // so funktionierts ja nicht

Also. Wie kriege ich es hin den Wert der Variable $user bei Ajax zu nutzen ?
 
Werbung:
Zurück
Oben