Update functie maken jquery

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Machiel K

Machiel K

30/06/2013 20:27:09
Quote Anchor link
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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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 gepdatet");
       }
     });
 }
</script>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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
?>
 
PHP hulp

PHP hulp

07/12/2021 01:46:30
 
- Ariën -
Beheerder

- Ariën -

30/06/2013 20:36:55
Quote Anchor link
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.
 
Nick Dijkstra

Nick Dijkstra

30/06/2013 20:45:48
Quote Anchor link
Je vergeet inderdaad kopje1 mee te geven
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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 gepdatet");
       }
     });
 }
</script> - See more at: http://www.phphulp.nl/php/forum/topic/update-functie-maken-jquery/91343/last/#sthash.U8Cy9SgU.dpuf
 
Wouter J

Wouter J

30/06/2013 21:04:15
Quote Anchor link
Ik hou er altijd meer van een javascript object te gebruiken ipv deze uri paramter notatie:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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 gepdatet");
       }
     });
 }
</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
 
Machiel K

Machiel K

30/06/2013 21:33:02
Quote Anchor link
- 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?
 
Wouter J

Wouter J

30/06/2013 22:06:50
Quote Anchor link
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']
 
Machiel K

Machiel K

30/06/2013 22:35:40
Quote Anchor link
- Aar - op 30/06/2013 20:36:55:
Echo $query eens. Je wet dan welke query er uit wordt gevoerd.
Dat probeer ik dus te doen.

Maar als ik letterlijk $query ga echöen in update.php krijg ik het volgende:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
UPDATE `pagina` SET `box_een_kopje` = '' WHERE `id` = ''


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).
 
Kris Peeters

Kris Peeters

01/07/2013 10:46:49
Quote Anchor link
Wel, echo $query.
Die echo geef je terug aan javascript.

Daar doe je:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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);
       }
     });
 }


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() ...)
 
Machiel K

Machiel K

01/07/2013 11:46:22
Quote Anchor link
Goed,

In mijn update.php staat nu het volgende:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;


En in de script tags staat wat Kris net zei.

Als ik nu op mijn button klik
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<input type="button" value="Update" onClick="UpdateRecord(<?= $_GET['id']; ?>);">
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
 
Kris Peeters

Kris Peeters

01/07/2013 11:51:40
Quote Anchor link
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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
      jQuery.ajax({
       type: "POST",
       url: "functies/update.php",
 
Machiel K

Machiel K

01/07/2013 11:58:37
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
UPDATE `bericht` SET `box_een_kopje` = '' WHERE `id` = '1'";


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
 
Kris Peeters

Kris Peeters

01/07/2013 12:05:31
Quote Anchor link
Ja, precies, nu moet je dat nog in die knop steken.
Niet vergeten om aanhalingstekens toe te voegen (als het geen getal is).

bv.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<input type="button" value="Update" onClick="UpdateRecord(<?= $_GET['id']; ?>, 'Hello World');">
Gewijzigd op 01/07/2013 12:06:16 door Kris Peeters
 
Machiel K

Machiel K

01/07/2013 12:11:42
Quote Anchor link
Kris Peeters op 01/07/2013 12:05:31:
bv.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<input type="button" value="Update" onClick="UpdateRecord(<?= $_GET['id']; ?>, 'Hello World');">

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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?= $_POST['kopje1']; ?>
in ieder geval lukt het niet.
 
Kris Peeters

Kris Peeters

01/07/2013 12:24:07
Quote Anchor link
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.
Gewijzigd op 01/07/2013 12:36:15 door Kris Peeters
 
Machiel K

Machiel K

01/07/2013 12:53:03
Quote Anchor link
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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>


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
 
Kris Peeters

Kris Peeters

01/07/2013 13:41:59
Quote Anchor link
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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>


Lukt dat?
Gewijzigd op 01/07/2013 13:43:24 door Kris Peeters
 
Machiel K

Machiel K

01/07/2013 14:29:12
Quote Anchor link
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?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$var1 = @$_POST['id'];
$var2 = @$_POST['kopje1'];
$var3 = @$_POST['tekst1'];
Gewijzigd op 01/07/2013 14:30:21 door Machiel K
 
Kris Peeters

Kris Peeters

01/07/2013 14:58:08
Quote Anchor link
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
 
Machiel K

Machiel K

01/07/2013 15:36:23
Quote Anchor link
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!
 
Kris Peeters

Kris Peeters

01/07/2013 16:07:18
Quote Anchor link
:)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.