/ Forside/ Teknologi / Udvikling / PHP / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
8 personer i en table...
Fra : IvanMort
Vist : 388 gange
375 point
Dato : 26-10-02 00:04

Jeg skal ha en online tilmelding, med 2 voksen, og mulighed for 6 børn, de er på en tilmelding, men de skal reg. som en person, i en database (Mysql), så man kan søge på antal tilmelde, alder mm.m.

se. : http://www.sjellebro.dk/fam2002.html

Jeg har prøvet at lave 8 tabler og merge dem, men jeg vil gerne genbruge nogle oplysning, som hvilken lejr de er tilmeld m.m. Men unden held...

 
 
Kommentar
Fra : karlosDK


Dato : 03-11-02 19:31

Opret en tabel med de feltnavne du har i formularen, og kald den tilmelding.
opret forbindelse til databasen og sæt denne kode i process.php:

$tabel = "tilmelding";
$felter = "(";
$vaerdier = " VALUES (";
for($i=1;$i<7;$i++) {
$barn = "Barn" .$i. "Navn";
if (!$_POST[$barn]=="") {
$antal = $i;
}}
foreach ($_POST as $key => $value) {
$felter .= "$key, ";
$vaerdier .= "$value, ";
}
$felter = substr("$felter" ,0 , -2);
$vaerdier = substr("$vaerdier" ,0 , -2);
$felter .= ",antal)";
$vaerdier .= ",$antal)";

$sql_indsaet = "INSERT INTO $tabel $felter $vaerdier";

