session in query verwerken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Michiel v

michiel v

15/02/2012 17:44:04
Quote Anchor link
Het lukt me niet om de session resultaten in de query te verwerken.
Indien ik bij $level en $user getallen neerzet werkt het wel.


Zie onderstaand het script:

<php

$level = $_SESSION['level'] ; // LEVEL (!!!)
$user = $_SESSION['user_id']; // USER ID (!!!)

mysql_query(" UPDATE transactions , users SET
`user_level` = '$level' ,
`transactie_status` = 'betaald'
WHERE transactions.transactie_id = '$_GET[transaction_id]'
AND users.id = '$user'
") or die(mysql_error());


?>
 
PHP hulp

PHP hulp

16/02/2025 17:18:59
 
Noppes Homeland

Noppes Homeland

15/02/2012 17:47:57
Quote Anchor link
Nou lees dan nog eens op php.net na wat je niet achterwege mag laten!!

En weet je hoeveel topics er over dit onderwer[ behandeld zijn, al had je gezocht dan had je je oplossing allang gehad!!!!
 
Reshad F

Reshad F

15/02/2012 17:49:27
Quote Anchor link
even een vraagje: ik neem aan dat dit voor een betaal methode is.. moet je eerst een sessie aanmaken dit doe je zo
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php

$_SESSION
["myusername"] = $naam;

?>


en als je de sessie weer wilt ophalen in de pagina waar je naartoe gaan na het submitten bijv

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php

$naam1
= $_SESSION['myusername'];


?>


en wanneer je het in je query gebruikt ziet het er zo uit

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php

WHERE naam = '".$_SESSION['myusername']."'

?>
Gewijzigd op 15/02/2012 17:51:19 door Reshad F
 
Michiel v

michiel v

15/02/2012 17:53:44
Quote Anchor link
Hoi Farid,

Ik heb de sessions al aangemaakt. Deze werken ook gewoon maar wat kan er mis gaan?

Toevoeging op 15/02/2012 17:59:17:

Ook dit pakt hij niet!

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
<?php

    if ($iDEAL->getPaidStatus() == true)
    {

                
mysql_query(" UPDATE transactions , users SET
`user_level` = '"
.$_SESSION['level']."' ,
`transactie_status` = 'betaald'
WHERE transactions.transactie_id = '$_GET[transaction_id]'
AND users.id =  '"
.$_SESSION['user_id']."'
    
"
) or die(mysql_error());


?>
 
Noppes Homeland

Noppes Homeland

15/02/2012 18:02:10
Quote Anchor link
Leren onthouden, dat je http://www.php.net/session_start nooit vergeet als je met sessies werk.

En een session aan een nieuwe variabele toekennen is overbodig En ook voor session waarden dien je rekening te houden met SQL Injectie. (http://www.php.net/mysql_real_escape_string)

En voor de rest: pas correcte controles, validaties en foutafhandeling toe!!!!
 
Reshad F

Reshad F

15/02/2012 18:04:16
Quote Anchor link
gebruik geen backticks, echo de mysql_error() even en post even wat je krijgt
 
Michiel v

michiel v

15/02/2012 18:04:25
Quote Anchor link
De session wordt gestart aan het begin van de pagina. Nog andere ideen?

Toevoeging op 15/02/2012 18:04:30:

De session wordt gestart aan het begin van de pagina. Nog andere ideen?

Toevoeging op 15/02/2012 18:05:10:

De session wordt gestart aan het begin van de pagina. Nog andere ideen?

Toevoeging op 15/02/2012 18:05:52:

wat zijn backticks?
 
Reshad F

Reshad F

15/02/2012 18:07:31
Quote Anchor link
dat zijn de `````` die je gebruikt zoals bijv bij `user_level`
 
Michiel v

michiel v

15/02/2012 18:08:25
Quote Anchor link
ok super ga het ff proberen.

Toevoeging op 15/02/2012 18:15:33:

helaas dat was niet het probleem! heb nu het volgende zonder de backsticks:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
mysql_query(" UPDATE transactions , users SET
user_level = '"
.$_SESSION['level']."' ,
transactie_status = 'betaald'
WHERE transactions.transactie_id = '$_GET[transaction_id]'
AND users.id =  '"
.$_SESSION['user_id']."'
"
) or die(mysql_error());
?>
 
- SanThe -

- SanThe -

15/02/2012 18:25:35
Quote Anchor link
Welke van de twee?
UPDATE transactions , users
 
Michiel v

michiel v

15/02/2012 18:45:30
Quote Anchor link
Bedoel je dit, maar dit werkt ook niet waarom pakt het niet de waardes van de SESSION? De session is wel echt ingesteld en kan deze ook op de volgende pagina ophalen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
mysql_query(" UPDATE transactions , users SET
users.user_level = '"
.$_SESSION['level']."' ,
transactions.transactie_status = 'betaald'
WHERE transactions.transactie_id = '$_GET[transaction_id]'
AND users.id =  '"
.$_SESSION['user_id']."'
    
"
) or die(mysql_error());
?>


Toevoeging op 15/02/2012 18:51:11:

Dit werkt wel: Maar het moet in een variable of session komen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php

mysql_query(" UPDATE transactions , users SET
users.user_level = '16' ,
transactions.transactie_status = 'betaald'
WHERE transactions.transactie_id = '$_GET[transaction_id]'
AND users.id =  '140'
    
"
) or die(mysql_error());

?>
 
Tim van Norde

Tim van Norde

15/02/2012 21:11:08
Quote Anchor link
Zet even error_reporting(E_ALL); bovenaan je pagina, en check wat er uit komt. Ook even na gaan dat je session_start(); aan roept voordat je ook maar enige output naar de browser stuurt.
 
Obelix Idefix

Obelix Idefix

15/02/2012 21:47:54
Quote Anchor link
Echo de waarde van de beide sessies eens naar het scherm. Kloppen die?

Echo je query eens naar het scherm. Klopt het dan met wat je zou verwachten?
Probeer die output eens in je admin panel. Foutmelding?

Waarom haal je '$_GET[transaction_id]' niet buiten quotes in je query?

Overigens staat op http://www.w3schools.com/php/php_mysql_update.asp :

UPDATE table_name
SET column1=value, column2=value2,...
WHERE some_column=some_value

Daar wordt maar 1 tabel gebruikt. Geen idee of het wel mogelijk is om in 1 query meerdere tabellen tegelijk te updaten.
 
- SanThe -

- SanThe -

15/02/2012 22:18:50
Quote Anchor link
Obelix en Idefix op 15/02/2012 21:47:54:
Daar wordt maar 1 tabel gebruikt. Geen idee of het wel mogelijk is om in 1 query meerdere tabellen tegelijk te updaten.


Volgens mij kan dat niet. vandaar reeds mijn post:

- SanThe - op 15/02/2012 18:25:35:
Welke van de twee?
UPDATE transactions , users
 
Michiel v

michiel v

15/02/2012 22:35:25
Quote Anchor link
Hoe kan ik dan na 1 if 2 query's uitvoeren?
 
Reshad F

Reshad F

15/02/2012 22:57:06
Quote Anchor link
Door een alter query uit te voeren zal het wel lukken denk ik weet niet of dat de juiste benaming is maar het is dus query uitvoeren in een query, dus eerst query 1 en dan query 2 maar ik denk dat meerdere tables ook met php zelf kan doormiddel van die if. Weet alleen even niet hoe je dat het handigst op kan lossen..
 
Erwin H

Erwin H

16/02/2012 09:27:36
Quote Anchor link
- SanThe - op 15/02/2012 22:18:50:
Obelix en Idefix op 15/02/2012 21:47:54:
Daar wordt maar 1 tabel gebruikt. Geen idee of het wel mogelijk is om in 1 query meerdere tabellen tegelijk te updaten.


Volgens mij kan dat niet. vandaar reeds mijn post:

En of dat kan, alleen dan moet je wel de juiste syntax gebruiken.

Even een voorbeeldje wat ik net getest heb op mijn eigen machine:
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
-- tabel 1
create table update_a(
  id int auto_increment,
  name varchar(10),
  primary key (id)
);

-- tabel 2, link_id is de link naar update_a
create table update_b(
  id int auto_increment,
  link_id int,          
  address varchar(10),
  primary key (id)
);

-- insert 2 records in beide tabellen
insert into update_a(id, name) values(1,'aaa'),(2,'bbb');
insert into update_b(id, link_id, address) values(1,1,'aaa'),(2,2,'bbb');


En dan om update_a.name EN update_b.address in een keer naar andere waardes te zetten:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
update update_a a
inner join update_b b on a.id = b.link_id
set a.name = 'ccc', b.address = 'ccc'
where a.id=1;


Test het zelf zou ik zeggen.
 



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.