Avatar billede snuseren.dk Nybegynder
07. juli 2003 - 15:48 Der er 18 kommentarer og
1 løsning

Det rigtige id.

Hey..

Jeg er igang med et forum. Når man opretter spørgsmålet, i en form bliver den "action" videre til en side, som indsætter i mysql db. Den side, redirecter så derefter hen til den side vis_spm.php, hvor spørgsmålet bliver vist. Men jeg kan ikke få den funktion til at virke, hvor den vælger det rette id. Den bliver ved med kun at redirecte til vis_spm.php?id=1 altså id bliver ved med at være et, uanset om det er id 1 eller hvad det nu er.

Opret_spm.php:


<?php

$max = 0;

// Variabler til MySQL oplysninger
    $mysql_host = "localhost"; // MySQL server
    $mysql_user = "root"; // MySQL brugernavn
    $mysql_pw = ""; // MySQL Adgangskode
    $mysql_db = "qaa"; // MySQL database navn

// Variabler til indsættelse i database
    $spm = $_POST["spm"];

// Her åbnes for MySQL databasen
    $DB = mysql_connect($mysql_host, $mysql_user, $mysql_pw)or die(mysql_error());
    mysql_select_db($mysql_db, $DB)or die(mysql_error());

// Her indsættes der til MySQL
    $result = mysql_query("INSERT INTO sprg (spm) VALUES ('$spm')")or die(mysql_error());

// Her tages alt fra tabellen sprg
    $sql2 = mysql_query("SELECT * FROM sprg ORDER BY spmid");

// Laver array
    while($row = mysql_fetch_array($sql2))
{


$spm = $row["spm"];

  if ($spm_id > $max)
    $max = $spm_id;
}

$max = $max + 1;

// Sender videre til se_spm.php
    header("location: vis_spm.php?spm_id=$max");

?>

vis_spm.php:


<?php
$spmid = $_GET["spm_id"];

// Variabler til MySQL oplysninger
    $mysql_host = "localhost"; // MySQL server
    $mysql_user = "root"; // MySQL brugernavn
    $mysql_pw = ""; // MySQL Adgangskode
    $mysql_db = "qaa"; // MySQL database navn

// Her åbnes for MySQL databasen
    $DB = mysql_connect($mysql_host, $mysql_user, $mysql_pw)or die(mysql_error());
    mysql_select_db($mysql_db, $DB)or die(mysql_error());

// Her indsættes der til MySQL
    $result = mysql_query("SELECT * FROM sprg WHERE spmid = '$spmid'")or die(mysql_error());


// Laver array
    $row = mysql_fetch_array($result);

echo $row["spm"];
?>

(jeg regnede ikke med det var nødvendigt med formen)

Men hvordan kan jeg lave det?

// Anders

