[php/sql] Kleine verandering = niet werken !

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoi allemaal,

Ik heb een lijst met leden, en die ik laten zien op een php pagina, boven deze lijst staan ook de letters van het alfabet, zodra je op de A klikt dan zie je alle gebruikers met een A.

Zal de gehele code even laten zien, misschien is dit makkelijker:

<?
$count = "SELECT COUNT(userid) AS total FROM users ";

$select = "select userid, name, uname, femail, url, user_code from users ";

$where = "where uname != 'brad' ";
if ( ( $letter != "Other" ) AND ( $letter != "All" ) ) {
$where .= "AND uname like '".$letter."%' "; } else if ( ( $letter == "Other" ) AND ( $letter != "All" ) ) { $where .= "AND uname REGEXP \"^\\[1-9]\" "; } else {
$where .= ""; }
$sort = "order by $sortby";
$limit = " ASC LIMIT ".$min.", ".$max; /* due to how this works, i need the total number of users per
letter group, then we can hack of the ones we want to view */


$count_result = mysql_query($count.$where, $dbi);
if (!$count_result){
echo 'Fout in query: '.$count.'<br>';
echo mysql_error().'<br>';
} else {
$num_rows_per_order = mysql_result($count_result,0,0);
}


$result = sql_query($select.$where.$sort.$limit, $dbi) or die(); // Now lets do it !!

?>

BOVENSTAANDE WERKT dus hier ligt het niet aan, het kan wel misschien nog anders of makkelijker.

Nu wil ik graag dat hij alleen alle gebruikers pakt die een user_code 20 hebben

nu heb ik dit veranderd:

<?
$count = "SELECT COUNT(uid) AS total FROM users where user_code=20";
$select = "select uid, name, uname, femail, url, user_code from users where user_code=20";
?>

Als ik nu op de letter A klik dan krijg ik:
Fout in query: SELECT COUNT(userid) AS total FROM users where user_code=20
You have an error in your SQL syntax near 'uname != 'brad' AND uname like 'A%' ' at line 1


Wie heeft er een idee wat ik nog moet veranderen voordat dit wel werkt.
Bedankt alvast voor jullie hulp

Acties:
  • 0 Henk 'm!

  • Marcj
  • Registratie: November 2000
  • Laatst online: 11-09 17:14
WHERE moet toch persé met hoofdletters??

edit: euhhmm.. misschien ook niet sorry.. maar kun je de code even tussen [ code ] tags zetten? leest wat makkelijker :)

edit2: misschien moet achter die query nog een AND die je vergeten bent?? En kun je misschien tijdens het opvragen wat echo's zetten om te kijken wat er uit komt?

edit3: ik denk dat ik het probleem zie: je $where begint met een where, maar hierdoor krijg je:
SELECT COUNT(userid) AS total FROM users where user_code=20 where blablabla..
En twee keer where kan niet. Dus:
$where = "where uname != 'brad' ";
veranderen in:
$where = "AND uname != 'brad' ";

en toch vindt ik hoofdletters wel handig ;)

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 19:58

.oisyn

Moderator Devschuur®

Demotivational Speaker

Hoi, welkom in P&W
Over het algemeen is het gebruikelijk om de taal / het platform waarin je ontwikkelt erbij te vermelden, in haakjes voor de topictitel :)

lees ook even (de verplichte kost ;)): Welkom in P&W -> Quickstart om snel aan de slag te kunnen en Welkom in P&W (FAQ-13/7/2002)

Ook is het handig om code tussen zogenaamde code tags te plaatsen (beter leesbaar en dan blijft de formatting behouden). Lees daarvoor even Voor iedereen die code in z'n post plaatst!

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

Verwijderd

Kijk:

PHP:
1
2
3
4
5
6
<?
$where = "where uname != 'brad' "; 
if ( ( $letter != "Other" ) AND ( $letter != "All" ) ) { 
$where .= "AND uname like '".$letter."%' "; } else if ( ( $letter == "Other" ) AND ( $letter != "All" ) ) { $where .= "AND uname REGEXP \"^\\[1-9]\" "; } else { 
$where .= ""; } 
?>


daar kan je sowieso al van maken:
PHP:
1
2
3
4
5
<?
$where = "where uname != 'brad' ";
if ( ( $letter != "Other" ) AND ( $letter != "All" ) ) { 
$where .= "AND uname like '".$letter."%' "; } else if ( ( $letter == "Other" ) AND ( $letter != "All" ) ) { $where .= "AND uname REGEXP \"^\\[1-9]\" "; } 
?>


maar dat boeit niet veel, is alleen een speedup.

nu is $where = "where uname != 'brad'" in het minimale geval.

Dan doe je bij je verandering:
PHP:
1
2
3
<?
$count = "SELECT COUNT(uid) AS total FROM users where user_code=20"; 
?>


en de query die je stelt is dan:
code:
1
2
3
<?
MYSQL_SELECT($select.$where.$sort.$limit, $dbi);
?>

en we hebben:
$select = "select uid, name, uname, femail, url, user_code from users where user_code=20"
$where = "where uname != 'brad'"
$sort = whatever
$limit = whatever


