|
Ok I've been searching for the last 3 - 4 hours and have come up with nothing that works. This should be simple but I guess in PHP it's not. All I want to do is run a query and put the results into an array. I've tried numerious things and nothing seems to want to work. my last attempt was using this:
$table = array();
if (mysql_num_rows($result) > 0) {
$i = 0;
while($table[$i] = mysql_fetch_assoc($result))
$i++;
}
$results holds the original results of the query. I've tried using $results with a loop to do what I want and that's not working so figured an array would be simple enough. Guess not...
Table results are pretty simple too, one string and two integers: name(string), bdayMonth(int), bdayDay(int): so I'm trying to get something similar to:
John Smith,12,8
Jane Doe,11,22
modified on Monday, December 20, 2010 2:25 PM
|
|
|
|
|
Hi,
I avoid multi-dimensional arrays most of the time, they often aren't worth the trouble. In this case, I opt for columnar arrays, it would look like this (not tested!):
$name = array();
$month = array();
$year = array();
for ($i=0; ; $i++) {
$row=mysql_fetch_assoc($result));
if (!$row) break; <<<<<<<<< ADDED
$name[$i]=$row["name"];
$month[$i]=$row["month"];
...
}
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.
modified on Monday, December 20, 2010 2:44 PM
|
|
|
|
|
Ok I'll mess with that for a bit, see if I can get it to "work"... thanks so far
|
|
|
|
|
Ok so I was making changes and having no luck, so I was going back through everything I had that I hadn't deleted and have come across something I can't figure out... sorry for the length but I think you need to see the section:
if($dayofweek == $currentDayDay) {
if($currentDay > $lastdayofmonth) {
echo "<td width=100></td>";
$currentDayDay = $currentDayDay + 1;
$currentDay = $currentDay + 1;
}
else {
echo "<td width=100>$currentDay";
echo "<br />";
echo "Testing with $currentDay";
while($row = mysql_fetch_array($result)){
echo "Yet another test";
echo "<br />";
echo $row['bdayDay'];
if($row['bdayDay'] == $currentDay) {
echo $row['name']. " - ". $row['bdayDay'];
echo "<br />";
}
}
echo "</td>";
$currentDayDay = $currentDayDay + 1;
$currentDay = $currentDay + 1;
}
}
Ok the "Yet another test" only shows up one time, however the "Testing with $currentDay" shows up every time. If I could get it to (for a lack of better words) show up every time it would solve the array problem. Any ideas?
--- NOTE ---
When I say shows up one time I mean it loops through only the first time it gets to it (displays two lines, which is "correct")
modified on Monday, December 20, 2010 3:42 PM
|
|
|
|
|
we're moving backwards now?
I don't know what it is your code is trying to accomplish, and I'm not sure your earlier table content is still relevant; however a call to mysql_query is very absent. Once you enumerated all results, mysql_fetch_array($result) will continue to return nothing until you issue a new $result=mysql_query("some query"); . So my best guess is you need to move an existing query call inside the outer loop (both not shown).
Suggestion: while debugging PHP isn't always easy, I tend to use logging, i.e. I insert calls to some Debug function which outputs a string in a different color (often magenta). A possible implementation could be this:
function Debug($level, $string) {
if ($level<=$this->debugLevel)
echo "<p class='debug'><font color='ff00ff'>$string</font></p>\n");
}
which outputs the string provided debugLevel is sufficiently high (the snippet sat inside a class, hence the $this thingy).
|
|
|
|
|
Still new to PHP so kinda learning as I go. That section of code is creating a calendar "table" on the page. So what I have it doing is as it creates the cell for the date looking to see if anything is "happening" on that day. Being new to web programming I don't know of a better way to do it. If I were to do this in VB or C# it wouldn't be a big deal but running into some issues (obviously) with doing this in PHP. That is why I originally asked about putting this into an Array, this way I could just look to see if that value was in the array in slot what ever and go onto the next. The actual call for the query is in another function, I just passed the variable to this function like I normally would.
$con = mysql_connect($hostname, $username, $password)
or die("Unable to connect to mySQL");
echo "Connected to mySQL";
echo "<br /><br />";
$selected = mysql_select_db("intranet",$con)
or die("Could not select intranet");
$result = mysql_query("SELECT name, bdayMonth, bdayDay FROM employee WHERE bdayMonth='$currentMonth'");
Not sure if that really helps that much, but figured I'd show what I've got.
That should as mentioned before return something along the lines of:
---------------------------------
| name | bdayMonth | bdayDay |
---------------------------------
|Jon Doe | 12 | 9 |
---------------------------------
|Jane Doe | 12 | 22 |
---------------------------------
normally I'd do a simple loop of for each row in array what ever where bdayDay equals currentDay or something along those lines... Then when you find one some sort of print statement like "array(x,0) Birthday!" or is it array[x][0]?
Enjoying this new challenge, just not the headache
|
|
|
|
|
OK. This is what I would probably do:
1. first get all the data from the database and turn it into an "associative array", i.e. an array that maps birthday dates (could be 100*month+day) to some text.
2. then create the HTML for the calendar; for each cell look in the associative array, and when an entry exists for that date, add the string to the output.
The nice thing about associative arrays is you don't need to search them with a loop, you don't need to have the data sorted in a particular order, etc. This[^] might help.
|
|
|
|
|
Thanks for the tip and link, I have some other things to do first this morning but I should get to this in the afternoon if I run into any problems I'll let you know.
|
|
|
|
|
I don't know if I'm not using the write terms but I still can't find anything on how to populate an array with code. Every example I've come across is all hard coded which is great when you want to test it out, but doesn't do much good for live deployment. Maybe I missed it in that page you mentioned so I'm going to look again, but still not having much luck here. Thinking this is going to be one of those "oh yeah" moments like when I first learned how to do multiple threads. Thanks in advance.
|
|
|
|
|
This is part of a function that returns an array with all the table names in a MySQL database:
$query="SHOW TABLES";
$Results=mysql_query($query);
if (!$Results) die("DB Error in GetTableNames ($query)".mysql_error());
$res=array();
while($row=mysql_fetch_array($Results)) $res[]=$row[0];
the result is a simple array, not an associative array! It behaves like a list as things were added one after another without using an index. Nevertheless, you can retrieve them by index.
this untested example would use an associative array:
$query="SELECT field0,field1 FROM table";
$Results=mysql_query($query);
$res=array();
while($row=mysql_fetch_array($Results)) $res[$row[0]]=$row[1];
this uses field0 as the index (even when not numeric) and field1 as the data to be stored.
If you aren't getting such information from where ever it is you learn PHP, I suggest you switch to another book or course!
|
|
|
|
|
I'm learning this as I go, so if you have any good books you can point me towards I'm all for that. Not having much luck with the web searches, plus I'm more of a book person anyways.
All of my web exp is in HTML and ASP so for this, I'd say I'm around zero. I know what I want to do, just can't do it in PHP right now but I'm working on it
Moving from ASP to PHP is going to be a chore for sure, but at least I don't have a time frame so that is good. This is for our intranet page which is towards the bottom of the list of my daily things to work on so I'm not up against a deadline or anything. Arrays are so much easier to work with in M$ land, however if this was easy then everyone would be doing it. Maybe because my background is different but I don't see where I'm trying to do anything so far our in right field that I can't even find a remotely close example online that I can work around. That or they are there and due to my lack of PHP exp I'm looking over them. Either way I know what I'm working on tomorrow, trying to get these results from the sql query into some sort of array or list, yay!
|
|
|
|
|
IMO PHP is a big step backwards if you're used to strongly types languages (C/C++/Java/C#/...).
I started my web site in PHP years ago, and I now regret it isn't ASP.NET
I have read two books when I needed to get a feeling for PHP+MySQL, years ago, however not anything particular I'd recommend.
Debugging is rather hard, I tend to insert logging statements, I already told you that.
I'm quite pleased with what is available on the web, in particular http://www.w3schools.com/php/default.asp[^], and maybe also http://www.tuxradar.com/practicalphp[^] and http://www.freewebmasterhelp.com/tutorials/phpmysql[^].
I do use Google a lot, often searching either PHP function_name, or PHP functional_keywords
|
|
|
|
|
Well I already have the site up and running with ASP, but it's being "served" off my local pc instead of the server (long story that just raises my BP). I have since been able to acquire a Linux server at work and thus the PHP need now. Yeah I got the ASP calendar working in about 5 hours total, vs the 4+ days of just trying to get this one array to work
|
|
|
|
|
That's fairly straight forward, i guess:
$table = array();
$query = "SELECT * FROM my_table";
$result = mysql_query($query, $connection) or die(mysql_error($connection));
while ($record = mysql_fetch_assoc($result))
{
$table[] = $record;
}
|
|
|
|
|
Anyone know the location of a good bridge? That was way too simple thus the reason I probably couldn't find it. Thank you very much to the both of you, least I now know more about different types of arrays in PHP and how to create them.
|
|
|
|
|
oh, guess I should have read this before I posted...hehe nice schwarzenneger
|
|
|
|
|
Try this
<?php
$dbh = mysql_connect("host","user","password") or die("Can not connect to db.");
mysql_select_db("your_db_name");
$i = 1;
$sql = "select name, dept_id, pay_grade from employees";
$rst = mysql_query($sql) or die("PG: ".__FILE__." ON LINE: ".__LINE__." ERROR: ".mysql_error());
if(mysql_num_rows($rst)>0)
{
echo "<table><tr><th>#</th><th>NAME</th><th><DEPT</th><th>GRADE</th></tr>";
while($row = mysql_fetch_assoc($rst))
{
echo "<tr><td>".$i."</td><td>".$row['name']."</td><td>".$row['dept_id']."</td><td>".$row['pay_grade']."</td></tr>";
$i++;
}
echo "</table>";
}
else
{
echo "No Results.";
}
?>
to write to an array is simple...
<?php
$dbh = mysql_connect("host","user","password") or die("Can not connect to db.");
mysql_select_db("your_db_name");
$results = array();
$sql = "select name, dept_id, pay_grade from employee";
$rst = mysql_query($sql) or die("PG: ".__FILE__." ON LINE: ".__LINE__." ERROR: ".mysql_error());
if(mysql_num_rows($rst)>0)
{
while($row = mysql_fetch_assoc($rst))
{
$results[$row['name']] = array($row['dept_id'],$row['pay_grade']);
}
}
else
{
echo "No Results.";
}
echo "<pre>";
print_r($results);
echo "</pre>";
?>
Replace the db connection, db select and the sql with what is relavent for your table, db and connection.
The first bit of code will generate a table or report an error message and display those results to a web page. The second assigns the values to an array and then displays the results at the end.
Hope that helps.
|
|
|
|
|
Ok figured out how to get this to work finally... created the array and used a nested foreach loop to step through it. Thank you guys!!!
|
|
|
|
|
btw - using the...
echo "<pre>";
print_r($array_var);
echo "</pre>";
is a huge aid in working with arrays with php.
I use it to display $_POST and $_GET value sent to a page.
Not only do you see the array content, but the pre tags will format it nicely.
Later
|
|
|
|
|
Thanks, that really makes it much easier to read... finally making some progress
|
|
|
|
|
hello guys... i have recently installed vmware 6.5 on my windows 7 (as host os) and installed fedora 14 (as guest os) on it. Now I have wireless router using which i access internet on windows. Windows 7 already has required drivers for this but i dont know how to do this in fedora. How can I access wireless router and use internet...thnx
|
|
|
|
|
Well all the VM's I've seen have some kind of "Use physical network adaptor" or emulate a common type of network card.
See if you can crack this: fb29a481781fe9b3fb8de57cda45fbef
The unofficial awesome history of Code Project's Bob!
"People demand freedom of speech to make up for the freedom of thought which they avoid."
|
|
|
|
|
hi! i'm newbie about python and i want to measure the value of cwnd in TCP socket.
I have searched from an internet and got that we could handle it from SOL_TCP, TCP_INFO...since unix had #include
netinet/tcp.h; and we could refer to tcp_info
for getting the information of TCP by using this method
but i don't know how to declare the tcp_info in Python..
does anyone know how to handle this? please suggest me
Thanks in advance
|
|
|
|
|
I have been trying hours in to populate combo box with data from a mysql database using php. So far the combo box displays nothing. Anyhelp will be greatly appreciated as the end result I want to have four combo boxes which are based on the first and subsequent selection of each record e.g "country" = "state" = "city" = "suburb"
$row[1]\n";
?>
|
|
|
|
|
komanche wrote: $make = "SELECT make FROM cars WHERE make='".$q."' ORDER BY make";
$make = "SELECT id,value FROM make ORDER BY id";
this sequence of assignments doesn't make sense, either the first is redundant, or something is missing in between them.
In future:
- please show code snippets inside PRE tags;
- for database-related questions explain your tables and fields.
|
|
|
|
|