webForumDet fria alternativet

visa svar från databas tabell

8 svar · 300 visningar · startad av Ann-Sofie

Ann-SofieMedlem sedan mars 2003136 inlägg
#1

Hej!
Jag har en databastabell (MySQL) med följande fält:
id,fraga1, fraga2, fraga3, fraga4, fraga5, ipadrr.

Det är frågor som ställs och användaren får välja ett av tre svar som då registreras i tabellen. Jag vill nu visa användaren hur han/hon har svarat men hur ska jag få fram det?

Har testat olika SELECT*FROM varianter men får inte fram nånting....

Hjälp mig snälla!

mvh
ann-sofie

PeddaMedlem sedan juni 20006 032 inlägg
#2

Vet inte om du skickar $id med länken eller ett formulär. Om du skickar med formulär så ändra '{$_GET['id']} till '{$_POST['id']}

$data = mysql_query("SELECT * FROM tabellnamn WHERE id = '{$_GET['id']}'");
		while ($rad = mysql_fetch_array($data)) {
//Sen skriver du ut svaren 
echo "På fråga 1 svarade du: $rad['fraga1']";
//och så vidare...
}
Ann-SofieMedlem sedan mars 2003136 inlägg
#3

Funkar inte riktigt ändå..

Tusen tack för hjälpen! Jag har snurrat runt med liknande koder fast får det inte att funka. Nu får jag följande felmeddelande:

Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in /home/www/web42/html/totalt.php on line 58

Line 58 är följande:

while ($rad=mysql_fetch_array($data)){

och ja, det är ett formulär så jag använde $_POST versionen.

Har du eller nån annan nån aning om vad jag missat med denna rad?

/ann-sofie

PeddaMedlem sedan juni 20006 032 inlägg
#4

Hur ser formuläret ut? Skickar du med $id? Man brukar lägga in id som ett "gömt" fält i formuläret.
Visa oss gärna raden/raderna innan rad 58 också, då felet kan ligga där.
Meddelandet tyder på att det är ett syntaktiskt fel, alltså att det saknas något citationstecken, parentes eller liknande.

Sen såg jag att jag missat lite på en rad. :r

echo "På fråga 1 svarade du: ".$rad['fraga1']."";
K@llenMedlem sedan mars 20032 667 inlägg
#5

Om fältet id är numeriskt:

$data = mysql_query("SELECT * FROM tabellnamn WHERE id = { $_GET['id'] }");

if ( mysql_num_rows( $data ) > 0 ) {   
            
    while ( $rad = mysql_fetch_array( $data) ) {

         echo "På fråga 1 svarade du:" . $rad['fraga1']. "";

    }
}

Om id är av texttyp:

$data = mysql_query("SELECT * FROM tabellnamn WHERE id = '{ $_GET['id'] }'");

if ( mysql_num_rows( $data ) > 0 ) {   
            
    while ( $rad = mysql_fetch_array( $data ) ) {

         echo "På fråga 1 svarade du:" . $rad['fraga1']. "";

    }
}

/R
Men inte behöver du väl loopa? Id är väl unikt och returnerar därmed enbart en post, eller?

Ann-SofieMedlem sedan mars 2003136 inlägg
#6

Nu har jag suttit och testat olika alternativ igen, felmeddelandet är borta men dessvärre får jag inte upp nånting..

Ska förtydliga mig lite tror jag för det kanske är nåt annat som är hel-snett;

Frågorna ligger en fråga per sida. När användaren valt ett alternativ kommer han/hon automatiskt till nästa sida där rätt svar står förklarat samt att man kan välja att ta nästa fråga. Efter sista frågan finns en länk till att se hur många rätt man hade. Det är här problemet är.
I min databastabell finns då den infon jag skrev i första inlägget. (id, fraga1 o.s.v.)
Min php-kod är nu så här:

<?
$db=@mysql_connect("xxxxx", "xxxxx", "xxxxx")
or die("Kunde inte ansluta");
$databas=mysql_select_db("xxxxxx");
$data=mysql_query("SELECT*FROM 1x2 WHERE id='{$_POST['id']}'");
while ($rad=mysql_fetch_array($data)){
print"Ditt svar fråga 1:".$rad['fraga1']."";
print"Ditt svar fråga 2:".$rad['fraga2']."";
print"Ditt svar fråga 3:".$rad['fraga3']."";
print"Ditt svar fråga 4:".$rad['fraga4']."";
print"Ditt svar fråga 5:".$rad['fraga5']."";
}
}
mysql_close($db);
?>

Har även testat med att lägga till raden:

if (mysql_num_rows($data)>0){

Men det blir ingen skillnad i resultatet. borde jag gå tillväga på något annat sätt? Tycker det är konstigt att inte ens texten "Ditt svar..." kommer upp. (det gjorde den från början)

mvh
ann-sofie

K@llenMedlem sedan mars 20032 667 inlägg
#7

Okey, då lägger vi till lite felutskrifter. Undvik att använda @, för då missar viktiga felutskrifter.

<?
$db = mysql_connect("xxxxx", "xxxxx", "xxxxx")
or die("Kunde inte ansluta");

$databas=mysql_select_db("xxxxxx") or die ("Ett fel inträffade. Det gick inte att hitta databasen");

$sql ="SELECT * FROM 1x2 WHERE id='{$_POST['id']}'";

$data = mysql_query( $sql )  or die( mysql_error() );

   if( mysql_num_rows( $data ) < 1 ) {

       print ("Inget från databasen hittades"); 

   }

   else {

while ($rad=mysql_fetch_array($data)){

print"Ditt svar fråga 1:".$rad['fraga1']."";
print"Ditt svar fråga 2:".$rad['fraga2']."";
print"Ditt svar fråga 3:".$rad['fraga3']."";
print"Ditt svar fråga 4:".$rad['fraga4']."";
print"Ditt svar fråga 5:".$rad['fraga5']."";

}
}
}
mysql_close($db);
?>
Ann-SofieMedlem sedan mars 2003136 inlägg
#8

Felsökningen funkade i allafall!

Får meddelandet "inget från databasen hittades". Betyder det att det är felinlagt? Fast när jag tittar i databasen så ser jag alla poster....
Exempel på hur jag lägger in svaren som användaren gör:

<?
$db=mysql_connect("xxxx", "xxxx", "xxxx")
or die("Kunde inte ansluta");
$databas=mysql_select_db("xxxx");
$sql="INSERT INTO 1x2 (fraga1, ipaddr) VALUES('{$_POST['fraga1']}', '{$_SERVER['REMOTE_ADDR']}')";
mysql_query($sql);
mysql_close($db);
?>

Eftersom det är en fråga per sida så har jag liknande sidor för varje fråga, det enda som skiljer sig är ipaddr som inte ligger på fler än just denna sidan.
Svaren kommer alltså in i databasen när jag tittar där men jag får inte ut dom i sammanställningen. (select from*)

/ann-sofie *glad över ett felmeddelande.... ni förstår...*

K@llenMedlem sedan mars 20032 667 inlägg
#9

Inget post matchade det id som du skickar in i sql-frågan.

Hur och var hämtar du ditt id som skickas in i sql-frågan?

136 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)