en wat krijg je dan met een concat?
"select uid, name, uname, femail, url, user_code from users where user_code=20 where uname != 'brad'"

en dat vindt mysql niet leuk nee 8)7

edit. te laat |:(

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoi,

Bedankt voor je welkom,

quote
Ook is het handig om code tussen zogenaamde code tags te plaatsen (beter leesbaar en dan blijft de formatting behouden). Lees daarvoor even Voor iedereen die code in z'n post plaatst!
/quote
Ik had geprobeerd zoals ik al gelezen had in die topic want daar stond:
<? & ?>
te gebruiken, maar zo te zien pakt hij dit niet.

En je hebt ook gelijk met de topicnaam, ik zag het al maar kon alleen het berichtje zelf nog maar wijzigen.

Sorry sorry eerste keer voor mij hier ;-)
gr.
Margriet

Acties:
  • 0 Henk 'm!

  • Marcj
  • Registratie: November 2000
  • Laatst online: 11-09 17:14
Daarom is het even handig dat je de [FAQ]FAQ[/FAQ] even doorleest, daar leer je echt heel veel van. :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Heb de faq gelezen hoor ;-)

Maar nog even over de verandering heb het nu gewijzigd en de WHERE (hoofdletters in AND maar krijg nu nog steeds:

Fout in query: SELECT COUNT(uid) AS total FROM users where user_code=20
You have an error in your SQL syntax near 'uname != 'brad' AND uname like 'A%' ' at line 1

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 19:58

.oisyn

Moderator Devschuur®

Demotivational Speaker

Verwijderd schreef op 27 september 2002 @ 01:05:
Hoi,

Bedankt voor je welkom,

quote
Ook is het handig om code tussen zogenaamde code tags te plaatsen (beter leesbaar en dan blijft de formatting behouden). Lees daarvoor even Voor iedereen die code in z'n post plaatst!
/quote
een lijst van alle tags kun je in de algemene FAQ lezen (helemaal naar onder scrollen). Daar staat ook hoe je kunt quoten (je bent de haakjes vergeten) ;)
Ik had geprobeerd zoals ik al gelezen had in die topic want daar stond:
<? & ?>
te gebruiken, maar zo te zien pakt hij dit niet.
hmmja, ik zie idd dat het niet echt duidelijk daar stond hoe het nou moest, maar in de algemene FAQ staat dat dus uitgelegd :)
En je hebt ook gelijk met de topicnaam, ik zag het al maar kon alleen het berichtje zelf nog maar wijzigen.
Kan gebeuren. Als het je weer overkomt kun je evt een modje icq'en, of een melding maken in Schop een Modje :)
Sorry sorry eerste keer voor mij hier ;-)
geeft niets :)
gr.
Margriet


hmm, moet ik je toch nog even lastig vallen ;)
uit de FAQ:
Wij tweakers doen elkaar permanent de groeten. Het is dus niet nodig om steeds ruimteverspillende "greetz [user]" of iets dergelijks onder je post te plakken. Als je perse zoiets wilt kun je daar je signature voor gebruiken.
je bedoelt het vast goed :) maar de ervaring leert dat als iedereen dat onder zijn post gaat zetten dat nogal vervelend leest, vandaar :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

Verwijderd

probeer eens door dit:
PHP:
1
2
3
4
5
6
7
8
9
<?
$count_result = mysql_query($count.$where, $dbi); 
if (!$count_result){ 
echo 'Fout in query: '.$count.'<br>'; 
echo mysql_error().'<br>'; 
} else { 
$num_rows_per_order = mysql_result($count_result,0,0); 
} 
?>


te veranderen door:
PHP:
1
2
3
4
5
6
7
8
9
<?
$count_result = mysql_query($count.$where, $dbi); 
if (!$count_result){ 
echo 'Fout in query: '.$count.$where.'<br>';  // .$where. toegevoegd!!!
echo mysql_error().'<br>'; 
} else { 
$num_rows_per_order = mysql_result($count_result,0,0); 
} 
?>


zodat je de HELE query ziet bij een foutmelding, niet de halve.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik krijg nu:

Fout in query: SELECT COUNT(uid) AS total FROM nuke_users where user_code=20AND uname != 'brad' AND uname like 'A%'
You have an error in your SQL syntax near 'uname != 'brad' AND uname like 'A%' ' at line 1

Heb je hier wat aan.

Ik wist niet dat zo kleine verandering zo impact had

Acties:
  • 0 Henk 'm!

Verwijderd

Fout in query: SELECT COUNT(uid) AS total FROM nuke_users where user_code=20AND uname != 'brad' AND uname like 'A%'
kijk eens goed...

user_code=20AND staat aan elkaar.
$where moet je dus beginnen met een spatie :D

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Jaaaa,

Het klopt, je had gelijk.
Ik wil iedereen in ieder geval bedanken voor jullie hulp
(hier las ik niks over in de faq, maar ik mag denk ik wel mensen bedanken)
Dus nogmaals iedereen bedankt

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 19:58

.oisyn

Moderator Devschuur®

Demotivational Speaker

natuurlijk mag je mensen bedanken :Y)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1