WHERE clausule probleem
Hallo allemaal.
Ik heb een WHERE clausule, die alle votes op een poll op haalt, gebaseerd op poll en vote id.
Dit is de hele query:
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
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
Echo de query en controleer of de query ook resultaten heeft opgeleverd. mysql_num_rows() is je beste vriend.
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.
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.
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'";
Gewijzigd op 01/01/1970 01:00:00 door > Dice
ik heb het geprobeerd en dat werkt in ieder geval niet, hoe dan ook bedankt voor je idee
iemand anders die het gat ziet dat ik vergeet?
iemand anders die het gat ziet dat ik vergeet?
Ik zie een heel groot gat:
- 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.
- 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 ?
ff snel wat in elkaar gedraaid, maak db aan en vul $inst in. De code kan beter maar dit is ongeveer wat je wilt niet ?
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!");
}
}
?>
ok, ik was dus niet duidelijk genoeg.
sluit dit topic maar, dan begin ik even een nieuwe, zodat het duidelijk blijft.
Sorry voor dit.
sluit dit topic maar, dan begin ik even een nieuwe, zodat het duidelijk blijft.
Sorry voor dit.
'>:
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




