• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Variabel von PHP an JS

EvilBen

New member
Huhu Leute,

ich habe eine Frage:
ich habe ein Formular, welches nach absenden auf eine JS Funktion zugreift, die dann im Hintergrund ein PHP Script aufruft, so dass die Seite nicht aktualisiert oder neugeladen werden muss.
Nun habe ich aber eben mehrere solcher DIVs und Formulare (ähnlich wie die Postseite auf Facebook) um die verschiedenen DIVs zu unterscheiden, habe ich eine aufsteigende Nummer mit an den DIV Namen angehangen^^
Nun soll, nachdem die PHP Datei aufgerufen wurde, irgendwie diese ID an die Funktion zurückgegeben werden um sie zu aktualisieren. Im moment sieht die JS Funktion so aus:

Code:
 $(document).ready(function(){
        $("#form1").submit(function(e){
          e.preventDefault();

          $.post("comments_kommentieren.php",$("#form1").serialize(),function(msg){
			form1.reset();
			 
				$("#contentkommentare_x").load("comments_kommentare.php");

          });
        });
      });

Das "X" eben muss ersetzt werden. auch das form1 sollte dann form1, form2 ... Formx haben.
Hoffe ihr wisst weiter

DANKE
 
daß ist nichts, womit sich PHP beschäftigen muß. Die Zuordnung was woher wohin geht, geschieht in JavaScript. Z.B. wenn das <div> innerhalb des <form> ist, kannst du das über das form-Element bestimmen, da du dieses Element ja direkt für die Eingabedaten verwendest (=> Scope).
 
Muss für jedes <form> auch das gleiche PHP-Script (comments_kommentare.php) angesprochen werden? Dann würde ja in jedem <div> das Gleiche stehen...
 
ne ist schon das gleiche script, aber eben so aufgebaut (schematisch, wollte nicht den ganzen code reinstellen ums nicht zu unübersichtlich zu machen:

Code:
$postzaehler=1;
$a_kom = 1;

while( "es Ergebnisse für die Beiträge gibt"){

?>
<!-- Kommentarfunktion -->
<div class="collapse" id="<?php echo $postzaehler; ?>" >
<?php // Das Formular zum Kommentieren ?>

    <form name="form1" id="form1" action="" >
  
    <input type="text" class="form-control"  placeholder="..."  name="kommi2" id="kommi2"></input> 
    <input type="hidden" name="abs" value="<?php echo $_SESSION['id']; ?>"> 
    <input type="hidden" name="empf" value="<?php echo $foto['usr_id']; ?>">
    <input type="hidden" name="komid" value="<?php echo $row['pos_id']; ?>">
    <input type="hidden" name="divid" value="<?php echo $a_kom ; ?>">
  <button type="submit" class="btn btn-default" value="los">Post!</button>
</form>
<hr>
<?php
while ( "Gibt es Kommentare?") {
echo "<div id=\"contentkommentare_".$a_kom."\">";
// Ausgabe der Kommentare
echo "</div";
}

echo "</div>";
$postzaehler++;
}

so ist das ganze angeordnet . . .
 
Meine Frage bezog sich eigentlich auf das .load(). Da du dieses ohne Parameter aufrufst musst du ihm ja irgendwie mitteilen welche Kommentare du genau haben willst... oder ist das neue HTML jetzt doch in der Variablen msg drin?
 
Dann solltest du dein Problem ja mit den Hinweisen von Dormilich lösen können - oder wo hängst du genau?
 
er meint damit, daß du die IDs nicht brauchst, weil das Kommentar-div immer in der gleichen (relativen) Position zu geklickten Button ist.
 
und wie würde das dann in Jquery aussehen?
und macht es einen unterschied ob ich 1, 2 oder 3 solcher divs habe?

Sorry ich bin kein JS Spezialist bin grade dabei mich etwas einzuarbeiten
 
Also habe es alles einmal in Firefox probiert und dabei gibt er mir den Fehler aus das Variablen ausserhalb dieser Datei nicht vorhanden ist. Ich denke, es liegt daran dass eben nur diese Seite neu geladen werden soll, was dazu führt, dass alle Variablen ausserhalb des Containers der aktualisiert werden soll, eben weg sind. Nur wie kann ich dies nun fixen ?
 
Code:
<?php
// Kommentare ausgeben!
$kom="SELECT * FROM sn_post_kommis WHERE kom_id='".$row['pos_id']."' ORDER BY kom_date ASC";
$komr=$db->query($kom);
$anzkom=$komr->num_rows;


if($anzkom > 0) {
while($kom=$komr->fetch_assoc()){
	echo "<div id=\"contentkommentare_".$a_kom."\">";
	//User Daten laden
	$usersql="SELECT * FROM sn_users WHERE usr_id='".$kom['kom_abs']."'";
	$user_row=$db->query($usersql);
	$user=$user_row->fetch_assoc();
	
?>
<tr>
<td width="30px"><img width="30" height="30" src="./img/usr/thumbs/<?php echo $user['usr_profilbild']; ?>">

</td>
<td><div style="font-size:9px;"><?php echo $user['usr_vorname']." ".$user['usr_nachname']." schrieb ".datumundzeit($kom['kom_date']).":";?></div>
<hr><?php echo $kom['kom_kommi']; ?></td>
</tr>
<?php echo "</div>";
$a_kom++;


}
}else{
echo "Keine Kommentare";	
}
?>

Das ist die Datei, die für die Ausgabe der Kommentare zuständig ist. $row['pos_id'] fehlt in diesem Fall, aber halt nur nachdem das Formular abgesendet wurde. Den Rest des Kommentieren Teils wird auch gar nicht neugeladen, sondern nur die Kommentare und nicht zum Beispiel das Kommentierenfeld, denn sonst wäre dieser Fehler ja nicht.
 
Zuletzt bearbeitet:
Dem AJAX-Script für die Kommentare wird ja auch nicht gesagt, welche Kommentare es liefern soll.

ich sehe in dem Code 4 Variablen und 1 Funktion, die dieses Script als gegeben voraussetzt.

vielleicht wäre es sinnvoller, daß die Formularverarbeitung dir das gewünschte HTML liefert anstatt einen separaten Call dafür zu machen.
 
Und genau das verstehe ich ja nicht, wie soll ich dem Ajax Script (theoretisch) sagen, welche Kommentare es liefern soll
 
Zurück
Oben