Gå til innhold

Problemer med php & ajax spørring


Anbefalte innlegg

Hei!

 

Driver og lager liten medlemssystem for meg og noen venner, og skal ha sånn ajax "trykk her for å redigere" så popper opp textarea og du skriver, og den lagrer der uten å reloade browseren. Alt det funker, MEN informasjonen blir ikke lagret i databasen.

 

Brukte denne guiden: http://24ways.org/2005/edit-in-place-with-ajax

 

Så problemet.

 

Her er fila som skal sende til serveren (er lokal webserver så pass og det er bytta nå) Den heter didyouknow.php som ligger i profile_updates mappa.

 

 

<?php

$l = mysql_connect ( "localhost" , "root" , "" ) or die("Error connecting: <br><br>".mysql_error());
mysql_select_db( "medlemssystem" ) or die("Error getting db: <br><br>".mysql_error());

$uid = $_SESSION['s_uid'];
$content = $_POST['content'];

$query = mysql_query("UPDATE users SET didyouknow = '$content' WHERE id = '$uid' LIMIT 1") or die(mysql_error());

if ($query) {
echo htmlspecialchars($content);
}

else { echo "Det funka faen ikke!";  }


?>

 

 

 

Så er det JS fila.

 

 

 

Event.observe(window, 'load', init, false);

function init(){
makeEditable('didyouknow');
}

function makeEditable(id){
Event.observe(id, 'click', function(){edit($(id))}, false);
Event.observe(id, 'mouseover', function(){showAsEditable($(id))}, false);
Event.observe(id, 'mouseout', function(){showAsEditable($(id), true)}, false);
}

function edit(obj){
Element.hide(obj);

var textarea = '<div id="'+obj.id+'_editor"><textarea id="'+obj.id+'_edit" name="'+obj.id+'" rows="4" cols="30" style="width: 200px; background-color: #CCC; font-size: 11px;">'+obj.innerHTML+'</textarea>';
var button	 = '<div><input id="'+obj.id+'_save" type="button" value="Lagre" /> ELLER <input id="'+obj.id+'_cancel" type="button" value="Avbryt" /></div></div>';

new Insertion.After(obj, textarea+button);	

Event.observe(obj.id+'_save', 'click', function(){saveChanges(obj)}, false);
Event.observe(obj.id+'_cancel', 'click', function(){cleanUp(obj)}, false);

}

function showAsEditable(obj, clear){
if (!clear){
	Element.addClassName(obj, 'editable');
}else{
	Element.removeClassName(obj, 'editable');
}
}

function saveChanges(obj){

var new_content	=  escape($F(obj.id+'_edit'));

obj.innerHTML	= "Lagrer...";
cleanUp(obj, true);

var success	= function(t){editComplete(t, obj);}
var failure	= function(t){editFailed(t, obj);}

  var url = 'profile_updates/didyouknow.php';
var pars = 'id=didyouknow&content='+new_content;
var myAjax = new Ajax.Request(url, {method:'post', postBody:pars, onSuccess:success, onFailure:failure});

}

function cleanUp(obj, keepEditable){
Element.remove(obj.id+'_editor');
Element.show(obj);
if (!keepEditable) showAsEditable(obj, true);
}

function editComplete(t, obj){
obj.innerHTML	= t.responseText;
showAsEditable(obj, true);
}

function editFailed(t, obj){
obj.innerHTML	= '<b>Beklager</b>, oppdateringen ble ikke gjennomført.';
cleanUp(obj);
}

 

 

 

Håper virkelig noen kan hjelpe meg. Tror det har noe med at didyouknow.php ikke vet hva den skal sende til databasen.

Lenke til kommentar
Videoannonse
Annonse

du kan sende headere som gjør at browseren ikke cacher siden. du kan hente informasjonen du skal vise med ajax og gjøre en ajax oppdatering når noe oppdateres og lagres.

 

<?php

header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past

?>

Endret av grimjoey
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...