Update functie maken jquery
Hallo,
Ik heb me vandaag verdiept in het versturen van een formulier d.m.v. jQuery en ajax.
Nu lukt het prima, en ik krijg ook de alert "De pagina is geüpdatet", maar vervolgens veranderd het veld box_een_kopje niet in de database.
Nu ligt het denk ik aan de $_POST['kopje1'], dat ik die ook nog als var mee moet geven in de functie UpdateRecord?
Hopelijk kan iemand mij verder helpen om dit werkend te krijgen.
Machiel.
Ik heb me vandaag verdiept in het versturen van een formulier d.m.v. jQuery en ajax.
Nu lukt het prima, en ik krijg ook de alert "De pagina is geüpdatet", maar vervolgens veranderd het veld box_een_kopje niet in de database.
Nu ligt het denk ik aan de $_POST['kopje1'], dat ik die ook nog als var mee moet geven in de functie UpdateRecord?
Hopelijk kan iemand mij verder helpen om dit werkend te krijgen.
Machiel.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<script>
function UpdateRecord(id)
{
jQuery.ajax({
type: "POST",
url: "update.php",
data: 'id='+id,
cache: false,
success: function(response)
{
alert("De pagina is ge��pdatet");
}
});
}
</script>
function UpdateRecord(id)
{
jQuery.ajax({
type: "POST",
url: "update.php",
data: 'id='+id,
cache: false,
success: function(response)
{
alert("De pagina is ge��pdatet");
}
});
}
</script>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
include("config.php");
$var = @$_POST['id'] ;
// Normaal gesproken staat hier een hele lap aan velden, ik heb er nu als voorbeeld even één genomen
$query = "UPDATE `pagina` SET `box_een_kopje` = '".$_POST['kopje1']."' WHERE `id` = '".$var."'";
// Als er een fout in de query zit
if(!$resultaat = mysqli_query($verbinding, $query)) {
echo 'Het invoeren is niet gelukt';
// Als er geen fout in de query zit
} else {
echo 'Het invoegen is gelukt.';
}
// Deze echo's zie je niet maar dat was even om te kijken voor mezelf of de fout aan de query lag
?>
include("config.php");
$var = @$_POST['id'] ;
// Normaal gesproken staat hier een hele lap aan velden, ik heb er nu als voorbeeld even één genomen
$query = "UPDATE `pagina` SET `box_een_kopje` = '".$_POST['kopje1']."' WHERE `id` = '".$var."'";
// Als er een fout in de query zit
if(!$resultaat = mysqli_query($verbinding, $query)) {
echo 'Het invoeren is niet gelukt';
// Als er geen fout in de query zit
} else {
echo 'Het invoegen is gelukt.';
}
// Deze echo's zie je niet maar dat was even om te kijken voor mezelf of de fout aan de query lag
?>
Echo $query eens. Je wet dan welke query er uit wordt gevoerd.
Ik mis ook beveiliging tegen SQL-injection. Dus pas mysqli_real_escape_string() toe.
Ik mis ook beveiliging tegen SQL-injection. Dus pas mysqli_real_escape_string() toe.
Je vergeet inderdaad kopje1 mee te geven
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<script>
function UpdateRecord(id, kopje1)
{
jQuery.ajax({
type: "POST",
url: "update.php",
data: 'id='+id+'&kopje1='+kopje1,
cache: false,
success: function(response)
{
alert("De pagina is ge��pdatet");
}
});
}
</script> - See more at: http://www.phphulp.nl/php/forum/topic/update-functie-maken-jquery/91343/last/#sthash.U8Cy9SgU.dpuf
function UpdateRecord(id, kopje1)
{
jQuery.ajax({
type: "POST",
url: "update.php",
data: 'id='+id+'&kopje1='+kopje1,
cache: false,
success: function(response)
{
alert("De pagina is ge��pdatet");
}
});
}
</script> - See more at: http://www.phphulp.nl/php/forum/topic/update-functie-maken-jquery/91343/last/#sthash.U8Cy9SgU.dpuf
Ik hou er altijd meer van een javascript object te gebruiken ipv deze uri paramter notatie:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<script>
function UpdateRecord(id, kopje1)
{
jQuery.ajax({
type: "POST",
url: "update.php",
data: {'id': id, 'kopje1': kopje1},
cache: false,
success: function(response)
{
alert("De pagina is ge��pdatet");
}
});
}
</script> - See more at: http://www.phphulp.nl/php/forum/topic/update-functie-maken-jquery/91343/last/#sthash.U8Cy9SgU.dpuf- See more at: http://www.phphulp.nl/php/forum/topic/update-functie-maken-jquery/91343/last/#sthash.w830UA5N.dpuf
function UpdateRecord(id, kopje1)
{
jQuery.ajax({
type: "POST",
url: "update.php",
data: {'id': id, 'kopje1': kopje1},
cache: false,
success: function(response)
{
alert("De pagina is ge��pdatet");
}
});
}
</script> - See more at: http://www.phphulp.nl/php/forum/topic/update-functie-maken-jquery/91343/last/#sthash.U8Cy9SgU.dpuf- See more at: http://www.phphulp.nl/php/forum/topic/update-functie-maken-jquery/91343/last/#sthash.w830UA5N.dpuf
- Aar - op 30/06/2013 20:36:55:
Ik mis ook beveiliging tegen SQL-injection. Dus pas mysqli_real_escape_string() toe.
Klopt, zo ver was ik nog niet.. ik wou het eerst maar eens werkend zien te krijgen.
Ik heb nu alle dingen toegepast.. alleen hoe kan ik die $query echoën? Als ik naar mijn update.php ga zullen de waardes niet meegegeven worden, en in de script tags weet ik ook niet hoe ik het zou moeten doen omdat de query niet in dat bestand staat?
Quote:
Als ik naar mijn update.php ga zullen de waardes niet meegegeven worden - See more at: http://www.phphulp.nl/php/forum/topic/update-functie-maken-jquery/91343/last/#sthash.qnVpF4dW.dpuf
Wat bedoel je? Je kan ze opvragen via $_POST['kopje1']
- Aar - op 30/06/2013 20:36:55:
Dat probeer ik dus te doen.Echo $query eens. Je wet dan welke query er uit wordt gevoerd.
Maar als ik letterlijk $query ga echöen in update.php krijg ik het volgende:
Tussen de '' zal inderdaad niks komen omdat in de update.php geen formulier staat met deze velden erin maar in de index.php.
Hoe kan ik nou controleren of de waardes wel daadwerkelijk goed worden opgegeven en dus een 'ingevulde' query laten zien (in index.php denk ik.. want update.php zal nooit aan $_POST['kopje1'] kunnen komen omdat daar geen formulier staat).
Wel, echo $query.
Die echo geef je terug aan javascript.
Daar doe je:
Dat is wat Ajax doet. Javascript stuurt een verzoek naar de server en krijgt een boodschap terug. Die kan je bv. in een alert steken (of via console.log() ...)
Die echo geef je terug aan javascript.
Daar doe je:
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
function UpdateRecord(id, kopje1)
{
jQuery.ajax({
type: "POST",
url: "update.php",
data: {'id': id, 'kopje1': kopje1},
cache: false,
success: function(response)
{
alert(response);
}
});
}
{
jQuery.ajax({
type: "POST",
url: "update.php",
data: {'id': id, 'kopje1': kopje1},
cache: false,
success: function(response)
{
alert(response);
}
});
}
Dat is wat Ajax doet. Javascript stuurt een verzoek naar de server en krijgt een boodschap terug. Die kan je bv. in een alert steken (of via console.log() ...)
Goed,
In mijn update.php staat nu het volgende:
En in de script tags staat wat Kris net zei.
Als ik nu op mijn button klik
krijg ik een hele lap tekst terug, namelijk de broncode van de index.php, maar dan niet van de broncode van de pagina waar ik ben (bericht/bewerken) maar de 404 (/404) pagina.
In mijn update.php staat nu het volgende:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
include("config.php");
$var1 = @$_POST['id'];
$var2 = @$_POST['kopje1'];
$query = "UPDATE `bericht` SET `box_een_kopje` = '".$var2."' WHERE `id` = '".$var1."'";
echo $query;
$var1 = @$_POST['id'];
$var2 = @$_POST['kopje1'];
$query = "UPDATE `bericht` SET `box_een_kopje` = '".$var2."' WHERE `id` = '".$var1."'";
echo $query;
En in de script tags staat wat Kris net zei.
Als ik nu op mijn button klik
krijg ik een hele lap tekst terug, namelijk de broncode van de index.php, maar dan niet van de broncode van de pagina waar ik ben (bericht/bewerken) maar de 404 (/404) pagina.
Gewijzigd op 01/07/2013 11:51:07 door Machiel K
een 404 dus
update.php moet in de zelfde folder staan als index.php . Is dat zo?
Als dat niet zo is, moet je het pad ook veranderen in de code
bv.
update.php moet in de zelfde folder staan als index.php . Is dat zo?
Als dat niet zo is, moet je het pad ook veranderen in de code
bv.
Jup!
(Hij doet het alleen als ik er een link van maak.. http://website.nl/page/bericht/update.php, index.php staat in dezelfde map als update.php namelijk in bericht. Maar als ik er url: "update.php" van maak werkt het niet)
Ik krijg nu als alert de volgende query:
Dat klopt, want het id waar ik het nu mee test is 1, alleen kopje1 word dus niet goed meegegeven. Heeft dit er ook meerte maken dat bij de button alleen UpdateRecord(id) word meegegeven en kopje1 niet?
(Hij doet het alleen als ik er een link van maak.. http://website.nl/page/bericht/update.php, index.php staat in dezelfde map als update.php namelijk in bericht. Maar als ik er url: "update.php" van maak werkt het niet)
Ik krijg nu als alert de volgende query:
Dat klopt, want het id waar ik het nu mee test is 1, alleen kopje1 word dus niet goed meegegeven. Heeft dit er ook meerte maken dat bij de button alleen UpdateRecord(id) word meegegeven en kopje1 niet?
Gewijzigd op 01/07/2013 12:12:39 door Machiel K
Ja, precies, nu moet je dat nog in die knop steken.
Niet vergeten om aanhalingstekens toe te voegen (als het geen getal is).
bv.
Niet vergeten om aanhalingstekens toe te voegen (als het geen getal is).
bv.
Code (php)
1
<input type="button" value="Update" onClick="UpdateRecord(<?= $_GET['id']; ?>, 'Hello World');">
Gewijzigd op 01/07/2013 12:06:16 door Kris Peeters
Kris Peeters op 01/07/2013 12:05:31:
Er komt nu inderdaad Hello World in de database te staan, top. Alleen hoe krijg ik hier nu nog de waarde die in kopje1 staat in de database i.p.v. Hello World?
Met in ieder geval lukt het niet.
Wel, wat staat daar?
Dus, er staat een knop. Die staat er al vooraleer de gebruiker er op klikt. Die knop heb jij daar gezet.
Dus dat kan niets te maken hebben met $_POST.
Wat is die knop? Staan er meerdere knoppen?
-----
Zeg, wat ben je eigenlijk aan het doen?
Een formulier verzenden? Toon eens dat formulier.
Je wil iets updaten. Leg eens uit wat er geüpdate hoort te worden.
Dus, er staat een knop. Die staat er al vooraleer de gebruiker er op klikt. Die knop heb jij daar gezet.
Dus dat kan niets te maken hebben met $_POST.
Wat is die knop? Staan er meerdere knoppen?
-----
Zeg, wat ben je eigenlijk aan het doen?
Een formulier verzenden? Toon eens dat formulier.
Je wil iets updaten. Leg eens uit wat er geüpdate hoort te worden.
Gewijzigd op 01/07/2013 12:36:15 door Kris Peeters
Ik ben bezig met een website voor een vriend van mij. Omdat hij zelf niks weet van html en php ben ik aan het maken dat hij pagina's kan toevoegen, siteberichten kan toevoegen ect. Nu kan het wel is zo zijn dat hij een sitebericht wilt veranderen, die optie zal ik daarom ook voor hem beschikbaar stellen. Dit wou ik met jQuery doen omdat het formulier in een soort van lightbox staat, en als de pagina dan refrersht is de lightbox ook verdwenen.
Ik haal de gegevens op uit de database en die zet ik alvast als value neer in een input veld. Daarbij heb ik het volgende formulier.
Nu wil ik dat als je op deze button klikt de velden box_een_kopje en box_een_tekst worden geüpdatet met de waardes die in de inpit velden kopje1 en tekst1 staan where het id .. is (word gehaald uit $_GET['id']).
Ik haal de gegevens op uit de database en die zet ik alvast als value neer in een input veld. Daarbij heb ik het volgende formulier.
Code (php)
1
2
3
4
5
2
3
4
5
<form method="POST" name="bewerken">
<input type="text" name="kopje1" value="<?=$rij->box_een_kopje; ?>"/>
<textarea name="tekst1"><?= $rij->box_een_tekst; ?></textarea>
<input type="button" id="button_id" value="Update" onClick="UpdateRecord(<?= $_GET['id']; ?>);">
</form>
<input type="text" name="kopje1" value="<?=$rij->box_een_kopje; ?>"/>
<textarea name="tekst1"><?= $rij->box_een_tekst; ?></textarea>
<input type="button" id="button_id" value="Update" onClick="UpdateRecord(<?= $_GET['id']; ?>);">
</form>
Nu wil ik dat als je op deze button klikt de velden box_een_kopje en box_een_tekst worden geüpdatet met de waardes die in de inpit velden kopje1 en tekst1 staan where het id .. is (word gehaald uit $_GET['id']).
Gewijzigd op 01/07/2013 12:54:27 door Machiel K
Okay, de informatie staat in de textarea en in de input. Niet in de knop.
Dus, we gaan ze lezen waar ze te vinden zijn.
Ik heb af en toe een id toegevoegd aan de markup. Dat is de simpelste manier om die in javascript aan te spreken.
Lukt dat?
Dus, we gaan ze lezen waar ze te vinden zijn.
Ik heb af en toe een id toegevoegd aan de markup. Dat is de simpelste manier om die in javascript aan te spreken.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<form method="POST" name="bewerken">
<input type="text" id="kopje1" name="kopje1" value="<?=$rij->box_een_kopje; ?>"/>
<textarea id="tekst1" name="tekst1"><?= $rij->box_een_tekst; ?></textarea>
<input type="button" id="button_id" value="Update" onClick="UpdateRecord(<?= $_GET['id']; ?>);">
</form>
<script>
function UpdateRecord(id) {
var kopje1 = $('#kopje1').val();
var tekst1 = $('#tekst1').val();
jQuery.ajax({
type: "POST",
url: "update.php",
data: {'id': id, 'kopje1': kopje1, 'tekst1': tekst1},
cache: false,
success: function(response) {
alert(response);
}
});
}
</script>
<input type="text" id="kopje1" name="kopje1" value="<?=$rij->box_een_kopje; ?>"/>
<textarea id="tekst1" name="tekst1"><?= $rij->box_een_tekst; ?></textarea>
<input type="button" id="button_id" value="Update" onClick="UpdateRecord(<?= $_GET['id']; ?>);">
</form>
<script>
function UpdateRecord(id) {
var kopje1 = $('#kopje1').val();
var tekst1 = $('#tekst1').val();
jQuery.ajax({
type: "POST",
url: "update.php",
data: {'id': id, 'kopje1': kopje1, 'tekst1': tekst1},
cache: false,
success: function(response) {
alert(response);
}
});
}
</script>
Lukt dat?
Gewijzigd op 01/07/2013 13:43:24 door Kris Peeters
En moet er dan nog iets aan update.php veranderd worden? Want deze zijn nu toch overbodig omdat je ze al aanmaakt in de functie?
Gewijzigd op 01/07/2013 14:30:21 door Machiel K
Gewoon even voor de duidelijkheid...
Er is php.
Php is een computerprogramma dat draait op de server.
Er is javascript.
Javascript is een computerprogramma dat draait op de computer van de gebruiker (geïntegreerd in de webbrowser).
De server kan niet zien dat javascript aan het "draaien" is. De server weet niets van wat er in een javascript functie gebeurt.
Omgekeerd al helemaal niet.
Javascript heeft geen php-variabele ter beschikking; javascript weet niet wat er op de server gebeurt.
De taak van php:
- Genereren van HTML, eventueel ook css en javascript.
- verwerken van $_POST, $_GET, ...
De taak van javascript:
-> alles wat gebeurt zonder dat de pagina ververst wordt.
Php en javascript kunnen communiceren via Ajax.
Daarbij stuurt javascript een verzoek naar een bepaalde url (in jouw geval stuurt het een post-verzoek naar update.php, met de post-data)
De server heeft dan die post data ter beschikking, kan die verwerken en geeft een boodschap terug aan javascript
Er is php.
Php is een computerprogramma dat draait op de server.
Er is javascript.
Javascript is een computerprogramma dat draait op de computer van de gebruiker (geïntegreerd in de webbrowser).
De server kan niet zien dat javascript aan het "draaien" is. De server weet niets van wat er in een javascript functie gebeurt.
Omgekeerd al helemaal niet.
Javascript heeft geen php-variabele ter beschikking; javascript weet niet wat er op de server gebeurt.
De taak van php:
- Genereren van HTML, eventueel ook css en javascript.
- verwerken van $_POST, $_GET, ...
De taak van javascript:
-> alles wat gebeurt zonder dat de pagina ververst wordt.
Php en javascript kunnen communiceren via Ajax.
Daarbij stuurt javascript een verzoek naar een bepaalde url (in jouw geval stuurt het een post-verzoek naar update.php, met de post-data)
De server heeft dan die post data ter beschikking, kan die verwerken en geeft een boodschap terug aan javascript
Dat is mij allemaal duidelijk ja.
Het is me gelukt, het is toch makkelijker dan ik dacht.. ik ben meer iemand die van iets uit gaat zonder iets te proberen en dat is natuurlijk hartstikke fout. Want hoe kan je nou weten of het goed of fout gaat zonder iets te proberen.. iets voor de komende keren voordat ik een topic start.
Bedankt allen!
Het is me gelukt, het is toch makkelijker dan ik dacht.. ik ben meer iemand die van iets uit gaat zonder iets te proberen en dat is natuurlijk hartstikke fout. Want hoe kan je nou weten of het goed of fout gaat zonder iets te proberen.. iets voor de komende keren voordat ik een topic start.
Bedankt allen!
:)




