Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyświetlenie godzin które nie są zajęte
Forum PHP.pl > Forum > Bazy danych > MySQL
kunik
Witam mój problem polega na tym że mam baze przychodni lekarskiej i potrzebuje wyświetlać godziny zgodznie z dniem ale tylko te których nie ma w bazie mam coś takiego i przekształcałem to na wiele sposobów jednak nie jestem w stanie sobie poradzić sciana.gif proszę o pomoc

to mój kod:

for($index=8;$index<18;$index++)
{
while ($row = mysql_fetch_array($results)){
$min='00';
$godzina="$index:$min:00";

$go1=$row['Godzina_Wizyty'];

[php][/php]
if($godzina==$go1)
{
echo $go1,"dupa";
}

if($godzina!=$go1)
{
echo "<table>";
echo "<tr>";
echo "$index",":","$min",":","00";
echo "</tr>";

echo "</table>";

}
}
}
Wicepsik
Pokaż strukturę bazy.
thek
A to nie lepiej zrobić sobie boole'owska tablicę pomocniczą gdzie byś ustawiał która godzina wolna? Kluczami są godziny, wartościami true lub false. Dostaniesz ładny dla danego dnia wykres. Co fajniejsze, to może to być tablica zagnieżdżona pod kątem dni. Startowo tablica miałaby postać:
  1. $zajetosc = array(
  2. '2009-11-05' => array( 8 => false, 9 => false, 10 => false .... 16 => false, 17 => false),
  3. '2009-11-06' => array( 8 => false, 9 => false, 10 => false .... 16 => false, 17 => false),
  4. ...
  5. '2009-11-10' => array( 8 => false, 9 => false, 10 => false .... 16 => false, 17 => false),
  6. '2009-11-11' => array( 8 => false, 9 => false, 10 => false .... 16 => false, 17 => false),
  7. );

Gdzie daty to interesujące Cię dni. Mógłby być jeden lub kilka. Potem zapytanie do bazy tyczące się interesujących dni i w pętli while tylko byś sprawdzał które godziny są zajęte oraz ustawiałbyś we właściwym miejscu true. Na koniec ładnie to pchnąć do widoku który wygeneruje tabelkę zajętości smile.gif

Można zrobić i na inne sposoby, bo możliwości jest od zatrzęsienia. Ja zrobiłem tak, bo taką ładnie sformatowaną tablicę pchnąć z modelu do widoku to niemal rozkosz winksmiley.jpg
EDIT: Taka struktura pozwala Ci w prosty sposób stworzyć tabelę zajętości na zasadzie:
  1. echo '<table>
  2. <tr><td>Dzień</td><td></td>8.00<td></td><td>9.00</td>...<td>16.00</td><td>17.00</td></tr>';
  3. foreach($item AS $key => $value) {
  4. echo '<tr>
  5. <td>'.$key.'</td>';
  6. foreach($value AS $godziny) {
  7. echo '<td>';
  8. if($godziny)
  9. echo 'Zajęte';
  10. else
  11. echo 'Wolne';
  12. echo '</td>';
  13. }
  14. echo '</tr>';
  15. }
  16. </table>

Aha... Taka forma generuje Ci po prostu przyjęcia w sposób bardzo przejrzysty. Tylko obrzucić CSS(kolory dla zajętych i wolnych godzin), ładniejszy html zrobić (th, tfoot, tcaption) i po prostu bajka wypas. W ten sposób zestawienia dniowe, tygodniowe czy na określone dni można sobie w prosty sposób wizualizować, bo całość ładnie się parametryzuje i funkcja dzięki temu jest w miarę elastyczna.
kunik
poradziłem sobie w całkiem inny sposób :

for($index=8;$index<18;$index++)
{
$min='00';
$godzina="$index:$min:00";
$query = "SELECT * FROM `wizyty` where `Data_Wizyty` = '$q' and Godzina_Wizyty = '$godzina' and ID_Prac = '$idp'";
$result = mysql_query($query)
or die(mysql_error());
$row = mysql_fetch_array($result);

echo "<tr>";
if (mysql_num_rows($result) == 1){

echo "<td white=200>";
echo $godzina,":zajęte";
echo "</td>";
}else{

?>
<td>
<input type="radio" name="godzina" value="<?php echo "$index",":","$min",":","00"; ?>" />
<?php echo "$index",":","$min",":","00"; ?>
</td>
<?php
}

$min='30';
$godzina="$index:$min:00";
$query = "SELECT * FROM `wizyty` where `Data_Wizyty` = '$q' and Godzina_Wizyty = '$godzina' ";
$result = mysql_query($query)
or die(mysql_error());
$row = mysql_fetch_array($result);


if (mysql_num_rows($result) == 1){

echo "<td>",$godzina,":zajęte","</td>";
}else{
?>
<td>
<input type="radio" name="godzina" value="<?php echo "$index",":","$min",":","00"; ?>" />
<?php echo "$index",":","$min",":","00"; ?>
</td>
<?php
}
echo "</tr>";
}


po prostu sprawdzam czy istnieje taki rekord jesli tak to pokazuje ze jest zajenty
Gapollo
prościej to byłoby utworzyć tabelę Godziny z polem godzina wypełnioną możliwymi godzinami wizyt i wyświetlić:
$query="select H.godzina from Godziny H left join wizyty W on `Data_Wizyty` = '$q' and W.Godzina_Wizyty=H.godzina
and ID_Prac = '$idp' where `Data_Wizyty` IS NULL";
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.