0

I made a table for appointments that works as a form, it shows whether a time slot is free or not and you can reserve appointments from it. This is the code that works ..

$query=mysql_query("SELECT * FROM days "); 
echo " <form action=\"change.php\" method=\"post\"><TABLE>";
echo "<TR><Th> Dia <Th> 8 <Th> 9 <Th> 10 <Th> 11<Th>12 <Th> 13 <Th> 14 <Th> 15 <Th> 16       ";

while ($rows=mysql_fetch_array($query)) { 
    if ($rows['08'] == 'taken') {
        $rows['08'] = "<TD id=\"red\" >TAKEN";
    } 
    else {
        $rows['08'] = "<TD id=\"blue\" ><input type=\"radio\" name=\"slot\" value= \"08 $rows[day]\" >$rows[08]";
    }

    if ($rows['09']=='taken') {
        $rows['09']="<TD  id=\"red\" >TAKEN";
    }
    else {
        $rows['09']="<TD  id=\"blue\" ><input type=\"radio\" name=\"slot\" value= \"09 $rows[day]\" >$rows[09]";
    }

    if ($rows['10']=='taken') {
        $rows['10']="<TD  id=\"red\" >TAKEN";
    }

the code goes further to cover all timeslots .. this is an example of how the table looks like .. well ..with the free cells having a radio botton next to them:

           day   08      09     10     11     12     13     14     15      16 
    2013-05-05  free   free   free   taken   free   free   taken   free   free

what i'm trying to do is to automate this . as in creating a loop so i dont have to repeat the same code so many times .. i tried the following but it didnt work:

while ($rows=mysql_fetch_array($query)) {
    $c="08"; 
    if ($rows["$c"]=='taken') {
        $rows["$c"]='taken';
    } 

    if ($rows["$c"]=='free') {
        $rows[$c] = "<input type=\"radio\" name=\"slot\" value= \"$c. $rows[day]\" >$rows[$c]";
    }

    echo "<TR><TD>$rows[day]"; echo "<TD> $rows[$c]"; $c++;
    echo "<TD> $rows[$c]"; $c++;
    echo "<TD> $rows[$c]"; $c++;
    echo "<TD> $rows[$c]"; $c++;

.....and so on ..

I'm thinking the problem is in the way to put the variable inside the row array any suggestions?

3
  • Closing tags is always nice, though not required. Commented May 10, 2013 at 22:03
  • That is true ..but the question here is about trying to use a variable as a column name .. Commented May 10, 2013 at 22:06
  • I'm not a PHP expert but can't you do echo "<TD>".$rows[$c]."</TD>"; since . is the concatenation character in PHP. Commented May 10, 2013 at 22:12

1 Answer 1

1
$query=mysql_query("SELECT * FROM days "); 
echo "<form action='change.php' method='post'><table>";
echo "<tr><td>day</td><td>8</td><td>9</td><td>10</td><td>11</td><td>12</td><td>13</td><td>14</td><td>15</td><td>16</td></tr>";

while ($rows=mysql_fetch_array($query)) { 

    while (  $rows=mysql_fetch_assoc($query) ) {

        $res[]="<tr><td>".$rows[day];

        for ($c="8";$c<="16";$c++)
        {

            if ($c<10){$ca="0".$c;} else {$ca=$c;}

            if ($rows[$ca]=='taken') {
                $res[]='taken';
            } 
            if ($rows[$ca]=='free') {
                $res[] = "<input type='radio' name='slot' value='".$c." ".$rows[day]." >".$rows[$ca];
            }
        }
        $res[]="</td></tr>";
        echo implode("</td><td>",$res);
    }
    echo "</table></form>"; 
Sign up to request clarification or add additional context in comments.

6 Comments

this doesnt work because it only echos the first column, i need to show the contents of all my columns which are (08-09-10-11-12-13-14-15-16) representing the opening hours
oh, sorry, it must be in line, not vertical?
please show your table structure, and write exaple whitch you want get, thanks
yes .. in the table each row is a day ..while the hours(timeslots ) are columns ...and this is how my database is constructed too
i have edited the question adding a row of how my table looks like
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.