webForumDet fria alternativet

Fel när jag ska hämta ut antal röster

PHP

14 svar · 765 visningar · startad av Emil W

Medlem sedan mars 2009512 inlägg
Frågan#1

jag försöker få resultat hur många som har röstat på ja och nej

men jag får detta felmeddelande

Column 'id' in field list is ambiguous

<?php 
$server = "**********";
$user = "********";
$pass = "*********";

$con = @mysql_connect($server,$user,$pass);
if(!$con)
{
die('fel' . mysql_error());
}
mysql_select_db("**********", $con);

$utt = "SELECT a.svar1,id, b.svar_id,id FROM poll AS a JOIN svar_poll AS b ON a.svar1 = b.svar_id WHERE svar_id = 1";
$vissa = mysql_query($utt) or die(mysql_error());

if(isset($_GET['svara']))
{
$ip = mysql_real_escape_string($_SERVER['REMOTE_ADDR']);
$ia = intval($_GET['svara']);
mysql_query("INSERT INTO svar_poll (`svar_id`,`ip`) VALUES('$ia','$ip')") or die('Ett fel har uppstått !' . mysql_error());
}

echo "<center><br>";
echo "<b>Cyklar du på vintern ?</b>";
while($row = mysql_fetch_array($vissa))
{
$id = intval($row['id']);
echo"<br><ahref='start_webbokning.php?svara=$id'>".htmlspecialchars($row['svar1'])."</a>";
echo "$vissa";
}
echo "</center>";
?>
Medlem sedan juni 20034 013 inlägg
#2

Field list är de kolumner som du vill hämta ut, alltså det som står mellan SELECT och FROM, i ditt fall:

a.svar1,
id,
b.svar_id,
id

Ambiguous betyder tvetydig, alltså att något kan syfta på flera saker. I ditt fall är det alltså id som är tvetydigt. Förmodligen finns id med i båda tabellerna som du hämtar från och Mysql kan ju då inte veta vilket id det är du vill hämta, utan du måste tala om det genom att ange tabellens namn före, som du gjort med svar1 och svar_id.

Medlem sedan mars 2009512 inlägg
#3

kan du visa för jag förstår inte riktigt hur du menar

Medlem sedan juni 20034 013 inlägg
#4

Jag gissar att det är id från tabellen poll du vill ha ut, i så fall skriver du:

$utt = "SELECT a.svar1, a.id, b.svar_id FROM poll AS a JOIN svar_poll AS b ON a.svar1 = b.svar_id WHERE svar_id = 1";

Medlem sedan mars 2009512 inlägg
#5

jag vill hämta ut hur många har röstat på ja och hur många som har röstat på nej

Medlem sedan juni 20034 013 inlägg
#6

Hur ser dina tabeller poll och svar_poll ut?

Medlem sedan mars 2009512 inlägg
#7

tabellen poll innehåller fälten
+--+-------+
|id | svar1|
+--+-------+
| 1 | ja |
+---+-------+
| 2 | nej |
+---+-------+

och tabellen svar_poll innehåller

fälten

+---+----------+-----+
| id | svar_id | ip |
+--+-----------+-----+
| 1 | 2 | |
+--+-----------+-----+
| 2 | 1 | |
+--+-----------+-----+

om man har svarat ja då blir svar_id 1 och om man svarar nej då blir svar_id 2

Medlem sedan juni 20034 013 inlägg
#8

$utt = "SELECT COUNT(*) AS antal, svar1 FROM svar_poll LEFT JOIN poll ON (poll.id = svar_poll.svar_id) GROUP BY svar_id";

Då får du ett svar som exempelvis ser ut så här:

+-------+-------+
| antal | svar1 |
+-------+-------+
|     5 | ja    | 
|     3 | nej   | 
+-------+-------+
Medlem sedan mars 2009512 inlägg
#9

jag har inte antal i tabellen i databasen

Medlem sedan dec. 2004736 inlägg
#10

Testa att köra tydals SQL-fråga. I ditt recordset får du då "antal" som innehåller just antal, och svar1 som innehåller svarsalternativen, ja eller nej.

Skulle du få felmeddelande, posta det.

Medlem sedan mars 2009512 inlägg
#11

ska jag behålla select satsen också

Medlem sedan juni 20034 013 inlägg
#12

Du sa att du vill hämta ut hur många som har röstat ja och hur många som har röstat nej. Det gör du med SELECT-satsen jag skrev. Om du ska ha någon annan SELECT-sats beror på om du vill hämta ut något mer, och i så fall, vad?

Medlem sedan mars 2009512 inlägg
#13

så här ser koden ut nu jag får felmeddelandet

Resource id #6

<?php
$server = "*************'";
$user = "*******'";
$pass = "*************";

$con = @mysql_connect($server,$user,$pass);
if(!$con)
{
die('fel' . mysql_error());
}
mysql_select_db("**********", $con);

$uttt = mysql_query("SELECT id,svar1 FROM poll");

if(isset($_GET['svara']))
{
$ip = mysql_real_escape_string($_SERVER['REMOTE_ADDR']);
$ia = intval($_GET['svara']);
mysql_query("INSERT INTO svar_poll (`svar_id`,`ip`) VALUES('$ia','$ip')") or die('Ett fel har uppstått !' . mysql_error());
}
$uttt = mysql_query("SELECT * FROM poll"); 
$utt = "SELECT COUNT(*) AS antal, svar1 FROM svar_poll LEFT JOIN poll ON (poll.id = svar_poll.svar_id) GROUP BY svar_id";
$v = mysql_query($utt);

echo "<center><br>";
echo "<b>Cyklar du på vintern ?</b>";
while($row = mysql_fetch_array($uttt))
{
$id = intval($row['id']);
echo "<br><a href='start_webbokning.php?svara=$id'>".htmlspecialchars($row['svar1'])."</a>";
echo "</center>";
}
echo "$v";
?>
Medlem sedan mars 2009512 inlägg
#14

Någon som vet varför jag får detta fel ?

Resource id #6

för kod se inlägget här ovanför.

Medlem sedan juni 20006 031 inlägg
#15

Du kör mysql_query här:
$v = mysql_query($utt);
och skriver ut:
echo "$v";

mysql_query returnerar en resource vid lyckade frågor och False om det misslyckats.

Kanske du ska ta och kolla på mysql_num_rows() om du vill ha reda på hur många rader som returnerades.

269 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
134 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)