if (!mysql_query($sql_indsaet)) {
echo "Fejl! :" . mysql_error();
} else {
echo "Tak for tilmeldingen";


Så kører det!

Kommentar
Fra : IvanMort


Dato : 03-11-02 20:32

sådan ser min proccess.php ud :

<?php
$errors=0;
$error="The following errors occured while processing your form input.<ul>";
if($familielejr=="" || $beboelse=="" || $civilstand=="" ){
$errors=1;
$error.="<li>You did not enter one or more of the required fields. Please go back and try again.";
}
if($errors==1) echo $error;
else{
$dato_array = getdate();
$Dato = $dato_array["year"]."-".$dato_array["mon"]."-".$dato_array["mday"];
$message="familielejr: ".$familielejr."
navn1: ".$navn1."
Foedselsdato1: ".$Foedselsdato1."
navn2: ".$navn2."
Foedselsdato2: ".$Foedselsdato2."
adresse: ".$adresse."
postnr_by: ".$postnr_by."
land: ".$land."
tlfnr: ".$tlfnr."
email: ".$email."
beboelse: ".$beboelse."
civilstand: ".$civilstand."
Boernevagt: ".$Boernevagt."
Barn1Navn: ".$Barn1Navn."
Barn1Koen: ".$Barn1Koen."
Barn1Foedselsdato: ".$Barn1Foedselsdato."
Barn1Klassetrin: ".$Barn1Klassetrin."
Barn2Navn: ".$Barn2Navn."
Barn2Koen: ".$Barn2Koen."
Barn2Foedselsdato: ".$Barn2Foedselsdato."
Barn2Klassetrin: ".$Barn2Klassetrin."
Barn3Navn: ".$Barn3Navn."
Barn3Koen: ".$Barn3Koen."
Barn3Foedselsdato: ".$Barn3Foedselsdato."
Barn3Klassetrin: ".$Barn3Klassetrin."
Barn4Navn: ".$Barn4Navn."
Barn4Koen: ".$Barn4Koen."
Barn4Foedselsdato: ".$Barn4Foedselsdato."
Barn4Klassetrin: ".$Barn4Klassetrin."
Barn5Navn: ".$Barn5Navn."
Barn5Koen: ".$Barn5Koen."
Barn5Foedselsdato: ".$Barn5Foedselsdato."
Barn5Klassetrin: ".$Barn5Klassetrin."
Barn6Navn: ".$Barn6Navn."
Barn6Koen: ".$Barn6Koen."
Barn6Foedselsdato: ".$Barn6Foedselsdato."
Barn6Klassetrin: ".$Barn6Klassetrin."
Bemaerkninger: ".$Bemaerkninger."
Dato: ".$Dato."
";
mail("*****@*****.dk","Online Tilmelding",$message,"From: *****@****.dk");
$link = mysql_connect("localhost","*****","******");
mysql_select_db("*******",$link);
$query="insert into Familycamp (familielejr,navn1,Foedselsdato1,navn2,Foedselsdato2,adresse,postnr_by,land,tlfnr,email,beboelse,civilstand,Boernevagt,Barn1Navn,Barn1Koen,Barn1Foedselsdato,Barn1Klassetrin,Barn2Navn,Barn2Koen,Barn2Foedselsdato,Barn2Klassetrin,Barn3Navn,Barn3Koen,Barn3Foedselsdato,Barn3Klassetrin,Barn4Navn,Barn4Koen,Barn4Foedselsdato,Barn4Klassetrin,Barn5Navn,Barn5Koen,Barn5Foedselsdato,Barn5Klassetrin,Barn6Navn,Barn6Koen,Barn6Foedselsdato,Barn6Klassetrin,Bemaerkninger,Dato) values ('".$familielejr."','".$navn1."','".$Foedselsdato1."','".$navn2."','".$Foedselsdato2."','".$adresse."','".$postnr_by."','".$land."','".$tlfnr."','".$email."','".$beboelse."','".$civilstand."','".$Boernevagt."','".$Barn1Navn."','".$Barn1Koen."','".$Barn1Foedselsdato."','".$Barn1Klassetrin."','".$Barn2Navn."','".$Barn2Koen."','".$Barn2Foedselsdato."','".$Barn2Klassetrin."','".$Barn3Navn."','".$Barn3Koen."','".$Barn3Foedselsdato."','".$Barn3Klassetrin."','".$Barn4Navn."','".$Barn4Koen."','".$Barn4Foedselsdato."','".$Barn4Klassetrin."','".$Barn5Navn."','".$Barn5Koen."','".$Barn5Foedselsdato."','".$Barn5Klassetrin."','".$Barn6Navn."','".$Barn6Koen."','".$Barn6Foedselsdato."','".$Barn6Klassetrin."','".$Bemaerkninger."','".$Dato."')";
mysql_query($query);
header("Refresh: 0;url=http://www.sjellebro.dk/success.html");
}
?>

hvordan skal den se ud, hvis man skal kunne se hvor mange der er tilmeld, og hvordan de skal bo m.m.

Kommentar
Fra : karlosDK


Dato : 03-11-02 23:29

Du skal selvfølgelig også have en kolonne der hedder antal i tabellen.
I denne kolonne bliver værdien for antal børn så sat ind

Kommentar
Fra : karlosDK


Dato : 03-11-02 23:58

Hvis jeg har forstået dig rigtigt, skulle dette kunne gøre det.
Der bliver udskrevet en linie for hver familie.
Beboelsesform, Antal voksne, Antal Børn.
Til sidst udskrives det totalt antal tilmeldte.

$qry_tilmeldte = "SELECT * FROM Familycamp ORDER BY beboelse";
$result = mysql_query($qry_tilmeldte);
while($posten = mysql_fetch_array($result)){
echo $posten['beboelse'];
for($i=1;$i<7;$i++) {
$barn = "Barn" .$i. "Navn";
if (!$posten[$barn]=="") {
$antal = $i;
}}
if(!$posten['navn2']=="") {
$antalvoksne = 2;
} else {
$antalvoksne = 1;
}
$antaltotal += $antalvoksne + $antal;
echo "Voksne : $antalvoksne, Børn : $antal<br>";
}
echo $antaltotal;

Kommentar
Fra : IvanMort


Dato : 04-11-02 09:48

nej, det er desvære ikke nok, jeg skal kunne søge efter hvor mange børn der er 14 år f.eks.
og hvor mange der er på fuldkost, hvor mange der skal bo på værelse, hvor mange der skal campere..
og hvilken lejre de skal på, da vi har flere...
Med andre ord, så skal hver person være en tilmelding = en record i table...
men jeg ønsker jo ikke at de skal tilmelde sig en af gangen, jeg havde tænkt mig
at hver person kom ind i en table, og at man på en eller anden måde kunne slå
dem sammen, men de skal også stadi virke som en familie, f. eks. med samme idnr.
Håber det var en god nok forklaring

Kommentar
Fra : IvanMort


Dato : 04-11-02 09:55

så de oplysninger jeg gerne vil have for hver enkel person er :
Navn, fødselsdato, køn, klassetrin

Disse er fælles for hele familien:
Dato, famlilelejr, beboelse, adresse, postnr_by, land, tlfnr, email, civilstand, Børnevagt, Bemærkninger

Accepteret svar
Fra : karlosDK

Modtaget 375 point
Dato : 04-11-02 20:32

Hej igen!

Jeg har rodet lidt med det, og her er resultatet:
Der ligger et databaseskelet på http://www.sostack.com/scripting/camp.zip
Det kan bruges sasmmen med denne kode:

<?
$host = "localhost";
$user = "root";
$pass = "";
$link = mysql_connect($host, $user, $pass);
mysql_select_db("camp");
$tabel = "familycamp";
$sql_familieID = "SELECT familieID FROM $tabel ORDER BY familieID DESC";
$fam_ID = mysql_query($sql_familieID);
$familieID = (integer)mysql_fetch_array($fam_ID);
$familieID += 1;
$tabel2 = "persons";
$felter = "(dato, familielejr, beboelse, adresse, postnr, bynavn, land, tlfnr, email, civilstand, barnevagt, bemærkninger, familieID)";
$lejr = explode(" (", $_POST['familielejr']);
$vaerdier = " VALUES (";
$vaerdier .= "\"" . ereg_replace(')', '',$lejr[1]) ."\",";
$vaerdier .= "\"" . $lejr[0] ."\",";
$vaerdier .= "\"" . $_POST['beboelse']."\",";
$vaerdier .= "\"" . $_POST['adresse'] ."\",";
$vaerdier .= (integer)substr($_POST['postnr_by'], 0, 4) .",";
$vaerdier .= "\"" .substr($_POST['postnr_by'],5,strlen($_POST['postnr_by'])-5)."\",";
$vaerdier .= "\"" .$_POST['land']."\",";
$vaerdier .= $_POST['tlfnr'].",";
$vaerdier .= "\"" .$_POST['email']."\",";
$vaerdier .= "\"" .$_POST['civilstand']."\",";
if(!isset($_POST['Boernevagt'])) {
$vaerdier .= "\"off\",";
}else{
$vaerdier .= "\"" .$_POST['Boernevagt']."\",";
}
$vaerdier .= "\"" .$_POST['Bemaerkninger']."\", $familieID)";
mysql_query("INSERT INTO $tabel $felter $vaerdier") or die(mysql_error() . "<br>" . $vaerdier);
for($i = 1;$i < 3;$i++) {
$voksen = $_POST["navn".$i];
$voksenalder = $_POST["Foedselsdato".$i];
$sql_voksen = "INSERT INTO $tabel2 (navn,foedselsdato,koen,klassetrin,familieID) VALUES (\"$voksen\",\"$voksenalder\",\"NULL\",0,$familieID)";
mysql_query($sql_voksen) or die (mysql_error() ."<br>" .$sql_voksen);
}
for($i = 1;$i < 7;$i++) {
$barn = $_POST["Barn".$i."Navn"];
$barnalder = $_POST["Barn".$i."Foedselsdato"];
$barnkoen = $_POST["Barn".$i."Koen"];
$barnklasse = $_POST["Barn".$i."Klassetrin"];
$sql_barn = "INSERT INTO $tabel2(navn,foedselsdato,koen,klassetrin,familieID) VALUES ('$barn','$barnalder','$barnkoen',$barnklasse,$familieID)";
if(!$barn == "") {
mysql_query($sql_barn) or die (mysql_error());
}
}
mysql_close($link);
?>


Kommentar
Fra : karlosDK


Dato : 04-11-02 20:34

Hej igen!

Jeg har rodet lidt med det, og her er resultatet:
Der ligger et databaseskelet på http://www.sostack.com/scripting/camp.zip
Det kan bruges sasmmen med denne kode:

<?
$host = "localhost";
$user = "root";
$pass = "";
$link = mysql_connect($host, $user, $pass);
mysql_select_db("camp");
$tabel = "familycamp";
$sql_familieID = "SELECT familieID FROM $tabel ORDER BY familieID DESC";
$fam_ID = mysql_query($sql_familieID);
$familieID = (integer)mysql_fetch_array($fam_ID);
$familieID += 1;
$tabel2 = "persons";
$felter = "(dato, familielejr, beboelse, adresse, postnr, bynavn, land, tlfnr, email, civilstand, barnevagt, bemærkninger, familieID)";
$lejr = explode(" (", $_POST['familielejr']);
$vaerdier = " VALUES (";
$vaerdier .= "\"" . ereg_replace(')', '',$lejr[1]) ."\",";
$vaerdier .= "\"" . $lejr[0] ."\",";
$vaerdier .= "\"" . $_POST['beboelse']."\",";
$vaerdier .= "\"" . $_POST['adresse'] ."\",";
$vaerdier .= (integer)substr($_POST['postnr_by'], 0, 4) .",";
$vaerdier .= "\"" .substr($_POST['postnr_by'],5,strlen($_POST['postnr_by'])-5)."\",";
$vaerdier .= "\"" .$_POST['land']."\",";
$vaerdier .= $_POST['tlfnr'].",";
$vaerdier .= "\"" .$_POST['email']."\",";
$vaerdier .= "\"" .$_POST['civilstand']."\",";
if(!isset($_POST['Boernevagt'])) {
$vaerdier .= "\"off\",";
}else{
$vaerdier .= "\"" .$_POST['Boernevagt']."\",";
}
$vaerdier .= "\"" .$_POST['Bemaerkninger']."\", $familieID)";
mysql_query("INSERT INTO $tabel $felter $vaerdier") or die(mysql_error() . "<br>" . $vaerdier);
for($i = 1;$i < 3;$i++) {
$voksen = $_POST["navn".$i];
$voksenalder = $_POST["Foedselsdato".$i];
$sql_voksen = "INSERT INTO $tabel2 (navn,foedselsdato,koen,klassetrin,familieID) VALUES (\"$voksen\",\"$voksenalder\",\"NULL\",0,$familieID)";
mysql_query($sql_voksen) or die (mysql_error() ."<br>" .$sql_voksen);
}
for($i = 1;$i < 7;$i++) {
$barn = $_POST["Barn".$i."Navn"];
$barnalder = $_POST["Barn".$i."Foedselsdato"];
$barnkoen = $_POST["Barn".$i."Koen"];
$barnklasse = $_POST["Barn".$i."Klassetrin"];
$sql_barn = "INSERT INTO $tabel2(navn,foedselsdato,koen,klassetrin,familieID) VALUES ('$barn','$barnalder','$barnkoen',$barnklasse,$familieID)";
if(!$barn == "") {
mysql_query($sql_barn) or die (mysql_error());
}
}
mysql_close($link);
?>


Kommentar
Fra : karlosDK


Dato : 04-11-02 20:35

Hej igen!

Jeg har rodet lidt med det, og her er resultatet:
Der ligger et databaseskelet på http://www.sostack.com/scripting/camp.zip
Det kan bruges sasmmen med denne kode:

<?
$host = "localhost";
$user = "root";
$pass = "";
$link = mysql_connect($host, $user, $pass);
mysql_select_db("camp");
$tabel = "familycamp";
$sql_familieID = "SELECT familieID FROM $tabel ORDER BY familieID DESC";
$fam_ID = mysql_query($sql_familieID);
$familieID = (integer)mysql_fetch_array($fam_ID);
$familieID += 1;
$tabel2 = "persons";
$felter = "(dato, familielejr, beboelse, adresse, postnr, bynavn, land, tlfnr, email, civilstand, barnevagt, bemærkninger, familieID)";
$lejr = explode(" (", $_POST['familielejr']);
$vaerdier = " VALUES (";
$vaerdier .= "\"" . ereg_replace(')', '',$lejr[1]) ."\",";
$vaerdier .= "\"" . $lejr[0] ."\",";
$vaerdier .= "\"" . $_POST['beboelse']."\",";
$vaerdier .= "\"" . $_POST['adresse'] ."\",";
$vaerdier .= (integer)substr($_POST['postnr_by'], 0, 4) .",";
$vaerdier .= "\"" .substr($_POST['postnr_by'],5,strlen($_POST['postnr_by'])-5)."\",";
$vaerdier .= "\"" .$_POST['land']."\",";
$vaerdier .= $_POST['tlfnr'].",";
$vaerdier .= "\"" .$_POST['email']."\",";
$vaerdier .= "\"" .$_POST['civilstand']."\",";
if(!isset($_POST['Boernevagt'])) {
$vaerdier .= "\"off\",";
}else{
$vaerdier .= "\"" .$_POST['Boernevagt']."\",";
}
$vaerdier .= "\"" .$_POST['Bemaerkninger']."\", $familieID)";
mysql_query("INSERT INTO $tabel $felter $vaerdier") or die(mysql_error() . "<br>" . $vaerdier);
for($i = 1;$i < 3;$i++) {
$voksen = $_POST["navn".$i];
$voksenalder = $_POST["Foedselsdato".$i];
$sql_voksen = "INSERT INTO $tabel2 (navn,foedselsdato,koen,klassetrin,familieID) VALUES (\"$voksen\",\"$voksenalder\",\"NULL\",0,$familieID)";
mysql_query($sql_voksen) or die (mysql_error() ."<br>" .$sql_voksen);
}
for($i = 1;$i < 7;$i++) {
$barn = $_POST["Barn".$i."Navn"];
$barnalder = $_POST["Barn".$i."Foedselsdato"];
$barnkoen = $_POST["Barn".$i."Koen"];
$barnklasse = $_POST["Barn".$i."Klassetrin"];
$sql_barn = "INSERT INTO $tabel2(navn,foedselsdato,koen,klassetrin,familieID) VALUES ('$barn','$barnalder','$barnkoen',$barnklasse,$familieID)";
if(!$barn == "") {
mysql_query($sql_barn) or die (mysql_error());
}
}
mysql_close($link);
?>


Kommentar
Fra : karlosDK


Dato : 04-11-02 20:37

Jeg elsker når der går ged i systemet!

Kommentar
Fra : IvanMort


Dato : 05-11-02 09:14

hej igen

Jeg ved ikke hvordan jeg kan bruge de filer du har lavet, det er ikke nogle filtyper jeg kan bruge
da det ikke er localt ( mysql ) min side ligger hos : www.web10.dk
men det er vel bare 2 tabels jeg skal lave : familycamp & persons
familtcamp : (dato, familielejr, beboelse, adresse, postnr, bynavn, land, tlfnr, email, civilstand, barnevagt, bemærkninger, familieID)
persons : (navn,foedselsdato,koen,klassetrin,familieID)

ellers ser det rigtig godt ud, mange tak for dit store arbejde, jeg skal nok snart Accepter dit svar... :)

