Avatar billede TumseMM Nybegynder
06. august 2011 - 23:33 Der er 6 kommentarer og
1 løsning

item_id skal være folks svar

Hej Eksperten.dk

Er igang med at lave et rating system, hvor brugere rater folks svar fra 1-5. Har en tabel med et id, item_id og rating. Kunne godt tænke mig i min item_id at der kom det svar brugeren havde ratet - ved bare ikke lige hvordan man gør det.

I min drop down box mangler jeg en value. Hvad er scriptet for at få det svar folk har ratet til at stå i item_id i min tabel?

Sætter pris på hjælp!
TumseMM


<?php   
$res = mysql_query("SELECT * FROM a WHERE q_id = $q_id ORDER BY id DESC");              //answers
    while($row = mysql_fetch_array($res))
    {
        $text = $row['text'];
        $name = $row['name'];
        $time = $row['time'];
        echo '
        <div style="padding: 20px; border: 1px dotted red; margin: 20px;">   
            '. $name .' siger:
            '. $text .'<br>
            '. $time .'
       
        </div>
        ';
    }
?>
</div>
<form method="post" action="store-rating.php">
<input type="hidden" name="item_id" value="">
<select name="rating">
  <option value="1">1 - Dårligt</option>
  <option value="2">2 - Hmm</option>
  <option value="3">3 - OK</option>
  <option value="4">4 - God</option>
  <option value="5">5 - Fantastisk!</option>
</select>

    <input type="submit" value="Bedøm">
</form>
Avatar billede Nicklas_ Nybegynder
06. august 2011 - 23:50 #1
Du har jo allerede en fin form!

Du udtrækker value parameteret ved hjælp af $_POST['rating']; i dette tilfælde. (Navnet på select)

Du kan smide et textarea ind, eller lignende med et name. Det skal ligge i samme form, og så kan du hente det der er skrevet der i med $_POST['textarea']; eller hvad du vælger at sætte som name.

Håber at dette var hvad du havde brug for.
Avatar billede TumseMM Nybegynder
07. august 2011 - 00:05 #2
Forstår ikke helt hvad du mener. Jeg tænkte på om man ikke kunne lave noget med:
value="<?php $text ?>" fra mit row ovenover? :)
Avatar billede Nicklas_ Nybegynder
07. august 2011 - 00:12 #3
Nårh.. Rating på den måde.. Du kunne lave en ny table med id, q_id og rating

id er auto_increment
q_id er id på svaret (hentes fra id i din anden tabel
rating er.. rating.

Hvis du kunne bruge det til noget? :-)
07. august 2011 - 05:41 #4
Du har allerede den item_id brugeren rater stående i den 'hidden' input 'name_id'.  Så  i filen 'store-rating.php' som formen kalder ved klik på 'Bedøm' indfanger du denne værdi og placerer den i tabellen som jeg her skal kalde 'ratings', så som:

<?php
$item_id = $_POST['item_id'];
$rating = $_POST['rating'];
....
mysql_query("INSERT INTO ratings(item_id, rating) VALUES($item_id, $rating)");
...
?>


Eller har jeg misforstået problemet?
Avatar billede TumseMM Nybegynder
07. august 2011 - 11:02 #5
Tror ikke helt I har forstået problemet . Eller også er det bare mig der er dårlig til at forklare mig ordentligt.

Brugeren kan skrive et svar til en hvilken som helst sætning, og den sætning de andre brugere rater ville jeg gerne have som mit "item_id" i min tabel. Hvordan får man det til at lykkes?

Har prøvet mig frem med: <input type="hidden" name="item_id" value="<?php mysql_query("SELECT 'text' from a"); $text = $row['text']; ?>">

Men det viser ikke noget i min tabel.
07. august 2011 - 13:41 #6
Du har ret - det er ikke nemt at forstå krystalklart hvad det er du har og hvad det er du vil med det.  Jeg vil foreslå, at du viser hele koden og alle tabellerne du bruger.

Der må eksistere en tabel, hvor du bevarer sætninger der kan svares på, for eksempel:

TABEL SÆTNINGER
q_id sætning
1      Der var engang en mand
2      Verdens største

Og så må du have noget kode, hvor de bevarede sætninger hentes og presenteres på en sådan måde, at brugerne kan komme med svar, og hvor disse svar kan bevares.  Jeg gætter på, at det er i tabellen a, hvor disse svar bevares.  Hvis der til sætningen q_id 1 ("Der var engang en mand") er kommet disse tre svar:
"han boede i en spand"
"og en kone"
"der havde en hund"
og til q_id 2 to svar:
"krokodille"
"men ikke verdens første"

så kommer tabel a måske til at se sådan ud:

TABEL A
id q_id text
1  1    han boede i en spand
2  1    og en kone
3  1    der havde en hund
4  2    krokodille
5  2    men ikke verdens første

Den kode du viser ser ud til at starte med, at en bruger får alle svar på en bestemt sætning og skal vælge et af svarene og rate det.  Det ville så nok være en fordel at lave en join query noget i retningen af:

$res = mysql_query("SELECT s.sætning, a.id, a.text FROM sætninger s JOIN a ON s.q_id = a.q_id WHERE s.q_id = $q_id");

Så kan du udskrive
while($row = mysql_fetch_array($res))
{
  $sætning = $row['sætning'];
  $id = $row['id'];
  $text = $row['text'];
  echo "På $sætning er der svaret $text";

  <form method="post" action="store-rating.php">
  <input type="hidden" name="item_id" value="$id">
  <select name="rating">
    <option value="1">1 - Dårligt</option>
    <option value="2">2 - Hmm</option>
    <option value="3">3 - OK</option>
    <option value="4">4 - God</option>
    <option value="5">5 - Fantastisk!</option>
  </select>
  <input type="submit" value="Bedøm">
</form>

Du har så i din hidden input en reference til svaret.  I din rating tabel kan du så kende det svar der blev rated ved at indføre værdien fra denne hidden input, for eksempel således:

store-rating.php
<?php
$item_id = $_POST['item_id'];
$rating = $_POST['rating'];
....
mysql_query("INSERT INTO ratings(item_id, rating) VALUES($item_id, $rating)");
?>

Hvis to brugere har rated svaret 'og en kone' henholdsvis som 3 og 5 og en bruger har rated svaret 'krokodille' som 3, så kommer tabellen ratings til at se således ud:

TABEL RATINGS
id item_id rating
1    2      3
2    2      5
3    4      3
Avatar billede TumseMM Nybegynder
09. august 2011 - 10:32 #7
Hej igen.

Har selv løst problemet. Skulle bare i min value indsætte: value="'.$text.'">
Enkelt :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester