Klikken op plaatje maakt text wijzigbaar
Ik ben bezig met een site
naast de texten moeten edit icoontjes komen,
als daar dan op geklikt wordt, moet het veld ernaast editable worden, en opgeslagen kunnen worden in de database.
nu kan ik het wel gaan doen met een link naar ?wijzig=hoofdtekst
maar dat vind ik een beetje lelijk..
Kan iemand me hiermee helpen? wellicht met ajax/javascript ofzo?
alvast bedankt!
Toevoeging op 15/07/2011 18:37:06:
Het systeem werkt niet helemaal, ik heb al honderden posts doorgelezen maar ik krijg het maar niet voor elkaar..
hier staat de implementatie...
http://www.appelsiini.net/projects/jeditable
ik heb bijvoorbeeld dit:
</div>
$inleiding wordt opgehaald uit de database. dat is de $row['inleiding']
in mijn JS staat dit bij de textile:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
$(".editable_textile").editable("http://www.sitenaam.nl/save.php", {
indicator : "<img src='images/icons/indicator.gif'>",
// loadurl : "http://www.appelsiini.net/projects/jeditable/php/load.php",
type : "textarea",
submit : "Opslaan",
cancel : "Annuleer",
tooltip : "Klik om te wijzigen"
});
indicator : "<img src='images/icons/indicator.gif'>",
// loadurl : "http://www.appelsiini.net/projects/jeditable/php/load.php",
type : "textarea",
submit : "Opslaan",
cancel : "Annuleer",
tooltip : "Klik om te wijzigen"
});
Loadurl heb ik weggelaten (met standaard link), want anders, als ik op de tekst klik,
krijg ik niet de $inleiding te zien in de textarea, maar "Loading..."
Ik weet niet of dat nog iets uitmaakt??
maar dan gaan we naar save.php
op de site heb ik vaak dit gelezen:
"In PHP you can access the id of the element via $_POST["id"] and the new value of edited element via $_POST["value"]."
Dus dit is mijn save.php:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
session_start();
include('db_connection.php');
//aangezien het gebruikerspagina's zijn met verschillende inleidingen
//wil ik eerst kijken of er een persoon is ingelogd...
if(isset($_SESSION['nickname'];)){
$nick = $_SESSION['nickname'];
if (isset($_POST["id"])) {
$inleiding = stripslashes($_POST["value"]);
$query = mysql_query("Update table
set inleiding = ".mysql_real_escape_string($inleiding)."
where nickname = ".mysql_real_escape_string($nickname));
}
?>
session_start();
include('db_connection.php');
//aangezien het gebruikerspagina's zijn met verschillende inleidingen
//wil ik eerst kijken of er een persoon is ingelogd...
if(isset($_SESSION['nickname'];)){
$nick = $_SESSION['nickname'];
if (isset($_POST["id"])) {
$inleiding = stripslashes($_POST["value"]);
$query = mysql_query("Update table
set inleiding = ".mysql_real_escape_string($inleiding)."
where nickname = ".mysql_real_escape_string($nickname));
}
?>
als ik op Opslaan klik na het wijzigen van de tekst, staat er opeens "Click to edit"
ipv de gewijzigde tekst.. als ik dan de pagina weer refresh is het weer goed..
weet iemand wat ik moet doen??
Alvast heel erg bedankt!
Gewijzigd op 15/07/2011 18:38:07 door Jason van der Zeeuw
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$query = mysql_query("
UPDATE `table`
SET inleiding = '".mysql_real_escape_string($inleiding)."'
WHERE nickname = '".mysql_real_escape_string($nickname)."'
");
?>
$query = mysql_query("
UPDATE `table`
SET inleiding = '".mysql_real_escape_string($inleiding)."'
WHERE nickname = '".mysql_real_escape_string($nickname)."'
");
?>
Gebruik a.u.b wel een andere naam voor de tabel met de naam 'table'. Dit is namelijk een 'reserved word'.
En laad je ook jQuery in?
Gewijzigd op 15/07/2011 18:56:39 door - Ariën -
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
session_start();
include('db_connection.php');
$nickname = $_SESSION['nickname'];
if (isset($_POST["id"])) {
$inleiding = stripslashes($_POST["value"]);
$query = mysql_query("Update portfolio
SET inleiding = '" . mysql_real_escape_string($inleiding) . "'
WHERE nickname = '" . mysql_real_escape_string($nickname) . "'
");
}
include('db_connection.php');
$nickname = $_SESSION['nickname'];
if (isset($_POST["id"])) {
$inleiding = stripslashes($_POST["value"]);
$query = mysql_query("Update portfolio
SET inleiding = '" . mysql_real_escape_string($inleiding) . "'
WHERE nickname = '" . mysql_real_escape_string($nickname) . "'
");
}
maar als ik dus op Opslaan klik, staat er opeens "click to edit"
als ik dan refresh, staat er weer de oude tekst, dus nog ongewijzigd..
Tja, dat wordt dan even debuggen he. Voer het script eens uit via een normaal formulier? Werkt dat wel? Echo anders eens wat je in je query gooit.
maar ik snap ook niet waarom er opeens "click tot edit" komt te staan..?
En wat zegt de Foutconsole van FF of Chrome?
Failed to load resource: the server responded with a status of 404 (Not Found)
Gewijzigd op 15/07/2011 19:23:18 door - Ariën -
ik heb volgens mij wél alles..
Toevoeging op 15/07/2011 19:22:14:
jquery.colorbox.js
/js
GET
404
Not Found
text/html
dat gaat dus over de jquery van een colorbox die ik ook op die pagina heb, dus niet over dat script...
dat script gebruikt ook jQuery.
Toevoeging op 15/07/2011 19:25:10:
Dus de foutenconsole is nu leeg, en het script weigert nog exact hetzelfde :(
voorbeeld?
Je gebruikt er toch maar 1?
(late reactie, ik moest even weg)