Jump to content

mysql output into php arrary


winco7

Recommended Posts

I's trying to transform data from mysql into 

something like $books below but it doenst seem to be working 

 

    $books =  array(  

              

    "phil" => array("my girl" => 2.5, "the god delusion" => 3.5,

                    "tweak" => 3, "the shack" => 4,

                    "the birds in my life" => 2.5,

                    "new moon" => 3.5)

    )

 

this is how I tried doing:

 

        $sql = "SELECT * from rating  where user_id=11 limit 5";

        $db_result = mysql_db_query($dbname,$sql) or trigger_error(mysql_error());

        $num_rows = mysql_num_rows($db_result) or trigger_error(mysql_error());

 

    while ($row = mysql_fetch_array($db_result)) {  

       $one = $row['bookId']; 

       $two = $row['user_id'];

       $three = $row['rating'];

 

      $ArraY= array(

         $two => array($one=>$three)

       );

      print_r($ArraY);

      }

 

 

but this is what i get :

 

   

 

         Array (

            [11] => Array (

        [123715] => 5

        )

        ) Array (

        [11] => Array (

        [140329] => 5

        )

        ) Array (

        [11] => Array (

        [3083854] => 4

        )

        ) Array (

        [11] => Array (

        [871236761] => 1

        )

        ) Array (

        [11] => Array (

        [451179757] => 1

        )

        ) Array (

        [11] => Array (

        [451403886] => 3

        )

        ) Array (

        [24] => Array (

        [044661095X] => 4

        )

        ) Array (

        [24] => Array (

        [014010268X] => 1

        )

        ) Array (

        [24] => Array (

        [812576063] => 5

        )

        ) Array (

        [24] => Array (

        [038076654X] => 1

        )

        )

    

    instead of something like:

    

        Array (

    

        [phil] => Array (

        [my girl] => 2.5

        [the god delusion] => 3.5

        [tweak] => 3

        [the shack] => 4

        [the birds in my life] => 2.5

        [new moon] => 3.5

        )

        [sameer] => Array (

        [the last lecture] => 2.5

        [the god delusion] => 3.5

        [the noble wilds] => 3

        [the shack] => 3.5

        [the birds in my life] => 2.5

        [new moon] => 1

        )

        [john] => Array (

        [a thousand splendid suns] => 5

        [the secret] => 3.5

        [tweak] => 1

        )

        [peter] => Array (

        [chaos] => 5

       
 => 3.5
        )

        [jill] => Array (

        [the last lecture] => 1.5

        [the secret] => 2.5

        [the noble wilds] => 4

        [the host: a novel] => 3.5

        [the world without end] => 2.5

        [new moon] => 3.5

        )

        [bruce] => Array (

        [the last lecture] => 3

        [the hollow] => 1.5

        [the noble wilds] => 3

        [the shack] => 3.5

        [the appeal] => 2

        [new moon] => 3

        )

        [tom] => Array (

        [chaos] => 2.5

        )

        )

 

 

 

 

Any help with how i can transform that will be much appreciated 

THANKS 

 

 

 

 

Link to comment
https://forums.phpfreaks.com/topic/295520-mysql-output-into-php-arrary/
Share on other sites

This might work:



$new_array = array();
while ($row = mysql_fetch_array($db_result)) {
      //grab the name column from the array
      $name = $row['name_column'];
 
      //unset the name column from the original array
      unset($row['name_column'];
 
      //create a new key using the name column and set the value to the $row
      $new_array[$name] = $row; 
}
print_r($new_array);

 

This might work:
$new_array = array();
while ($row = mysql_fetch_array($db_result)) {
      //grab the name column from the array
      $name = $row['name_column'];
 
      //unset the name column from the original array
      unset($row['name_column'];
 
      //create a new key using the name column and set the value to the $row
      $new_array[$name] = $row; 
}
print_r($new_array);

 

thank you so much getting there gradually.

what I am aiming at really is : 

for each user, get the book, rating and put in different arrays like this:

 

Array (

[phil] => Array (
[my girl] => 2.5
[the god delusion] => 3.5
[tweak] => 3
[the shack] => 4
[the birds in my life] => 2.5
[new moon] => 3.5
)
[sameer] => Array (
[the last lecture] => 2.5
[the god delusion] => 3.5
[the noble wilds] => 3
[the shack] => 3.5
[the birds in my life] => 2.5
[new moon] => 1
)
[john] => Array (
[a thousand splendid suns] => 5
[the secret] => 3.5
[tweak] => 1

)

)

 

Thanks

Actually you want to put the info into "different array elements", not different arrays. In your example code originally you were creating a new array each pass thru your loop. You should have used $ArrayY[] instead of just $ArrayY.

Thank you very much. that really helped unto a certain point. I've been able to achieve this: 

 

Array ( [11] => Array ( [123715] => 5 [140329] => 5 [3083854] => 4 [871236761] => 1 [451179757] => 1 [451403886] => 3 ) [24] => Array ( [123715] => 5 [140329] => 5 [3083854] => 4 [871236761] => 1 [451179757] => 1 [451403886] => 3 [044661095X] => 4 [014010268X] => 1 [812576063] => 5 [038076654X] => 1 ) [12] => Array ( [123715] => 5 [140329] => 5 [3083854] => 4 [871236761] => 1 [451179757] => 1 [451403886] => 3 [044661095X] => 4 [014010268X] => 1 [812576063] => 5 [038076654X] => 1 [4428] => 5 [435477] => 5 [4489] => 2 [843945249] => 5 [743524772] => 1 ) [30] => Array ( [123715] => 5 [140329] => 5 [3083854] => 4 [871236761] => 1 [451179757] => 1 [451403886] => 3 [044661095X] => 4 [014010268X] => 1 [812576063] => 5 [038076654X] => 1 [4428] => 5 [435477] => 5 [4489] => 2 [843945249] => 5 [743524772] => 1 [078601556X] => 1 [1418413933] => 3 [786930616] => 5 [553159232] => 1 [8441406243] => 5 ) )

 

whereby for each user it shows a number of books and their rating, however at the moment those books are repeated and increase n times. instead of have each user's books and ratings separate from others.

this is how i'm doing it:

 $one=array();

    while ($row = mysql_fetch_array($db_result)) {  
       
       $two = $row['user_id'];  
 
       $one = $row['bookId']; 
 
       $three[$one] = $row['rating'];  
       unset($row['bookId']);
       unset($row['user_id']);
    
 
       $ArraY[$two] = $three;
     
 
      }
print_r($ArraY);
 
 
thanks for your continued assistance 

Why do you unset those two row elements? They are not a bother to you.

 

As for the element creation you didn't follow my instructions. You LITERALLY s/b using $ArrayY[], not $ArraY[$two]. Your method is populating the element with index of whatever $two contains, not a new element for each book id.

 

And what is this use of those meaningless $one,$two,$three vars? What are they? And why is $three an array itself?

Why do you unset those two row elements? They are not a bother to you.

 

As for the element creation you didn't follow my instructions. You LITERALLY s/b using $ArrayY[], not $ArraY[$two]. Your method is populating the element with index of whatever $two contains, not a new element for each book id.

 

And what is this use of those meaningless $one,$two,$three vars? What are they? And why is $three an array itself?

got it working now:

    while ($row = mysql_fetch_array($db_result)) {  
       
       $userID = $row['user_id'];  #users
 
       $bookID = $row['title']; #bookTitle
 
       $rating = $row['rating'];  
 
       $ArraY[$userID][$bookID] = $rating;
    }

 

thanks for your help

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.