Ashley Sheridan wrote:
> On Wed, 2009-06-17 at 10:01 -0400, PJ wrote:
>   
>> Ford, Mike wrote:
>>     
>>> On 16 June 2009 20:48, PJ advised:
>>>
>>>       
>>>> Now, I was happy to learn that it is simpler to populate the
>>>> insert new
>>>> books page dynamically from the db. Much shorter & neater.
>>>> It looks to me like the best solution for the edit page is
>>>> close to what
>>>> Yuri suggests.
>>>> Since the edit page is very similar to the insert new books page, I
>>>> merely need to populate the Select options box slightly differently.
>>>> This is the code to populate the insert page:
>>>> <select name="categoriesIN[]" multiple size="8">
>>>> <?php
>>>> $sql = "SELECT * FROM categories";
>>>> if ( ( $results = mysql_query($sql, $db) ) !== false ) {
>>>> while ( $row = mysql_fetch_assoc($results) ) {
>>>> echo "<option value=", $row['id'], ">", $row['category'],
>>>> "</option><br />"; }
>>>> }
>>>> </select>
>>>>
>>>> The problem nowis to find a way to add a conditional clause above that
>>>> will insert the option="selected" in the output.
>>>> The input for this comes from:
>>>> // do categories
>>>> $sql = "SELECT id, category FROM categories, book_categories
>>>> WHERE book_categories.bookID = $idIN &&
>>>> book_categories.categories_id = categories.id";;
>>>> if ( ( $results = mysql_query($sql, $db) ) !== false ) {
>>>> while ( $row = mysql_fetch_assoc($results) ) {
>>>> echo$row['id'], "<br />";
>>>> }
>>>> }
>>>>
>>>> This may return any number of category ids so the problem is to figure
>>>> out a way to pass the ids from the above code to the right ids in the
>>>> first code above. How & what do I search to match the two ids?
>>>>         
>>> Well, if I'm understanding your queries correctly, you need to compare
>>> the two sets of $row['id'] from the two queries above -- so your first
>>> query should be the second one above ("SELECT id, category FROM ..."),
>>> and you need to save the ids it returns for use in the loop which emits
>>> the <select>s. This can be done by replacing the "echo $row['id']" with
>>> "$selected_ids[] = $row['id']". Now you have an array of the selected
>>> ids which you can use in your in_array(). So your finished code is going
>>> to look something like this:
>>>
>>> <select name="categoriesIN[]" multiple size="8">
>>> <?php
>>> // do categories
>>> $selected_ids = array();
>>> $sql = "SELECT id, category FROM categories, book_categories
>>> WHERE book_categories.bookID = $idIN &&
>>> book_categories.categories_id = categories.id";
>>> if ( ( $results = mysql_query($sql, $db) ) !== false ) {
>>> while ( $row = mysql_fetch_assoc($results) ) {
>>> $selected_ids[] = $row['id'];
>>> }
>>> }
>>> $sql = "SELECT * FROM categories";
>>> if ( ( $results = mysql_query($sql, $db) ) !== false ) {
>>> while ( $row = mysql_fetch_assoc($results) ) {
>>> echo "<option value=", $row['id'],
>>> (in_array($row['id'], $selected_ids)?" selected":""),
>>> ">", $row['category'],
>>> "</option>\n";
>>> }
>>> }
>>> ?>
>>> </select>
>>>
>>> Hope this helps.
>>>       
>> It does, indeed. This confirms my inexperienced conclusion that
>> in_array() does not work on associative arrays per se; it works on
>> simple arrays and I just don't have the experience to think of
>> extracting only the id fields.
>> I actually am using a slightly more complicated if else statement which
>> works.
>> Also, the other problem was the option selected definition required
>> Shawn's clarification
>> <select name='component-select' multiple ... which now highlights the
>> selected fields.
>> In all my searches (horrendously wasted time) I did not find any mention
>> of "component-select" either in php.net or w3c.org (I don't think my
>> queries on Google brought up anything from php.net) but w3c.org did and
>> I had looked at the page but somehow missed it.
>> I'm going to have to look at the way I search things. When you are
>> looking for something specific, other, even relevant, solutions seem to
>> get screened out.
>>
>> Anyway, I learned quite a bit, here.
>> Thank you very, very much, gentlemen.
>> PJ
>>
>> -- 
>> Hervé Kempf: "Pour sauver la planète, sortez du capitalisme."
>> -------------------------------------------------------------
>> Phil Jourdan --- p...@ptahhotep.com
>> http://www.ptahhotep.com
>> http://www.chiccantine.com/andypantry.php
>>
>> -- 
>> PHP General Mailing List (http://www.php.net/)
>> To unsubscribe, visit: http://www.php.net/unsub.php
>>
>>     
> in_array() does work with associative arrays, I used it myself before!
> Don't forget, it only attempts to match the value in an associative
> array, not the key.
>   
Could you show me how, because just running in_array($test_string,
$assoc_array) never produced a result regardless of what I put into the
$test_string or even if I used "value", value, 'value', 14, "14", '14',
and the corresponding string existed in the array - the results were
zip, zero, nothing; like a dead fish.
And now there is another little glitch, if the array finds that there is
no category listed, then I get an error of undeclared variable...
man, talk about contortions... :-(


-- 
Hervé Kempf: "Pour sauver la planète, sortez du capitalisme."
-------------------------------------------------------------
Phil Jourdan --- p...@ptahhotep.com
   http://www.ptahhotep.com
   http://www.chiccantine.com/andypantry.php


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to