ps Jeg kan nok først svare igen, om et par timer :o(
Avatar billede avminarm Juniormester
07. juli 2003 - 15:54 #1
kan du ikke sende id med fra formularen som en hidden?
Avatar billede detox Nybegynder
07. juli 2003 - 15:58 #2
Skal der ikke stå?:
if ($spm['id'] > $max)
    $max = $spm_id;
Avatar billede detox Nybegynder
07. juli 2003 - 16:02 #3
Vrøvl!
Avatar billede detox Nybegynder
07. juli 2003 - 16:04 #4
Men jeg kan ikke lige se hvor du får $spm_id fra?
Avatar billede fangel Nybegynder
07. juli 2003 - 16:44 #5
skal du ikke bare finde det ID du lige har sat in? det kan du finde via mysql_inserted_id (usikker på svaremåden, men kig lidt)

Morten
Avatar billede snuseren.dk Nybegynder
07. juli 2003 - 21:40 #6
Jeg har lavet det før med ASP, og sådan noget, men det er ved at være så lang tid siden, fordi jeg har været igang med c++, og java. dea_pg ->> ar du ikke et eksempel eller sådan noget?

// Anders
Avatar billede fangel Nybegynder
07. juli 2003 - 23:11 #7
i morgen...
Avatar billede avminarm Juniormester
08. juli 2003 - 07:56 #8
hvis du har auto_increment på id kan du: SELECT MAX(id) FROM..... for at få den største id, men dea_pg's vil nok være at foretrække
Avatar billede snuseren.dk Nybegynder
08. juli 2003 - 10:07 #9
avminarm ->>  Det har jeg osse tænkt på, men det kan jo ske at der er en der opretter spørgsmål i forumet lige efter man har trykket "Opret spørgsmål" så det er det forkerte spørgsmål man får. Ved godt det er lidt usandsynligt, men det kan jo ske.
Avatar billede avminarm Juniormester
08. juli 2003 - 10:30 #10
kan godt se det - men det kunne måske løses ved at have et datetime felt og så vælge max på det
Avatar billede fangel Nybegynder
08. juli 2003 - 11:32 #11
avminarm => og hvis nu der når at komme en ny post mellem indsætningen og udvælgelse af max(id) ? så for man forkert id...

derfor:

Opret_spm.php:


<?php

$max = 0;

// Variabler til MySQL oplysninger
    $mysql_host = "localhost"; // MySQL server
    $mysql_user = "root"; // MySQL brugernavn
    $mysql_pw = ""; // MySQL Adgangskode
    $mysql_db = "qaa"; // MySQL database navn

// Variabler til indsættelse i database
    $spm = $_POST["spm"];

// Her åbnes for MySQL databasen
    $DB = mysql_connect($mysql_host, $mysql_user, $mysql_pw)or die(mysql_error());
    mysql_select_db($mysql_db, $DB)or die(mysql_error());

// Her indsættes der til MySQL
    mysql_query("INSERT INTO sprg (spm) VALUES ('$spm')")or die(mysql_error());
// Her findes det ID som det nyligt oprettede spørgsmål fik!
    $nyligt_oprettet_spm_id = mysql_insert_id

// Sender videre til se_spm.php
    header("location: vis_spm.php?spm_id=$nyligt_oprettet_spm_id");

?>

Morten
Avatar billede snuseren.dk Nybegynder
08. juli 2003 - 11:42 #12
dea_pg ->> Tak! Jeg skal lige teste det. (Sidder ikke lige ved en computer med apache på.) 2 sek. jeg skifter lige pc.
Avatar billede snuseren.dk Nybegynder
08. juli 2003 - 11:50 #13
Hvis jeg kører det, får jeg fejl: Parse error: parse error, unexpected T_STRING in c:\programmer\apache group\apache\htdocs\qaa\opret_spm_db.php on line 24

Opret_spm.htm:

<HTML>
<HEAD>
<TITLE>QAA [Opret Spørgsmål]</TITLE>
</HEAD>
<BODY>
<FORM name="opret_spm" method="post" action="opret_spm_db.php">
<textarea name="spm">
</textarea><br>
<input type="submit">
</FORM>
</BODY>

Opret_spm_db.php:

<?php

$max = 0;

// Variabler til MySQL oplysninger
    $mysql_host = "localhost"; // MySQL server
    $mysql_user = "root"; // MySQL brugernavn
    $mysql_pw = ""; // MySQL Adgangskode
    $mysql_db = "qaa"; // MySQL database navn

// Variabler til indsættelse i database
    $spm = $_POST["spm"];

// Her åbnes for MySQL databasen
    $DB = mysql_connect($mysql_host, $mysql_user, $mysql_pw)or die(mysql_error());
    mysql_select_db($mysql_db, $DB)or die(mysql_error());

// Her indsættes der til MySQL
    mysql_query("INSERT INTO sprg (spm) VALUES ('$spm')")or die(mysql_error());
// Her findes det ID som det nyligt oprettede spørgsmål fik!
    $nyligt_oprettet_spm_id = mysql_insert_id

// Sender videre til se_spm.php
    header("location: vis_spm.php?spm_id=$nyligt_oprettet_spm_id");

?>


Vis_spm.php:

<?php
$spmid = $_GET["spm_id"];

// Variabler til MySQL oplysninger
    $mysql_host = "localhost"; // MySQL server
    $mysql_user = "root"; // MySQL brugernavn
    $mysql_pw = ""; // MySQL Adgangskode
    $mysql_db = "qaa"; // MySQL database navn

// Her åbnes for MySQL databasen
    $DB = mysql_connect($mysql_host, $mysql_user, $mysql_pw)or die(mysql_error());
    mysql_select_db($mysql_db, $DB)or die(mysql_error());

// Her indsættes der til MySQL
    $result = mysql_query("SELECT * FROM sprg WHERE spmid = '$spmid'")or die(mysql_error());


// Laver array
    $row = mysql_fetch_array($result);

echo $row["spm"];
?>

Jeg kan desværre først komme på exp igen om en times tid.

// Anders
Avatar billede detox Nybegynder
08. juli 2003 - 12:12 #14
Der mangler lige lidt her:
--------------------------
Her indsættes der til MySQL
  mysql_query("INSERT INTO sprg (spm) VALUES ('$spm')")or die(mysql_error());
// Her findes det ID som det nyligt oprettede spørgsmål fik!
    $nyligt_oprettet_spm_id = mysql_insert_id();
Avatar billede snuseren.dk Nybegynder
08. juli 2003 - 14:19 #15
detox ->> Mange tak! Nu virker det :o)

Du skal bare sige til hvis du vil have lidt points, så opretter jeg et nyt spm. Men jeg synes det er rimeligt hvis dea_pg får de 30 her.

// Anders
Avatar billede detox Nybegynder
08. juli 2003 - 14:22 #16
Helt i orden, velbekommen. c",)
Avatar billede snuseren.dk Nybegynder
08. juli 2003 - 14:24 #17
Jeg opretter lige et med 15 pnt.
Avatar billede snuseren.dk Nybegynder
08. juli 2003 - 14:25 #18
Avatar billede fangel Nybegynder
08. juli 2003 - 16:35 #19
sorry, havde lige glemt "();"... men 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
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