Kommentar
Fra : IvanMort


Dato : 05-11-02 09:18

ok, jeg kan se du kun er Almindelig Bruger, så du er ikke uden efter point
du er bare en meget hjælpsom person, det er bare fedt....

Kommentar
Fra : IvanMort


Dato : 05-11-02 10:16

You have an error in your SQL syntax near 'ærkninger, familieID)

http://www.sjellebro.dk/fam2002.html

Kommentar
Fra : karlosDK


Dato : 05-11-02 16:19

omdøb bemærkninger til bemaerkninger i tabellen og i sqql-sætningen, så går det nok, skal du se!

Kommentar
Fra : IvanMort


Dato : 05-11-02 17:38

Når jeg tilmelde 1 person :
Duplicate entry '1' for key 1
INSERT INTO persons (navn,foedselsdato,koen,klassetrin,familieID) VALUES ("","","NULL",0,1)

når jeg tilmelde 3 personer :
Duplicate entry '2' for key 1
INSERT INTO persons (navn,foedselsdato,koen,klassetrin,familieID) VALUES ("Testnavn2","**-**-**","NULL",0,2)

så der kommer kun 1 person i table..

Kommentar
Fra : karlosDK


Dato : 05-11-02 21:29

Prøv at slette alle data i begge tabellerne igen, for den laver kludder i det med familieID, hvis det hele ikke virker første gang.

