Vinnaren i pepparkakshustävlingen!
2007-03-16, 21:59
  #1
Medlem
Spaders avatar
Följande är en funktion som kör när man postar en ny tråd:
Kod:
<?php
$host="localhost";
$username="root";
$password="**********"; 
$db_name="forum"; 
$tbl_name="thread_table"; 

// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

// get data that sent from form 
$topic=$_POST['topic'];
$answer=$_POST['answer'];

// get id from browser
$lastid=$_GET['id'];

//create date time
$datetime=date("Y-m-d H:i:s");

$sql="INSERT INTO $tbl_name(f_id, topic, creator, datetime)VALUES('$lastid', '$topic', '$username', '$datetime')";
$result=mysql_query($sql);

// get id from newly created tuple and place in a variable?????

//Switch table
$tbl_name2="post_table";

$sql2="INSERT INTO $tbl_name2(t_id, title, answer, poster, time)VALUES('???', '', '$answer', '$username', 'datetime')";
$result2=mysql_query($sql2);

if($result){
echo "Successful<BR>";
echo "<a href=index.php>View your topic</a>";
}
else {
echo "ERROR";
}
mysql_close();
?>
Den laddar alltså först tabellen i databasen som innehåller info om trådarna, och lägger sedan in information där. Vad jag vill sedan är att själva medelandet ska läggas i tabellen post_table (eftersom förstainlägget är ett inlägg/"post"). Problemet är att jag inte vet hur jag ska fånga indexet från denna nyskapta tupel.

$sql="INSERT INTO $tbl_name(f_id, topic, creator, datetime)VALUES('$lastid', '$topic', '$username', '$datetime')"; Lägger in data i den nya tupeln (raden), och när denna rad skapas så skapas även ett index (auto_increment). Det indexet vill jag sen ska användas i nästa insert, när info om själva inlägget postas:
$sql2="INSERT INTO $tbl_name2(t_id, title, answer, poster, time)VALUES('???', '', '$answer', '$username', 'datetime')";

Problemet är att jag inte vet vad man ska skriva för att plocka fram det indexet från den nyskapta tupeln. Skulle även vilja ha en koll som kollar både result och result2 variablen, och om båda är okay så returneras "successfull".

/Spader
Citera
2007-03-17, 11:11
  #2
Medlem
Raxs avatar
Från php:s hemsida:

Description

int mysql_insert_id ( [resource link_identifier] )

Retrieves the ID generated for an AUTO_INCREMENT column by the previous INSERT query.
Citera
2007-03-17, 21:15
  #3
Medlem
Spaders avatar
Okej tack det funkar nu.

Och sista delen?
Vill ha en koll som kollar både result och result2 variablen, och om båda är okay så returneras "successfull".

/Spader
Citera
2007-03-18, 00:36
  #4
Medlem
Spaders avatar
Har en till fråga:
Finns det inget enkelt sätt att ta ett värde ur en tabell på ett smidigt sätt. För stunden använder jag detta (men anser det blir så förbaskat mycket kod):

Kod:
$query="SELECT username from user_table where username='$username'";
$result = mysql_query($query) or die ();
$row = mysql_fetch_object($result);

$thisnick = $row->username;

//och längre ner:

<td class="tduserinfo" rowspan="3"><? echo $thisnick; ?></td>

/Spader
Citera
2007-03-18, 00:44
  #5
Medlem
blueCommands avatar
Citat:
Ursprungligen postat av Spader
Har en till fråga:
Finns det inget enkelt sätt att ta ett värde ur en tabell på ett smidigt sätt. För stunden använder jag detta (men anser det blir så förbaskat mycket kod):

Kod:
$query="SELECT username from user_table where username='$username'";
$result = mysql_query($query) or die ();
$row = mysql_fetch_object($result);

$thisnick = $row->username;

//och längre ner:

<td class="tduserinfo" rowspan="3"><? echo $thisnick; ?></td>

/Spader

Testa att använda Joomlas databasramverk
Citera
2007-03-18, 21:13
  #6
Medlem
Spaders avatar
Citat:
Ursprungligen postat av blueCommand
Testa att använda Joomlas databasramverk
Vad är detta och vart finns det?
Är inte det en samling av mallar?

Känns som att tanka en höna när jag bara behöver en fjäder.

/Spader
Citera
2007-03-18, 22:02
  #7
Medlem
Kan du inte bara definiera en funktion du använder överallt, om mängden kod är ditt enda problem?

Kod:
function mysql_fetch_one_value ($query) {
     
$result mysql_query($query) or die();
     
$row mysql_fetch_row($result);
     return 
$row[0];

och sen
Kod:
$query "SELECT username from user_table where username='$username'";
$thisnick mysql_fetch_one_value($query); 

Nu finns det visserligen hög risk att ovanstående inte fungerar, då jag inte gjort någonting med sql på väldigt länge.
Dock bör det i sådana fall inte krävas allt för stora modifikationer för att det ska fungera.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback