jQuery sendet kein Post/keine Daten

  • Themenstarter Themenstarter ChrisMunich
  • Beginndatum Beginndatum
C

ChrisMunich

Hallo,

ich habe jetzt viele Seiten abgesucht und nichts gefunden. Aus diesem Grund frage ich Euch um Rat :)

Ich will über eine Checkbox eine Variable per POST an eine PHP-Datei senden und sie auswerten bzw. in die Datenbank schreiben.
Leider kommen aber keine Daten an, habe ich etwas falsch gemacht?

<script language="JavaScript" type="text/javascript">
$(document).ready(function() {
//create image
// $('<img src="images/contentload.gif" id="spinner2" />').css('position','fixed').hide().appendTo('body');
//for every field change
$('.ajax').change(function() {


//get element position
var position = $(this).offset();
//position image
$('#spinner').css({ top: position.top , left: position.left + $(this).width() + 0 }).fadeIn();
//ajax
$.post('community/livechat/optionen.php', {
ajax:0,
value: $(this).val()

},function() {
$('#spinner').fadeOut();
});



});
});
</script>

<?php
$userid = $_POST['userstatus'];

$sql = "SELECT abwesend FROM phpkit_user WHERE user_id='".$userid."' LIMIT 1";
$checkstatus = mysql_fetch_array($sql);







if ($checkstatus == '0') {

$sql = "UPDATE phpkit_user SET abwesend='1' WHERE user_id='".$userid."'";
$query = mysql_query($sql);

} else {

}


?>


Könnt ihr mir helfen?


LG Chris
 
$_POST['userstatus']; wird in deinem Ajax request ja auch nirgends übergeben sondern nur ajax und value.
 
Ja cool, Deine Antwort hat mir einen Denkstoß gegeben :)
Danke!

Jetzt funktiuoniert es ABER jedesmal wenn die Seite neu geladen wird, wird der Wert in der DB wieder auf 0 gesetzt, woran liegt das?

Hier nochmal der überarbeitete Code:

<script type="text/javascript">
$(document).ready(function() {
//create image
// $('<img src="images/contentload.gif" id="spinner2" />').css('position','fixed').hide().appendTo('body');
//for every field change
$('.ajax').change(function() {
//get element position
var position = $(this).offset();
//position image
$('#spinner').css({ top: position.top , left: position.left + $(this).width() + 0 }).fadeIn();
//ajax
$.post('$_SERVER[REQUEST_URI]', {
ajax:1,
value: $(this).val()
},function() {
$('#spinner').fadeOut();
});
});
});
</script>


<?php
$checkstatus = $DB->fetch_array($DB->query("SELECT abwesend FROM phpkit_user WHERE user_id='".$USER['id']."' LIMIT 1"));
if ($checkstatus['abwesend'] == '1') {
$isabwesend = 'checked';
$setabwesend = '1';
} else {
$setabwesend = '0';
}

if ($_POST['value'] == '0') {
$DB->query("UPDATE phpkit_user SET abwesend='1' WHERE user_id='".$USER['id']."'");
#header('location: '.$_SERVER['REQUEST_URI']);

} else {
$DB->query("UPDATE phpkit_user SET abwesend='0' WHERE user_id='".$USER['id']."'");
#header('location: '.$_SERVER['REQUEST_URI']);
}
?>


<li class="view" id="userpanel">
<label>Als abwesend anzeigen <input value="$setabwesend" type="checkbox" class="ajax" $isabwesend /> <div style="width: 20px; display: inline-block;"><img src="images/contentload.gif" style="display: none;" id="spinner" /></div</label>
</li>
 
Jetzt funktiuoniert es ABER jedesmal wenn die Seite neu geladen wird, wird der Wert in der DB wieder auf 0 gesetzt, woran liegt das?

Wenn die Seite neu geladen wird?
Dein Script macht doch ( außer den Event-Handler zu binden ) garnichts beim laden der Seite.

Kann es sein das das alles ( javascript / php ) in einer Datei steht und nicht in verschiedenen?
Falls ja ist es völlig logisch das der Wert immer auf 0 gesetzt wird weil immer der else Teil von folgendem ausgeführt wird:
PHP:
if ($_POST['value'] == '0') {
$DB->query("UPDATE phpkit_user SET abwesend='1' WHERE user_id='".$USER['id']."'");
#header('location: '.$_SERVER['REQUEST_URI']);

} else {
$DB->query("UPDATE phpkit_user SET abwesend='0' WHERE user_id='".$USER['id']."'");
#header('location: '.$_SERVER['REQUEST_URI']);
}

Weil $_POST['value'] == '0' auch dann nicht zutrifft wenn $_POST['value'] garnicht existiert.

Kapsel das ganze mal in ein if(isset($_POST['value']))
 
Ja klar, tut mir leid, ist wohl nich mein Tag heute.

Jetzt funktioniert es:

if ($_POST['userstatus'] == '0') {
$DB->query("UPDATE phpkit_user SET abwesend='1' WHERE user_id='".$USER['id']."'");
#header('location: '.$_SERVER['REQUEST_URI']);

} elseif ($_POST['userstatus'] == '1') {
$DB->query("UPDATE phpkit_user SET abwesend='0' WHERE user_id='".$USER['id']."'");
#header('location: '.$_SERVER['REQUEST_URI']);
}

Hab statt else nun elseif verwenden um den Post zu "checken".

Trotzdem vielen Dank nochmal für die Hilfe :)
Ein schönen Rest-Sonntag noch.


LG Chris
 

Neue Beiträge

Zurück