<?
mysql_query("DELETE * FROM familycamp");
mysql_query("DELETE * FROM persons");
?>


Kommentar
Fra : karlosDK


Dato : 05-11-02 21:31

Og der skal ikke være nogen Primary Key i tabellen Persons!

Godkendelse af svar
Fra : IvanMort


Dato : 06-11-02 09:02

Tak for svaret karlosDK.
Nu mangler jeg bare at sætte dem sammen igen :)
og dato er tilmeldingsdato ikke lejrdato, men det tror jeg
at jeg kan klare selv...

Mange tak..
                        

Kommentar
Fra : IvanMort


Dato : 06-11-02 09:59

Hej igen

jeg ændre :
$vaerdier .= "\"" . ereg_replace(')', '',$lejr[1]) ."\",";
$vaerdier .= "\"" . $lejr[0] ."\",";

til :
$vaerdier .= "\"" . $_POST['dato']."\",";
$vaerdier .= "\"" . $_POST['familielejr']."\",";

og slette:
$lejr = explode(" (", $_POST['familielejr']);

men der kommer inge dato i table kun i maillen..

min table er følgne:
CREATE TABLE familycamp (
familieID int(10) NOT NULL auto_increment,
dato date NOT NULL default '0000-00-00',
familielejr text NOT NULL,
beboelse text NOT NULL,
adresse text NOT NULL,
postnr text NOT NULL,
bynavn text NOT NULL,
land text NOT NULL,
tlfnr text NOT NULL,
email text NOT NULL,
civilstand text NOT NULL,
boernevagt text NOT NULL,
bemaerkninger text NOT NULL,
PRIMARY KEY (familieID),
UNIQUE KEY familieID (familieID)
) TYPE=MyISAM;

jeg har også indsat :
$dato_array = getdate();
$dato = $dato_array["year"]."-".$dato_array["mon"]."-".$dato_array["mday"];
så datoen kommer på den rigtige måde...

og så er jeg ikke sikke på hvordan jeg skal gøre det så det virker som en table


Kommentar
Fra : karlosDK


Dato : 06-11-02 22:01

Hej igen:

Du skal nok ændre:
$vaerdier .= "\"" . $_POST['dato']."\",";

til:
$vaerdier .= "\"" . $dato."\",";

så tror jeg den er der.


Kommentar
Fra : IvanMort


Dato : 07-11-02 12:26

Ok, nu virker det hele, men hvordan får jeg sat det sammen, så det virker som en table?

Du har følgende muligheder
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.

Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste