08. januar 2003 - 11:51Der er
15 kommentarer og 1 løsning
Oprette checkbox i databse
Hej...
Kan nogen hjælpe mig med følgende: Jeg er ved at lave en side hvor folk kan tilmelde til forskellige grupper (formand, kasserer osv.). På siden skal de så kunne klikke af hvis de er formand, kasserer osv. (man kan godt krydse to ting af!!!)
Hvis man f.eks. krydser af i Formand, så skal man blive oprettet i databasen med et 1-tal i afdeling, Kasserer nr. 2 osv.
Hvad er det der går galt i denne kode?: <?php
if (isset($_POST["telefon"])) { $fejl = false;
if (trim($_POST["telefon"])=="") { print "<font face='Verdana' color='red' size='1'>Der skal indtastes et telefonnummer...<br></font>"; $fejl = true; }
if ($fejl==false) { $connection = mysql_connect("--**--","--**--","--**--"); $db = "--**--"; mysql_select_db($db);
mysql_query("INSERT INTO --**-- (telefon, afdeling) VALUES ('".$_POST["telefon"]."', '".$_POST["afdeling"]."')");
din insert sætning mysql_query("INSERT INTO --**-- (telefon, afdeling) VALUES ('".$_POST["telefon"]."', '".$_POST["afdeling"]."')");
hvis felterne telefon og afdeling er talfelter (fx tinyint) skal der ikke anførselstegn onkring de værdier ud indsætter mysql_query("INSERT INTO --**-- (telefon, afdeling) VALUES (".$_POST["telefon"].", ".$_POST["afdeling"].")");
jeg har svært ved at tro at telefon og afdeling er de eneste felter i den tabel. din insert vil prøve at oprette en ny række uden navn eller dato eller medarbejdernummer aller hvad der nu er af yderligere felter. Hvis meningen er at rette i en række der allerede findes bør du bruge UPDATE sætningen.
Først: Der er kun felter i tabelen: telefon og afdeling. Og jeg prøver ikke at rette i eksisterende data.
Feltet telefon skal indeholde et telefonnummer og er et 'bigint'. Feltet afdeling skal blot indeholde et nummer afhænig hvilken afdeling man har krydset af. Feltet er et 'int'.
Jeg kan ikke helt forstå hvad du mener med anførselstegn, hvilke skal væk og hvilke skal ikke?
Men hvad med denne linie, skal der ikke laves noget om der?: <input type="checkbox" name="1" value="1">
det er de anførselstegn der er skrevet i mysql kommandoen der skal væk. hvis du kikker på de to sterer ovenfor jeg har skrevet in mysql_query linie kan du se jeg har fjernet de uønskede anførseltegn i nummer 2
dine anførselstegn i html-koden er fine. men atributten name="1" skal rettes. værdien til name skal starte med et alfabetisk bogstav, fx: name="a" det må ikke starte med et ciffer
en god regel er altid at sætte en 'or die' på kald til mysql_query. på den måde kan man få den fejlmeddelelse sql leverer når den ikke kan hitte ud af det.
mysql_query(" INSERT INTO **--** (telefon, afdeling) VALUES (".$_POST["telefon"].", ".$_POST["afdeling"].") ") or die( mysql_error() );
die bliver kun udført hvis mysql_query går galt, så det skader ikke spor at beholde den selv efter du har debugget.
men det er lidt ukorrekt at bruge checkbokse til det. i hver submit af formularen må der jo kun være EEN af dem der er valgt. det er et job for radioknapper.
formand <input type="radio" name="afdeling" value="1"> kasserer <input type="radio" name="afdeling" value="2"> hul i jorden <input type="radio" name="afdeling" value="10" selected>
og ny har du en radioknap-gruppe der hedder afdeling så du kan bruge $_POST["afdeling"] for at få value-nummeret sat ind i databasen med koden i 08/01-2003 13:32:37
hul i jorden <input type="radio" name="afdeling" value="10" checked>
når du starter med en af dem checked slipper du for at skulle teste om brugeren har huske at klikke.
Synes godt om
Ny brugerNybegynder
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.