webForumDet fria alternativet

ändra data i databasen

7 svar · 366 visningar · startad av dude

dudeMedlem sedan aug. 2002386 inlägg
#1

Hejsan,
nu har jag fastnat igen. Jag vill ha ett formulär där man kan ändra ett fält i databasen.

Jag har en sida som man fyller i lite uppgifter i som sen sparas i en databas. De visas dock inte förrän man har betalat, så när någon har betalat, vill jag ha en admin sida där jag bara kan kryssa i att personen i fråga (med tex. id=1) har betalat, och då ändras värdet i "betalat" från nej till ja...
Fattar ni vad jag menar???
Jaja, hur gör man detta dådå???

och, eh... sorry att jag ställer så många frågor hela tiden...

MatteMedlem sedan aug. 20002 975 inlägg
#2
<?php
  include "conn.php"; // Databasuppkopplingen

if (isset($_POST['betalat'])){
  $sql = "UPDATE tabell SET betalat='{$_POST['betalat']}' WHERE id={$_POST['id']}";
  mysql_query($sql);
}
?>

<form action="<?=$_SERVER['PHP_SELF'] ?>" method="post">
<input type="hidden" name="id" value="1">
Betalat 
<input type="radio" name="betalat" value="ja">Ja
<input type="radio" name="betalat" value="nej>Nej
</form>

Fältet id i formuläret får genereras via länk eller en databashämtning.

dudeMedlem sedan aug. 2002386 inlägg
#3

Hej!
Tack för ditt snabba svar, och jag trodde att jag fattade hur det funkar.
Men det verkar inte riktigt funka... Vad är det man ska ha i databasuppkopplingen??? Alltså vilka veriabler ska man använda???

Sen skulle jag gärna vilja syra id mha det value som jag ger id i adressen alltså tex. betalat.php?id=1 Är det då bara till att ändra value="1" till value="<?php echo "$id"; ?>"

MatteMedlem sedan aug. 20002 975 inlägg
#4

Det saknades ett citationstecken efter nej i value.
Testa det här:

<?php
$db = mysql_connect();
mysql_select_db("databasnamn", $db); // Lagt till

if (isset($_POST['betalat'])){
  $sql = "UPDATE tabell SET betalat='{$_POST['betalat']}' WHERE id={$_POST['id']}";
  mysql_query($sql);
}

// Lagt till
if (isset($_REQUEST['id'])){
?>

<form action="<?=$_SERVER['PHP_SELF'] ?>" method="post">
<input type="hidden" name="id" value="<?=$_REQUEST['id'] ?>">
Betalat 
<input type="radio" name="betalat" value="ja">Ja
<input type="radio" name="betalat" value="nej">Nej
<br>
<INPUT TYPE="submit" VALUE="Skicka">

</form>

<?php
} else {
  echo "Ingen post vald";
}
?>

$id hämtas från länk eller postat formulär. Finns inget id så skrivs formuläret inte ut.

dudeMedlem sedan aug. 2002386 inlägg
#5

hittade precis felet själv, därför redigerade jag min fråga samtidigt som du berättade felet. Nu verkar det som jag har svar på mina frågor... ska ta och försöka få det att fungera nu...

dudeMedlem sedan aug. 2002386 inlägg
#6

Tack så mycket för hjälpen!!
Jag vet inte vad jag hade gjort utan er på webforum... antagligen hade jag varit med kompisarna istället för att försöka lära mej php :birp

dudeMedlem sedan aug. 2002386 inlägg
#7

Hej!
En liten fråga ang. koden, vad betyder följande grejjer:

 $_POST['betalat']
 <?=$_SERVER['PHP_SELF'] ?>
 <?=$_REQUEST['id'] ?>

Funkar det att skriva såhär:

 $sql="UPDATE robinsson SET (vinnare, grata, utslagen, tvaa, ett, tva, tre, fyra, fem, sex, date) VALUES ('$vinnare', '$grata', '$utslagen', '$tvaa', '$ett', '$tva', '$tre', '$fyra', '$fem', '$sex', '$date') WHERE id=1";

om man vill uppdatera en massa grejjer på en gång???
Tack och hej!

MatteMedlem sedan aug. 20002 975 inlägg
#8

Syntaxen för UPDATE är så här:

$sql = "UPDATE robinsson SET vinnare='$vinnare', grata='$grata', utslagen='$utslagen' WHERE id=1";

När du skickar variabler från ett formulär med method="post" så skickas variablerna i arrayen $_POST. Är register_globals=On går det även att ta emot variablerna direkt, typ $variabel. Men även då bör du, av säkerhetsskäl, använda de globala associativa arrayerna typ $_POST m.fl.

Kommer dina variabler från en länk, eller formulär postat med method="get", använder du istället $_GET för att hämta dina variabler.

Är register_globals=On kan du hämta dina server-variabler direkt typ $PHP_SELF, annars måste du använda $_SERVER['PHP_SELF'].
Du bör vänja dig vid att använda dessa arrayer, eftersom PHP av säkerhetsskäl är inställt på register_globals=Off. Har ditt webbhotell register_globals på så kanske de en dag ändrar detta och då slutar dina skript att fungera (om du nu inte bryr dig om säkerheten).

<?=$variabel ?> är en kortform för <?php echo $variabel ?>

$_REQUEST tar emot variabler skickade både med POST och GET. Kan vara aktuell att använda då du vill att det ska vara tillåtet att kunna skicka variabler med bägge dessa former.

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