WHERE clausule probleem
Ik heb een WHERE clausule, die alle votes op een poll op haalt, gebaseerd op poll en vote id.
Dit is de hele query:
Code (php)
1
"SELECT * FROM poll_votes WHERE poll_id = ".$voted_ids[$i]." AND vote_number = ".$poll_choices['id'];
De 2 variabeles zijn dus de poll_id en de id van de keuze waarop was gestemt.
Deze clausule geeft geen foutmelding terug, maar ook al zijn er meerdere mensen die op dezelfde keuze van dezelfde poll hebben gevote, toch zegt mysql_num_rows() dat er maar 1 record betrokken was bij de query.
Als ik deze query (met getallen natuurlijk) invul in het SQL deel van phpMyAdmin, geeft hij gewoon alle records terug.
Heb ik hier iets over het hoofd gezien?
Zoja, laat het mij snel weten alstjeblieft
Alvast bedankt voor de hulp!
EDIT: ik was nog vergeten een probleempje erbij te zetten.
eerst voerde ik de query uit op de 'traditionele' manier: if($query = mysql_query($sql_get_voted)) maar als ik dan mysql_num_rows($query) aanriep, kreeg ik een foutmelding dat $query geen geldige result resource is.
als ik daarintegen mysql_num_rows(mysql_query($sql_get_voted)) uitvoer, doet hij het wel, maar geeft hij dus maar 1 record terug
Gewijzigd op 01/01/1970 01:00:00 door Maarten Slenter
Voer je de query overigens wel uit, controleer je wel of de query is gelukt en fetch je het resultaat wel? Daar is in jouw topic niks van terug te vinden.
$voted = $voted_ids[$i];
$poll = poll_choises['id'];
$SQL ="SELECT * FROM poll_votes WHERE poll_id ='$voted' AND vote_number= '$poll'";
Gewijzigd op 01/01/1970 01:00:00 door > Dice
iemand anders die het gat ziet dat ik vergeet?
- Jij voert de query niet uit
- Jij controleert niet of de query is gelukt
- Jij controleert niet of de query resultaten heeft opgeleverd
- Jij fetcht het resultaat niet
- Jij echoot de query niet en hebt dus geen idee wat daar nu daadwerkelijk in staat
Geen van deze punten komen terug in jouw topic of reactie, we mogen dus aannemen dat deze onderdelen ontbreken. Een groot gapend gat in je code dus.
Ik neem aan dat je een multi-poll systeem wilt op je site ?
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<?
$Inst_HOST ='';
$Inst_USER = '';
$Inst_PASS = '';
$Inst_DB = '';
$rv = mysql_connect($Inst_HOST, $Inst_USER, $Inst_PASS) or die ("<font color='red'>Kon geen verbinding met de database maken, controleer uw database instellingen</font>");
$rv = mysql_select_db($Inst_DB) or die ("<font color='red'>Kon de database niet selecteren, controleer uw database instellingen</font>");
if(!($_SERVER['REQUEST_METHOD'] == 'POST')){
print("
<form action='' METHOD='POST'>
<input name='Vote' type='radio' value='Pollid1_A?' />A poll 1<br />
<input name='Vote' type='radio' value='Pollid1_B?' />B poll 1<br />
<input name='Vote' type='radio' value='Pollid1_C?' />C poll 1<br />
<input type='submit' value='Vote!' /><br /><br />
</form>
<form action='' METHOD='POST'>
<input name='Vote' type='radio' value='Pollid2_A?' />A poll 2<br />
<input name='Vote' type='radio' value='Pollid2_B?' />B poll 2<br />
<input name='Vote' type='radio' value='Pollid2_C?' />C poll 2<br />
<input type='submit' value='Vote!' /><br /><br />
</form><br /><br />
");
$result = mysql_query("SELECT * FROM tbl_poll WHERE id='1' AND keuze='A'")
or die(mysql_error());
$A1 = mysql_num_rows($result);
$result = mysql_query("SELECT * FROM tbl_poll WHERE id='1' AND keuze='B'")
or die(mysql_error());
$B1 = mysql_num_rows($result);
$result = mysql_query("SELECT * FROM tbl_poll WHERE id='1' AND keuze='C'")
or die(mysql_error());
$C1 = mysql_num_rows($result);
$result = mysql_query("SELECT * FROM tbl_poll WHERE id='2' AND keuze='A'")
or die(mysql_error());
$A2 = mysql_num_rows($result);
$result = mysql_query("SELECT * FROM tbl_poll WHERE id='2' AND keuze='B'")
or die(mysql_error());
$B2 = mysql_num_rows($result);
$result = mysql_query("SELECT * FROM tbl_poll WHERE id='2' AND keuze='C'")
or die(mysql_error());
$C2 = mysql_num_rows($result);
print("resultaten:<br />
Poll 1<br />
A:$A1<br />
B:$B1<br />
C:$C1<br />
<br />
Poll 2<br />
A:$A2<br />
B:$B2<br />
C:$C2<br />
");
}else{
$Vote = $_POST['Vote'];
$Poll_id = strtok($Vote, "_");
$Poll_Keuze = strtok($Vote, "?");
$Zoek1 = array("Pollid");
$Veranderin1 = array("");
$Zoek2 = array("Pollid1_", "Pollid2_");
$Veranderin2 = array("","");
$Poll_id = str_replace($Zoek1, $Veranderin1, $Poll_id);
$Poll_Keuze = str_replace($Zoek2, $Veranderin2, $Poll_Keuze);
if(mysql_query("INSERT INTO tbl_poll (id, keuze) VALUES ('$Poll_id ','$Poll_Keuze')")){
print("Vote toegevoegd!");
}
}
?>
$Inst_HOST ='';
$Inst_USER = '';
$Inst_PASS = '';
$Inst_DB = '';
$rv = mysql_connect($Inst_HOST, $Inst_USER, $Inst_PASS) or die ("<font color='red'>Kon geen verbinding met de database maken, controleer uw database instellingen</font>");
$rv = mysql_select_db($Inst_DB) or die ("<font color='red'>Kon de database niet selecteren, controleer uw database instellingen</font>");
if(!($_SERVER['REQUEST_METHOD'] == 'POST')){
print("
<form action='' METHOD='POST'>
<input name='Vote' type='radio' value='Pollid1_A?' />A poll 1<br />
<input name='Vote' type='radio' value='Pollid1_B?' />B poll 1<br />
<input name='Vote' type='radio' value='Pollid1_C?' />C poll 1<br />
<input type='submit' value='Vote!' /><br /><br />
</form>
<form action='' METHOD='POST'>
<input name='Vote' type='radio' value='Pollid2_A?' />A poll 2<br />
<input name='Vote' type='radio' value='Pollid2_B?' />B poll 2<br />
<input name='Vote' type='radio' value='Pollid2_C?' />C poll 2<br />
<input type='submit' value='Vote!' /><br /><br />
</form><br /><br />
");
$result = mysql_query("SELECT * FROM tbl_poll WHERE id='1' AND keuze='A'")
or die(mysql_error());
$A1 = mysql_num_rows($result);
$result = mysql_query("SELECT * FROM tbl_poll WHERE id='1' AND keuze='B'")
or die(mysql_error());
$B1 = mysql_num_rows($result);
$result = mysql_query("SELECT * FROM tbl_poll WHERE id='1' AND keuze='C'")
or die(mysql_error());
$C1 = mysql_num_rows($result);
$result = mysql_query("SELECT * FROM tbl_poll WHERE id='2' AND keuze='A'")
or die(mysql_error());
$A2 = mysql_num_rows($result);
$result = mysql_query("SELECT * FROM tbl_poll WHERE id='2' AND keuze='B'")
or die(mysql_error());
$B2 = mysql_num_rows($result);
$result = mysql_query("SELECT * FROM tbl_poll WHERE id='2' AND keuze='C'")
or die(mysql_error());
$C2 = mysql_num_rows($result);
print("resultaten:<br />
Poll 1<br />
A:$A1<br />
B:$B1<br />
C:$C1<br />
<br />
Poll 2<br />
A:$A2<br />
B:$B2<br />
C:$C2<br />
");
}else{
$Vote = $_POST['Vote'];
$Poll_id = strtok($Vote, "_");
$Poll_Keuze = strtok($Vote, "?");
$Zoek1 = array("Pollid");
$Veranderin1 = array("");
$Zoek2 = array("Pollid1_", "Pollid2_");
$Veranderin2 = array("","");
$Poll_id = str_replace($Zoek1, $Veranderin1, $Poll_id);
$Poll_Keuze = str_replace($Zoek2, $Veranderin2, $Poll_Keuze);
if(mysql_query("INSERT INTO tbl_poll (id, keuze) VALUES ('$Poll_id ','$Poll_Keuze')")){
print("Vote toegevoegd!");
}
}
?>
sluit dit topic maar, dan begin ik even een nieuwe, zodat het duidelijk blijft.
Sorry voor dit.
> Dice schreef op 21.03.2008 23:11:
Ik defineer de vars altijd buiten mijn sql, dat werkt meestal wel :P
$voted = $voted_ids[$i];
$poll = poll_choises['id'];
$SQL ="SELECT * FROM poll_votes WHERE poll_id ='$voted' AND vote_number= '$poll'";
$voted = $voted_ids[$i];
$poll = poll_choises['id'];
$SQL ="SELECT * FROM poll_votes WHERE poll_id ='$voted' AND vote_number= '$poll'";
Dat moet je nou net niet doen, jij zet de VARS binnen quotes TS deed dat nou net goed.
Ik verwacht dat het probleem in het JOIN type zit, wat jij waarschijnlijk een LEFT JOIN nodig en geen INNER JOIN ( wat een WHERE clausule is)
Zoek maar eens op de mysql site naar JOIN