PJ,
On Tue, Mar 10, 2009 at 3:46 PM, PJ <[email protected]> wrote:
> <snip>
> $sql1 = "INSERT INTO book ( title, sub_title, descr,
> comment, bk_cover, copyright, ISBN, language, sellers )
> VALUES ('$titleIN', '$sub_titleIN', '$descrIN', '$commentIN',
> '$bk_coverIN', '$copyrightIN', '$ISBNIN', '$languageIN',
> '$sellersIN')";
> $result1 = mysql_query($sql1, $db);
> $autoid = mysql_insert_id($result1);
> }/* <--- IF THIS LIKE IS DELETED, THE PAGE DOES NOT DISPLAY
> So, if I select insert on the page, only the first query is executed
> since the rest is commented out. Thus, I get onle the book table
> inserted but not other tables, like author, book_author, or publishers,
> book_publisher or categories, book_categories...
> Is there something wrong with what follows immediately...
> like, do I have the brackets right? I've tried about every
> combination possible with no change.
>
> //Check if Author is entered & exists
> if( (strlen($_POST["first_nameIN"]) > 0) && (strlen($_POST["last_nameIN"])
> > 0) ) {
> $sql2 = "SELECT (first_name, last_name)
> FROM author WHERE (first_name LIKE '$first_nameIN'
> && last_name LIKE '$last_nameIN)'";
LIKE is going to do full-text search, which isn't what you want when
searching for a specific author. You can have the query return the ID for
that specific author (to use in your $sql2a query).
$sql2 = "SELECT id FROM author WHERE first_name = '$first_nameIN' AND
last_name = '$last_nameIN' ";
$result2 = mysql_query($sql2);
> if (mysql_num_rows($result2) > 0) {
$row = mysql_fetch_assoc($result2); // gives you the row return
from $sql2
>
> $sql2a = "INSERT INTO book_author (authID, bookID, ordinal)
> VALUES (author.id WHERE (first_name LIKE '$first_nameIN'
> && last_name LIKE '$last_nameIN'),
> book.ID WHERE book.title LIKE '$titleIN'), '1'";
With the change in $sql2 and the fact that the bookID is stored in $autoid,
this becomes:
$sql2a = "INSERT INTO book_author (authID, bookID, ordinal) VALUES (" .
$row['id'] . ", " . $autoid . ", '1')";
>
> $result2a = mysql_query($sql2a, $db);
> }
> elseif (mysql_num_rows($result2) = 0) {
> $sql2b = "INSERT INTO author (first_name, last_name)
> VALUES ('$first_nameIN', '$last_nameIN')";
> $result2b = mysql_query($sql2b, $db);
$authorID = mysql_insert_id($result2b); // gives you the id
of the newly inserted author for use in your book_author table
>
> $sql2c = "INSERT INTO book_author (authID, bookID, ordinal)
> VALUES (author.id WHERE (first_name LIKE '$first_nameIN'
> && last_name LIKE '$last_nameIN'), book.ID
> WHERE book.title LIKE '$titleIN'), '1'";
With the addition of $authorID and the fact that bookID is stored in
$autoid, your $sql2c should now be:
$sql2c = "INSERT INTO book_author (authID, bookID, ordinal) VALUES (" .
$authorID . ", " . $autoid . ", '1')";
>
> $result2c = mysql_query($sql2c, $db);
> }
> }
- Lex