Avatar billede mcardle Nybegynder
03. april 2006 - 23:18 Der er 15 kommentarer og
1 løsning

Hent højeste værdi i sql-database og lave det til en variable

Jeg har en database(Kartotek), hvor der er en kolonne der hedder Medlem(Værdi = medlemsnummer). Jeg vil gerne trække højeste værdi ud og + med 1 og lave det til en variabel, så jeg i formen for nye medlemmer kan autoindsætte medlemsnummer, så man ved hvor langt man er nået.

Hilsen //mcardle
Avatar billede hmortensen Nybegynder
03. april 2006 - 23:26 #1
Dit medlemsnr er vel autogenereret i tabellen. Du kan hente den autogenerede værdi ud lige efter indsættelse.
Avatar billede mcardle Nybegynder
03. april 2006 - 23:49 #2
Jeg er rimelig ny i faget indenfor sql-database. Hvordan gør man det...?
Avatar billede hmortensen Nybegynder
03. april 2006 - 23:55 #3
Sætter feltet til at autogenerere eller henter værdien ?

Hvilken database type er her tale om ?
Avatar billede mcardle Nybegynder
04. april 2006 - 00:03 #4
Øhh, pas. Jeg har en form, hvor jeg putter tingene ind sender det videre med action til gem.php.

<?php

require("mysql.php");


if(is_array($HTTP_POST_VARS)) {
  $medlem = $HTTP_POST_VARS['medlem'];
  $fornavn = $HTTP_POST_VARS['fornavn'];
  $efternavn = $HTTP_POST_VARS['efternavn'];
  $vej = $HTTP_POST_VARS['vej'];
  $bynavn = $HTTP_POST_VARS['bynavn'];
  $postnr = $HTTP_POST_VARS['postnr'];
  $alder = $HTTP_POST_VARS['alder'];
  $tlf = $HTTP_POST_VARS['tlf'];
  $mobil = $HTTP_POST_VARS['mobil'];
  $email = $HTTP_POST_VARS['email'];
}
elseif (is_array($_POST)) {
  $medlem = $_POST['medlem'];
  $fornavn = $_POST['navn'];
  $efternavn = $_POST['epost'];
  $vej = $_POST['epost'];
  $bynavn = $_POST['navn'];
  $postnr = $_POST['epost'];
  $alder = $_POST['epost'];
  $tlf = $_POST['navn'];
  $mobil = $_POST['epost'];
  $email = $_POST['epost'];
}

function skriv_i_gbog($Medlem, $fornavn, $efternavn, $vej, $bynavn, $postnr, $alder, $tlf, $mobil, $email){

$sql = "insert into Kartotek(Medlem, ForNavn, EfterNavn, Vej, ByNavn, PostNr, Alder, Telefon, Mobil, Email)
        values('$medlem', '$fornavn', '$efternavn', '$vej', '$bynavn', '$postnr', '$alder', '$tlf', '$mobil', '$email')";

    aabn_forbindelse_og_vaelgdb();
    sql_spoerg($sql);
    luk_forbindelse();
       
}

skriv_i_gbog($medlem, $fornavn, $efternavn, $vej, $bynavn, $postnr, $alder, $tlf, $mobil, $email);

if(!skriv_i_gbog){
echo "Data kunne ikke skrives.";
}
else{
echo "Data'erne er gemt.";
}

echo "<br />";
echo "<a href=\"soeg.php\">Søg i databasen</a> - ";
echo "<a href=\"alle.php\">Se alle</a> - ";
echo "<a href=\"tilfoej.php\">Tilføj Ny</a>";

?>
Avatar billede mcardle Nybegynder
04. april 2006 - 00:08 #5
Jeg henter tingene tilbage sådan her:


$res = mysql_query("SELECT ForNavn, EfterNavn, Vej, ByNavn, PostNr, Alder, Telefon, Mobil, Email FROM Kartotek");
while ($row = mysql_fetch_array($res)){
print "<div class=\"divTag\">" . "<span class=\"spanTag\">" . "<b>MedlemsNr.:</b>" . $row['Medlem'] . "<br />" . "<span>" . "<span class=\"spanTag\">" . "<b>Navn: </b>" . $row['ForNavn'] . ' ' . $row['EfterNavn'] . "</span>" . "<br />" . "<span class=\"spanTag\">" . "<b>Adresse: </b>" . $row['Vej'] . ' - ' . $row['PostNr'] . ' - ' . $row['ByNavn'] . "</span>" . "<br />" . "<span class=\"spanTag\">" . "<b>Alder: </b>" . $row['Alder'] . "</span>" . "<br />" . "<span class=\"spanTag\">" . "<b>Telefon: </b>" . $row['Telefon'] . "</span>" . "<br />" . "<span class=\"spanTag\">" . "<b>Mobil: </b>" . $row['Mobil'] . "</span>" . "<br />" . "<span class=\"spanTag\">" . "<b>Email: </b>" . "<a href=\"mailto:\"" . $row['Email'] . ">" . $row['Email'] . "</a>" . "</span>" . "</div>";

Der er sikkert en nemmere måde at gøre det på, men er som sagt ved at lære det.
}
Avatar billede mcardle Nybegynder
04. april 2006 - 00:21 #6
MyISAM
Avatar billede coderdk Praktikant
04. april 2006 - 11:01 #7
Lav medlems-ID'et til auto_increment, så slipper du for at holde styr på det.
Avatar billede mcardle Nybegynder
04. april 2006 - 12:26 #8
Men hvordan gør jeg det?
Avatar billede mcardle Nybegynder
04. april 2006 - 13:07 #9
Jeg vil gerne lave den forfra. Jeg har lavet noget, så den ikke virker mere.

create table Kartotek
(
  Medlem        integer(3),
  ForNavn        varchar(50),
  EfterNavn      varchar(50),
  Vej        varchar(200),
  ByNavn    varchar(50),
  PostNr    integer(4),
  Alder        integer(3),
  Telefon    integer(8),
  Mobil        integer(8),
  Email        varchar(200)
)

Er det her rigtigt? Og hvad skal jeg skrive for at auto_increment med 1 hver gang?
Avatar billede arne_v Ekspert
04. april 2006 - 13:10 #10
Medlem        integer(3) auto_increment,
Avatar billede mcardle Nybegynder
04. april 2006 - 14:29 #11
Det virker ikke. Den skriver at der kun kan være en en auto_increment og jeg har ikke lavet andre. Og at den skal defineres med en nøgle?
Avatar billede mcardle Nybegynder
04. april 2006 - 14:34 #12
Det er fordi jeg har en anden tabel der kører en gæstebog, men det burde da være muligt at have 2 forskellige tabeller med auto_increment.
Avatar billede coderdk Praktikant
04. april 2006 - 14:56 #13
den skal være primary key, og du skal ikke indsætte noget i den
Avatar billede mcardle Nybegynder
04. april 2006 - 15:05 #14
Jeg har fået den til at virke nu. Næsten, da. For den kommer ikke med noget output, når jeg kalder den.
Avatar billede mcardle Nybegynder
06. april 2006 - 17:36 #15
Jeg har fundet ud af det. Tak for hjælpen coderdk. Hvis du vil have points, så læg et svar. ;-)
Avatar billede coderdk Praktikant
06. april 2006 - 19:10 #16
Ok :)
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