komma door "explode" uit query halen
krijg de hele tijd een falende query ( eerst deed hij het wel) mijn fout afhandeling zegt foute sql syntax
dus heb hem ingevoerd in mijn phpadmin en er staat een , te veel in me query.
nu komt het probleem de query bevat een implode van een variable en ik krijg hem niet veranderd.
heel iritant kom pas net kijken bij php en sql hoop dat iemand me kan helpen
Dit is de melding
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '2,1) ORDER BY id ASC' at line 1
SELECT id, name, image, description, price FROM Tblproducts WHERE id IN(,2,1) ORDER BY id ASC
Als ik dit invoer bij phpadmin werkt hij wel
SELECT id, name, image, description, price FROM Tblproducts WHERE id IN(2,1) ORDER BY id ASC
mijn query in mijn script is
$query = 'SELECT id, name, image, description, price FROM Tblproducts WHERE id IN('.implode(',', array_keys($_SESSION['cart'])).') ORDER BY id ASC';
hoop dat iemand me kan helpen
gr jordy
Gewijzigd op 29/08/2013 19:20:19 door Jordy R
Niet goed gelezen, je had al het punt dat die komma komt door de implode. Wat je kan doen is de string die uit de implode komt te trimmen op komma's:
Gewijzigd op 29/08/2013 17:17:39 door Erwin H
nog maals ik kom net kijken dus sorry als het een domme vraag is
Kom op.... je ziet de overeenkomst toch wel tussen de implode in jouw query en de trim en implode in mijn code voorbeeld?
Parse error: syntax error, unexpected ',' in me query
heb nu dit staan
WHERE id IN trim(',', implode(',', array_keys($_SESSION['cart'])).') ORDER BY id ASC';
Als je dubbele quotes gebruikt bij SQL query's, zie je dat allemaal beter.
(Erwin, is dit wat je bedoelt?)
Code (php)
1
2
3
2
3
<?php
$sql = "WHERE id IN trim(',',". implode(',', array_keys($_SESSION['cart'])) .") ORDER BY id ASC";
?>
$sql = "WHERE id IN trim(',',". implode(',', array_keys($_SESSION['cart'])) .") ORDER BY id ASC";
?>
Gewijzigd op 29/08/2013 17:58:17 door Kris Peeters
werkt nog niet de trim wordt denk ik niet herkend al functie mijn editor geeft het niet weer als functie snap er de ballen van
Code (php)
1
2
3
2
3
<?php
$sql = "... WHERE id IN (". trim(',', implode(',', array_keys($_SESSION['cart'])) ).") ORDER BY id ASC";
?>
$sql = "... WHERE id IN (". trim(',', implode(',', array_keys($_SESSION['cart'])) ).") ORDER BY id ASC";
?>
Gewijzigd op 29/08/2013 18:09:11 door Kris Peeters
SELECT id, name, image, description, price FROM Tblproducts WHERE id IN trim(',',,2,1,3,6) ORDER BY id ASC
Toevoeging op 29/08/2013 18:12:24:
krijg nu deze
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') ORDER BY id ASC' at line 1
SELECT id, name, image, description, price FROM Tblproducts WHERE id IN () ORDER BY id ASC
Kris Peeters op 29/08/2013 17:56:47:
(Erwin, is dit wat je bedoelt?)
Code (php)
1
2
3
2
3
<?php
$sql = "WHERE id IN trim(',',". implode(',', array_keys($_SESSION['cart'])) .") ORDER BY id ASC";
?>
$sql = "WHERE id IN trim(',',". implode(',', array_keys($_SESSION['cart'])) .") ORDER BY id ASC";
?>
Uh, trim is nog altijd een php functie, dus nee.
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$query = 'SELECT id, name, image, description, price
FROM Tblproducts
WHERE id IN('.trim(implode(',', array_keys($_SESSION['cart'])), ',').')
ORDER BY id ASC';
?>
$query = 'SELECT id, name, image, description, price
FROM Tblproducts
WHERE id IN('.trim(implode(',', array_keys($_SESSION['cart'])), ',').')
ORDER BY id ASC';
?>
P.S. ik had overigens wel een foutje gemaakt in de trim functie, de karakters waarop getrimd moet worden staan natuurlijk in de tweede parameter...
Gewijzigd op 29/08/2013 23:01:02 door Erwin H
Heeft $_SESSION['cart'] als eerste waarde niet een lege waarde?
Dus wel een key, maar geen value?
Ik zou het zo doen:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
// verwijder alle lege zooi
array_filter($_SESSION['cart'];
// maak de query. Je code is goed.
$query = 'SELECT id, name, image, description, price
FROM Tblproducts
WHERE id IN ('.implode(',', array_keys($_SESSION['cart'])).')
ORDER BY id ASC';
?>
// verwijder alle lege zooi
array_filter($_SESSION['cart'];
// maak de query. Je code is goed.
$query = 'SELECT id, name, image, description, price
FROM Tblproducts
WHERE id IN ('.implode(',', array_keys($_SESSION['cart'])).')
ORDER BY id ASC';
?>
Gewijzigd op 30/08/2013 07:30:22 door Eddy E
en dat verklaart ook waarom hij het nu niet meer doet en eerst wel (zonder aan me script te hebben gezeten ) wel aan me database gezeten tevens werkt het trimmen niet hij haalt alle komma's weg en niet alleen de eerste maar wil jullie wel bedanken voor het lesje "trimmen"
ga nu met eddy's idee aan de slag
Toevoeging op 30/08/2013 20:18:39:
ik krijg het niet voor elkaar om die functie er in te krijgen hij blijft
Parse error: syntax error, unexpected ';' in regel geven
en al ik hem weg haal krijg ik deze
Parse error: syntax error, unexpected T_IF in regel
snap er niks van wat doe ik fout
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
array_filter($_SESSION['cart'];
/*
echo '<h3>inhoud van $_SESSION[\'cart\']:</h3>';
echo '<pre>';
print_r($_SESSION['cart']);
echo '</pre>';
*/
// laat de winkelwagen zien
if(count($_SESSION['cart']))
{
$query = 'SELECT id, name, image, description, price FROM Tblproducts WHERE id IN ('.implode (',',array_keys($_SESSION['cart'])).') ORDER BY id ASC';
$result = mysql_query($query);
$total = 0;
// debug
if (($result = mysql_query($query)) === false)
echo showSQLError($query,mysql_error(),'Fout met het ophalen van de gebruiker.');
}
elseif (mysql_num_rows($result) == 0)
{
echo 'Er geen resultaat!';
}
else
{
// einde
while($row = mysql_fetch_assoc($result));
{
$totalprice = $_SESSION['cart'][$row['id']] * $row['price'];
?>
array_filter($_SESSION['cart'];
/*
echo '<h3>inhoud van $_SESSION[\'cart\']:</h3>';
echo '<pre>';
print_r($_SESSION['cart']);
echo '</pre>';
*/
// laat de winkelwagen zien
if(count($_SESSION['cart']))
{
$query = 'SELECT id, name, image, description, price FROM Tblproducts WHERE id IN ('.implode (',',array_keys($_SESSION['cart'])).') ORDER BY id ASC';
$result = mysql_query($query);
$total = 0;
// debug
if (($result = mysql_query($query)) === false)
echo showSQLError($query,mysql_error(),'Fout met het ophalen van de gebruiker.');
}
elseif (mysql_num_rows($result) == 0)
{
echo 'Er geen resultaat!';
}
else
{
// einde
while($row = mysql_fetch_assoc($result));
{
$totalprice = $_SESSION['cart'][$row['id']] * $row['price'];
?>
Gewijzigd op 30/08/2013 20:35:21 door Jordy R
Er mist een ) in eddy,s voorbeeld op regel 3 net voor de ;
kan het te maken hebben met me sql database primaire sleutel of zo of foute waarde ?
post hem wel even
# Naam Type Collatie Attributen Leeg Standaardwaarde Extra Actie
1 id tinyint(1) Nee Geen AUTO_INCREMENT Primaire sleutel
2 name varchar(50) latin1_swedish_ci Nee Geen
3 description varchar(500) latin1_swedish_ci Nee Geen
4 price decimal(10,0) Nee Geen
5 quantity tinyint(100) Nee Geen
6 image varchar(60) latin1_swedish_ci Nee Geen
7 Catagory varchar(25) latin1_swedish_ci Nee Geen
8 Voorpagina int(11) Nee Geen
9 Nieuw int(11) Nee Geen
Maar je legt de basis verkeerd, alle trim en array filter dingen zijn workarrounds, je moet er voor zorgen dat je sessie data klopt.
Gewijzigd op 30/08/2013 21:32:42 door Ger van Steenderen
hoe krijg ik me sessie data kloppend ben erg nieuw in php en sql en wat kan ik het best met tinyin(1)doen
Om je sessie data kloppend te krijgen zal je jouw script(s) af moeten lopen om te kijken waar het fout gaat.
Begin eens met een vardump op $_SESSION['cart']
zie de fout wel zitten "array(5) { [""]=>NULL" maar waar zit deze array ? dat snap ik niet
Gewijzigd op 30/08/2013 22:09:52 door Jordy R
ik ga eens testen of ik dat ook voor elkaar kan krijgen
Toevoeging op 30/08/2013 22:53:24:
Toevoeging op 30/08/2013 22:56:21:
Als je het bovenstaande draait dan zie je dat het inderdaad mogelijk is.
Ergens in jouw script, Jordy, wordt aan een lege key de string 'NULL' toegekend. dat is waardoor het probleem ontstaat.
Toevoeging op 30/08/2013 23:01:05:
In iedergeval kun je het dan oplossen door
te doen voordat je de query uitvoert. Echter zou ik daar niet tevreden mee zijn en zou ik gaan uitzoeken waarom die lege key in de array komt.
Gewijzigd op 30/08/2013 23:02:25 door Frank Nietbelangrijk
Bedankt stond inderdaad een lege key in me script nu werkt hij perfect bedankt allemaal