Avatar billede kavlar Novice
30. juni 2009 - 10:29 Der er 4 kommentarer og
1 løsning

Hvordan gemmer man et autoincrement, når der insættes i databasen?

Hej eksperter
Jeg har givet mig selv den udfordring, at jeg vil opbygge en applikation, hvor brugeren kan oprette et indlæg på en side. Når vedkommende gør det, vil han samtidig komme på en mail-liste og vil modtage emails, hvis der fremover kommer kommentarer eller opdateringer til hans indlæg.

Jeg har bygget det vha 3 tabeller i MySQL, hvor tabel 1 indeholder brugerdata, tabel 2 indeholder beskeddata og tabel 3  mailliste data.
Beskeddata har et message_id som er genereret vha autoincrement. Mit spørgsmål er, hvordan jeg på samme tid, som jeg opretter et indlæg og tildeler det record-set et auto_id gemmer dette id, som jeg så kan sætte på mail-listen.

Se nedenstående kode.

<?php
//Postede data (mysql_prep-funktionen sikrer indsatta data i SQL'en)
$message_title = mysql_prep($_POST['message_title']);
$message_text = mysql_prep($_POST['message_text']);
$message_date = mysql_prep($_POST['message_date']);
$message_submitter = mysql_prep($_POST['message_submitter']);

//Sever data
$servername = 'servernavn';
$server_user = 'username';
$server_pass = 'password';
$db_name = 'databasenavn';
$db_table = 'tabelnavn';
$db_table2 = 'tabelnavn2';
//DB connection
$connection = mysql_connect($servername, $server_user, $server_pass);
if(!$connection){
    die("Database connection did not succeed" . mysql_error());
}
$select_db = mysql_select_db($db_name, $connection);
if(!$select_db){
    die("Database selection not succeed" . mysql_error());
}

//Opbygning af SQL
$sql = "INSERT INTO {$db_name}.{$db_table} ";
$sql .= "(";
$sql .= "id_message, message_title, message_text, message_date, message_submitter ";
$sql .= ") ";
$sql .= "VALUE(";
$sql .= "NULL, '{$message_title}', '{$message_text}', {$message_date}, {$message_submitter}";
//      AUTOINCREMENT
$sql .= ")";

$result = mysql_query($sql, $connection);
    if(!result){
        echo "ERROR IN INSERTING DATA!";
    }
else{
    //Opbygning af SQL til email notifikation
    $sql_email = "INSERT INTO {$db_name}.{$db_table} ";
    $sgl_email .= "(";
    $sgl_email .= "id_notification, id_message, id_user";
    $sgl_email .= ") ";
    $sgl_email .= "VALUE(";
    $sgl_email .= "NULL, $id_message, $message_submitter";
    //                        AI,        ? HVORDAN
    $sgl_email .= ")";

    $result_email = mysql_query($sql_email, $connection);
    if(!result){
            echo "ERROR IN INSERTING DATA!";
        }
}   
?>
Avatar billede majbom Novice
30. juni 2009 - 10:34 #1
Avatar billede kavlar Novice
30. juni 2009 - 10:39 #2
Sender du det som svar?
Tusind tak!
Avatar billede majbom Novice
30. juni 2009 - 10:42 #3
du skriver sGl i stedet for sQl som du bruger i første linje, så når du kører din query kører du kun:

mysql_query("INSERT INTO {$db_name}.{$db_table} ");

:)

og du bør have ' rundt om dine værdier i VALUES-delen:

$sql_email .= "'NULL', '$id_message', '$message_submitter'";
Avatar billede majbom Novice
30. juni 2009 - 10:42 #4
kommer her!
Avatar billede majbom Novice
30. juni 2009 - 11:09 #5
tak for point :)
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

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