Avatar billede reflex Nybegynder
26. marts 2005 - 23:45 Der er 3 kommentarer

UPDATE i DB via form

Hey,

Så er den gal igen :( PHP-mongolen kan ikke få det til at virke.
Jeg har en mysql DB med 8 felter som jeg gerne vil opdatere nogle af dem via en form, men jeg kan ikke helt få det til at spille. Jeg har forsøgt meg med et gammelt shop script, men nu er der total kluder i det.

Er der en af jeg der har et link eller ligende til et simpel update via form?? og er det ikke den nemmeste måde at lave en update på??

/Reflex
Avatar billede detox Nybegynder
27. marts 2005 - 00:39 #1
Her er et simpelt eksempel med en kolonne, så kan du rette det til og tilføje de øvrige felter:

<?
$tabel = 'personer'; //Navn på tabel
$col = 'fornavn'; // Navn på kolonne
require 'db.php'; //Forbindelse til databasen
$out = '';
if (isset($_POST['submit'])) {
    $id = key($_POST['fornavn']);
    $value = current($_POST['fornavn']);
    mysql_query("UPDATE $tabel SET $col='$value' WHERE id='$id'");
}
$res = mysql_query("SELECT id, $col FROM $tabel");
while ($row = mysql_fetch_assoc($res)) {
    $out .= "<form action='$_SERVER[PHP_SELF]' method='post'>";
    $out .= "<input type='text' name='{$col}[$row[id]]' value='$row[fornavn]' />";
    $out .= "<input type='submit' name='submit' value='Opdater' /><br />";
    $out .= "</form>";
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Opdater database</title>
</head>
<body>
<?php echo $out?>
</body>
</html>
Avatar billede detox Nybegynder
27. marts 2005 - 00:47 #2
Her er en mere generel hvor du blot udskifter tabelnavnet:

<?php
$tabel = 'personer'; // Tabelnavn
require 'db.php'; // Forbindelse til databasen
$thispage = $_SERVER['PHP_SELF'];
$res = mysql_query("SHOW COLUMNS FROM $tabel");
while ($row = mysql_fetch_assoc($res)) {
    if ($row['Key'] == 'PRI') $pkey = $row['Field']; // Navn på primærnøgle
}
if (isset($_POST['submit'])) {
    foreach ($_POST as $key=>$val) {
        if ($key != $pkey && $key != 'submit') {
            $str[] = "$key='$val'";
        }
    }
    $qstr = join(',', $str);
    mysql_query("update $tabel set $qstr where $pkey='$_POST[$pkey]'");
}
$res = mysql_query("select * from $tabel order by $pkey");
while ($row = mysql_fetch_assoc($res)) {
    echo "<form action='$thispage' method='post'><table>";
    foreach ($row as $key=>$val) {
        echo "<tr><td><label for='$key'>$key:</label></td><td><input ";
        if ($key == $pkey) {echo "readonly='1' ";}
        echo "type='text' name='$key' id='$key' value='$val' /></td></tr>";
    }
    echo "<tr><td><input type='submit' name='submit' value='Opdater' /></td></tr></table></form>";
}
?>
Avatar billede reflex Nybegynder
27. marts 2005 - 13:16 #3
Eksempel nr. 2 ser lovende ud, men...
Min fodboldliga som det drejer sig om, skal kun opdateres i et par felter. Det vil sige at jeg skal kunne opdatere om et hold har vundet, spillet uafgjort eller tabt.

http://www.piranhafc.dk/test_site/test.php  dit eks. som virker
http://www.piranhafc.dk/test_site/ligaupload.php mit eks. som jeg nok gerne vil ha' det

Så hvis jeg f.eks. skriver at et hold har scoret 5 mål, skal den ligges sammen med dem de har i forvejen.
På et senere tidspunkt ville det nok være nemmere hvis man via score for og imod kunne regne sig frem til at et hold skal ha 3,1 eller 0 piont. f.eks. IF ($vundet) { $point=$point+3 } eller noget der hen af.

Håber ikke det er FOR besværligt :S

/Reflex
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