Gå til innhold

Bruke ID el. til å legge inn i database


Anbefalte innlegg

Hei.

 

Jeg skal lage et script som gjør at du kan stemme på bilder med drop-down menyer. Slik det blir lagt opp stemmer brukerene på flere bilder samtidi, feks 4. Informasjonen om hvor mange bilder, navn osv på bildene hentes fra en database der det er lagret.

 

Mitt problem er hvordan jeg skal få lagret riktig stemme til riktig bilde hvis det er flere enn 1 bilde? Hvis det bare er ett bilde fungerer koden min..

 

Slik har jeg satt opp drop-down menyen min der du kan stemme på bildet:

  echo "<select name='" . $row['bildeID'] . "_stemme'>";
 echo "<option value='0'>---</option>";
 echo "<option value='3'>1.plass</option>";
 echo "<option value='2'>2.plass</option>";
 echo "<option value='1'>3.plass</option>";
 echo "</select>";

 

Og så har jeg brukt følgende kode til å sette det inn i databasen, men det fungerer ikke. Jeg er ganske ny med PHP og databaser, så jeg forstår ikke hva jeg gjør feil eller falt.

 

<?php

foreach( $_POST as $varname => $value )
{
   list($pictureID, $fieldName) = explode('_', $varname);

   if( $fieldName == 'stemme' )
   {
     //Kjør kode der man setter $value inn som karakter til bilde
     //med ID $pictureID.


$con = mysql_connect("host","admin","pass");
if (!$con)
 {
 die('Could not connect: ' . mysql_error());
 }

mysql_select_db("database", $con);


$sql="INSERT INTO stemmer (bildetsid, stemmene)
VALUES
('$_POST[$pictureID]','$_POST[$value]'')";
if (!mysql_query($sql,$con))
 {
 die('Error: ' . mysql_error());
 }
echo "1 record added";
   }
}


mysql_close($con);
?>

 

Jeg antar at jeg på en eller annen måte må angi hva $varname skal være, varname skal være det feltet fra drop-dpwn listen. Men hvordan gjør jeg det?

 

 

Håper noen kan hjelpe meg, eventuelt hvis noen har noen andre forslag mottas de med stor takk!

Lenke til kommentar
Videoannonse
Annonse

Vet ikke helt om jeg har missforstått, men kan jo prøve.

 

Du har selvsagt et form for hvert bilde ikke sant?

Hadde vært enklere å bruke en hidden verdi for å slippe alt surret med å dele opp strengen osv. Alla noe dette.

 

  echo "<input type='hidden' name='bildeid' value='" . $row['bildeID'] . "'>";
 echo "<select name='stemme'>";
 echo "<option value='0'>---</option>";
 echo "<option value='3'>1.plass</option>";
 echo "<option value='2'>2.plass</option>";
 echo "<option value='1'>3.plass</option>";
 echo "</select>";

 

Dette formet looper seg selvsagt på hvert bilde.

 

Så bruker du PHP-koden av denne typen

<?php
$imageid = $_POST['bildeid'];
$vote = $_POST['stemme'];
mysql_query("INSERT INTO stemmer (bildetsid, stemmene) VALUES($imageid,$vote)");
?>

Endret av LoS
Lenke til kommentar

Hei LoS, og takk for svar.

 

Jeg har ikke et form for hvert bilde. For alle bildene kommer ut på samme side, og så kommer alle bildene inn i samme form. Grunnen til det er at jeg vil at brukerene bare skal trykke 1 gang på submit knappen. Går dette ann? Problemeet mitt er jo at all informasjonen i dette formet hentes ut fra en annen database, slik at jeg har problemer med å gi hvert felt et unikt navn, og dermed putte riktig informasjon inn i riktig sted.

 

Den koden som du ga meg funker, men når jeg prøver med to bilder her i databasen, så lagrer den bare stemmene for 1 av bildene, og ikke begge to.

 

Det var derfor jeg begynte å rote meg vekk i det dere explode greiene...

 

Jeg vet ikke helt hvordan jeg skal få det til...

Lenke til kommentar

Saken er da at formet ikke veit hvilket bilde den skal rate. Du kan bruke javascript f.eks når du rater. Slik at så fort du har valgt 'rating' vil formet bli submittet.

 

Ikke for å være frekk, men HTML kan ikke vite hvilket bilde du har tenkt til å stemme på sånn helt uten videre. :p

 

Uansett. For å submitte et form uten submit-knapp kan du gjøre dette på hver <select> boks.

<select name="stemme" onchange="this.form.submit();">

Da vil formet submitte seg når noen forandrer ratingen. Noen annen løsning som ikke blir helt uforståelig kommer jeg ikke på akkurat nå. :p

Med den <select> koden må du selvsagt ha ett form til hvert bilde men du trenger ingen submit knapp. Det vil heller ikke virke hvis man ikke har javascript.

 

Neste del kan være at du må velge bildet å stemme på.

<input type="radio" name="bildeid" value="$row['bildeID']"><img src="bilde/her.jpg">

 

Da kan du bruke èn submit-knapp og stemme på et bilde. Må selvsagt fjerne hidden-feltet jeg lagde.

 

Håper det hjalp.

Lenke til kommentar

Takk igjen LoS.

 

Jeg har vært klar over det lille problemet med at formet ikke viste vilken verdi det skulle submitte.

 

Men du ga meg noen ideer no. Jeg prøver meg på en javascript/AJAX-løsning først. Satser på at jeg får det til.

 

jeg gir en lyd når jeg har greid det, eventuelt ikke greid det..... ;)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...