Complex équipe Scheduler / Calendrier (PHP / MySql)

  • Ifrit
  • Graduate
  • Graduate
  • Avatar de l’utilisateur
  • Inscription: Juin 07, 2004
  • Messages: 196
  • Loc: Portugal
  • Status: Offline

Message Juillet 21st, 2008, 5:49 am

Ive été éprouvante pour les derniers jours pour accomplir quelque chose que j'ai considéré comme hors de ma ligue quand il s'agit de la programmation.

J'ai besoin de créer ou de générer un graphique qui montre où et quand une équipe doit être à un certain moment en un jour.

Mon MYSQL tableau renvoie les informations suivantes:

TEAM_ID | CLIENT / LOCATION | BEGIN HEURE | FIN HEURE | JOUR |
1 | FOO | 8 | 11 | 2008-06-07 |
1 | BAR | 9 | 12 | 2008-06-07 |
2 | FOO | 10 | 13 | 2008-06-07 |
2 | JOE | 15 | 18 | 2008-06-07 |
3 | FOO | 18 | 20 | 2008-06-07 |
3 | JOE | 10 | 19 | 2008-06-07 |
4 | BAR | 8 | 14 | 2008-06-07 |


Je peux afficher cette information facilement, mais mon client a besoin d'être affichés graphiquement.

Ive a quelques problèmes en essayant de le faire par moi-même, principalement en raison de chevauchements d'événements (qui sont autorisés à se produire), donc je voulais demander à quelqu'un sur place pour voir si elles avaient une suggestion j'ai pu suivre, un tutoriel ou d'un autre type d'aide, tout ce serait très apprécié.

ps, car il y aura des événements récurrents, le contrôle des événements de chevauchement doit se faire au "runtime", je n'ai aucune idée de la façon d'y parvenir...

Ive a ajouté une image pour illustrer la sortie.

Image
  • Anonymous
  • Bot
  • No Avatar
  • Inscription: 25 Feb 2008
  • Messages: ?
  • Loc: Ozzuland
  • Status: Online

Message Juillet 21st, 2008, 5:49 am

  • SpooF
  • ٩๏̯͡๏۶
  • Bronze Member
  • Avatar de l’utilisateur
  • Inscription: Mai 22, 2004
  • Messages: 3415
  • Loc: Richland, WA
  • Status: Offline

Message Juillet 21st, 2008, 6:24 am

J'ai la tête à travailler, mais si j'ai tout le temps libre je vais régler ce problème pour toi. Je voulais simplement vous laisser savoir quelqu'un est à la recherche d'une réponse pour vous. :)
#define NULL (::rand() % 2)
  • Ifrit
  • Graduate
  • Graduate
  • Avatar de l’utilisateur
  • Inscription: Juin 07, 2004
  • Messages: 196
  • Loc: Portugal
  • Status: Offline

Message Juillet 21st, 2008, 6:28 am

J'ai oublié de mentionner ce que PHP / Mysql

Je suis très reconnaissant, Spoof.
  • righteous_trespasser
  • Scuffle
  • Genius
  • Avatar de l’utilisateur
  • Inscription: Mar 12, 2007
  • Messages: 6228
  • Loc: South-Africa
  • Status: Offline

Message Juillet 21st, 2008, 7:21 am

peut-être quelque chose comme cela pourrait fonctionner?
Code: [ Select ]
<?php
$sql= mysql_query('SELECT * FROM table ORDER BY day,team, begin_hour');
$date1 = '';
$date2 = '';
$datecount = 0;
$team1 = '';
$team2 = '';
$teamcount = 0;
while ($row = mysql_fetch_array($sql))
{
$date1 = $row['day'];
$team1 = $row['team'];
if ($date1 == $date2)
{
//everything happens in here
if ($team1 == $team2)
{
echo "<span style='margin-left:" . $row['start_time'] . "opx width:" . ($row['end-time'] - $row['start-time']) . "0px;'>" . $row['client_location'] . "</span>";
}
else
{
if ($teamcount == 0)
{
echo "<div class='team'>";
echo "<p>" . $row['team'] . "</p>";
echo "<span style='margin-left:" . $row['start_time'] . "opx width:" . ($row['end-time'] - $row['start-time']) . "0px;'>" . $row['client_location'] . "</span>";
}
else
{
echo "</div><div class='team'>";
echo "<p>" . $row['team'] . "</p>";
echo "<span style='margin-left:" . $row['start_time'] . "opx width:" . ($row['end-time'] - $row['start-time']) . "0px;'>" . $row['client_location'] . "</span>";
}
}
//end
}
else
{
if ($datecount == 0)
{
echo "<div class='date'>";
$datecount ++;
}
else
{
echo "</div><div class='date'>";
}
}

$team2 = $row['team'];
$date2 = $row['day'];
}
echo "</div></div>";
?>
  1. <?php
  2. $sql= mysql_query('SELECT * FROM table ORDER BY day,team, begin_hour');
  3. $date1 = '';
  4. $date2 = '';
  5. $datecount = 0;
  6. $team1 = '';
  7. $team2 = '';
  8. $teamcount = 0;
  9. while ($row = mysql_fetch_array($sql))
  10. {
  11. $date1 = $row['day'];
  12. $team1 = $row['team'];
  13. if ($date1 == $date2)
  14. {
  15. //everything happens in here
  16. if ($team1 == $team2)
  17. {
  18. echo "<span style='margin-left:" . $row['start_time'] . "opx width:" . ($row['end-time'] - $row['start-time']) . "0px;'>" . $row['client_location'] . "</span>";
  19. }
  20. else
  21. {
  22. if ($teamcount == 0)
  23. {
  24. echo "<div class='team'>";
  25. echo "<p>" . $row['team'] . "</p>";
  26. echo "<span style='margin-left:" . $row['start_time'] . "opx width:" . ($row['end-time'] - $row['start-time']) . "0px;'>" . $row['client_location'] . "</span>";
  27. }
  28. else
  29. {
  30. echo "</div><div class='team'>";
  31. echo "<p>" . $row['team'] . "</p>";
  32. echo "<span style='margin-left:" . $row['start_time'] . "opx width:" . ($row['end-time'] - $row['start-time']) . "0px;'>" . $row['client_location'] . "</span>";
  33. }
  34. }
  35. //end
  36. }
  37. else
  38. {
  39. if ($datecount == 0)
  40. {
  41. echo "<div class='date'>";
  42. $datecount ++;
  43. }
  44. else
  45. {
  46. echo "</div><div class='date'>";
  47. }
  48. }
  49. $team2 = $row['team'];
  50. $date2 = $row['day'];
  51. }
  52. echo "</div></div>";
  53. ?>

vous aurez juste besoin d'ajouter des CSS pour que...
Let's leave all our *plum* where it is and go live in the jungle ...
  • Ifrit
  • Graduate
  • Graduate
  • Avatar de l’utilisateur
  • Inscription: Juin 07, 2004
  • Messages: 196
  • Loc: Portugal
  • Status: Offline

Message Juillet 21st, 2008, 10:21 am

righteous_trespasser, je vous remercie d'une tonne pour l'aide

ive essayé application mais im pas 100% sûr de ce que son fait, peut-être pourriez-vous me faire savoir ce que votre ligne de pensée, de faire ce code?
  • alex89
  • Bronze Member
  • Bronze Member
  • Avatar de l’utilisateur
  • Inscription: Juil 18, 2008
  • Messages: 239
  • Loc: Western Australia
  • Status: Offline

Message Juillet 21st, 2008, 11:39 am

Très impressionnant. Ill passer ligne par ligne pour vous. (Le nombre sur la ligne)

2: fixe une variable appelée $ sql (voir 9)
3-8: ensembles de variables ""
9: démarre une boucle (exécute une requête mysql pour toutes les données dans le tableau par jour, l'équipe, de commencer l'heure) et se termine par des données
11-12: reçoit les données de base de données pour les variables date1 & team1
13: si l'équipe est la même que précédemment (voir 50)
16: si la date est la même que précédemment (voir 51)
18: quelques échos html (avec une portée à la marge de gauche start_time pixels, avec largeur de start_time - finish_time -- dire l'emplacement du client)
20: le reste, si l'équipe est différente des précédentes rubriques de la db
22: si teamcount est de zéro (pas d'équipe)
24-26: div de la classe «équipe» (utilisation css pour faire joli), qui affirme l'équipe, et puis une autre portée (voir 18)
28: autre chose, si teamcount est différente
30-32: fermer la div (24), équipe-dire, une autre portée
37: autre chose, si ce jour est différent des précédents, l'entrée en db
39: et si teamcount est de zéro (équipe existe)
41-42: div class = "date", d'accroître datecount
44: autre chose, si datecount n'est pas zéro
46: fin div, un nouveau départ (pour la nouvelle date)
50-51: set team2 à team1 actuel, et même pour date2
53: fermer les deux divs

J'espère Ive a obtenu ce droit. Donc fondamentalement, il génère une image en utilisant travées et divs (divs besoin d'une feuille de styles CSS pour les. Date &. Équipe) à partir d'une table appelée "table" dans une base de données mysql avec des colonnes de "start_time", "end_time", "client_location »,« équipe », et« jour ».

Si vous avez un serveur exécutant apache, php et mysql, de lui donner un coup de feu (utiliser phpadmin pour créer la table & db).

Pour ce faire: Connectez-vous à la base de données (en haut), déconnecter (en bas), écrire une feuille css et faire de la table.

Si vous n'y arrivez pas, je peux envoyer de plus amples informations sur :)
  • righteous_trespasser
  • Scuffle
  • Genius
  • Avatar de l’utilisateur
  • Inscription: Mar 12, 2007
  • Messages: 6228
  • Loc: South-Africa
  • Status: Offline

Message Juillet 21st, 2008, 12:15 pm

Merci alex, j'ai été occupé à jouer l'oubli, cette dernière mission est impossible damn...
Let's leave all our *plum* where it is and go live in the jungle ...
  • alex89
  • Bronze Member
  • Bronze Member
  • Avatar de l’utilisateur
  • Inscription: Juil 18, 2008
  • Messages: 239
  • Loc: Western Australia
  • Status: Offline

Message Juillet 21st, 2008, 12:17 pm

righteous_trespasser a écrit:
Merci alex, j'ai été occupé à jouer l'oubli, cette dernière mission est impossible damn...

Joué l'expansion? Je crois Ive terminé toutes les quêtes - dont l'un est bloqué sur vous?
  • righteous_trespasser
  • Scuffle
  • Genius
  • Avatar de l’utilisateur
  • Inscription: Mar 12, 2007
  • Messages: 6228
  • Loc: South-Africa
  • Status: Offline

Message Juillet 21st, 2008, 12:37 pm

/ / La dernière mission de la quête principale...dans le "paradis"...sa freakin difficile...mais parce que mon épée thats sucks...il ya quelques minutes, j'ai repris une nouvelle et maintenant Im juste de tout hacher en morceaux...
Let's leave all our *plum* where it is and go live in the jungle ...
  • Ifrit
  • Graduate
  • Graduate
  • Avatar de l’utilisateur
  • Inscription: Juin 07, 2004
  • Messages: 196
  • Loc: Portugal
  • Status: Offline

Message Juillet 21st, 2008, 3:14 pm

J'ai terminé cette partie du projet avec succès, cependant je ne pouvais pas obtenir votre code de travail, righteous_trespasser, merci beaucoup, cependant.
  • Bogey
  • Bogey
  • Genius
  • Avatar de l’utilisateur
  • Inscription: Juil 14, 2005
  • Messages: 8211
  • Loc: USA
  • Status: Offline

Message Juillet 21st, 2008, 7:01 pm

:lol: Eh bien, il fonctionne mais pas exactement comme vous le souhaitez. J'ai réussi à le faire fonctionner sur mon démo d'essai et il montre la chose presque tout bon...Il ya quelques choses qui doit être fait...Im le fais en ce moment gif "alt =":)" title =" Smile ">

Voici comment la source (après l'édition de la PHP) ressemble
HTML Code: [ Select ]
<div class='date'>
</div>
<div style='margin-left:90px; width:30px; background-color: #CECECE;'>
BAR
</div>
<div style='margin-left:100px; width:30px; background-color: #CECECE;'>
FOO
</div>
<div style='margin-left:150px; width:30px; background-color: #CECECE;'>
JOE
</div>
<div style='margin-left:180px; width:20px; background-color: #CECECE;'>
FOO
</div>
<div style='margin-left:100px; width:90px; background-color: #CECECE;'>
JOE
</div>
<div style='margin-left:80px; width:60px; background-color: #CECECE;'>
BAR
</div>
  1. <div class='date'>
  2. </div>
  3. <div style='margin-left:90px; width:30px; background-color: #CECECE;'>
  4. BAR
  5. </div>
  6. <div style='margin-left:100px; width:30px; background-color: #CECECE;'>
  7. FOO
  8. </div>
  9. <div style='margin-left:150px; width:30px; background-color: #CECECE;'>
  10. JOE
  11. </div>
  12. <div style='margin-left:180px; width:20px; background-color: #CECECE;'>
  13. FOO
  14. </div>
  15. <div style='margin-left:100px; width:90px; background-color: #CECECE;'>
  16. JOE
  17. </div>
  18. <div style='margin-left:80px; width:60px; background-color: #CECECE;'>
  19. BAR
  20. </div>
"Bring forth therefore fruits meet for repentance:" Matthew 3:8
  • Bogey
  • Bogey
  • Genius
  • Avatar de l’utilisateur
  • Inscription: Juil 14, 2005
  • Messages: 8211
  • Loc: USA
  • Status: Offline

Message Juillet 21st, 2008, 8:22 pm

Alright...Je l'ai eu à travailler...un peu :lol:

Code: [ Select ]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>Team Schedular</title>
<style type="text/css">
<!--
.container {
margin-left: -157px;
}

.team {
background-color: #dddddd;
}

ul.daten {
list-style-type: none;
margin-left: 157px;
}

ul.daten li {
float: left;
background-color: #ffffff;
color: #000000;
width: 25px;
}
//-->
</style>
</head>
<body>
<div class="container">
<?php
mysql_connect('host','user','pass');
mysql_select_db("database");

$sql= mysql_query('SELECT * FROM table ORDER BY day,team_id,begin_hour');

while ($row = mysql_fetch_assoc($sql))
{

    $date1 = $row['day'];
    $team1 = $row['team'];
    if ($date1 == $date2)
    {

        $team = $row['client'];
        $margin = $row['begin_hour'] * 25;
        $width = ($row['end_hour'] - $row['begin_hour']) * 25;
        $client = $row['client'];
        $location = $row['location'];
    
        echo " <div class=\"team_cont\">\n";

        echo <<< EOT
<div style='margin-left: {$margin}px; width: {$width}px; background-color: #CECECE;'>
$team - $location
</div>

EOT;
        
        echo " </div>\n";
    }
    else
    {

        echo <<<EOT
<ul class="daten">
<li>08</li>
<li>09</li>
<li>10</li>
<li>11</li>
<li>12</li>
<li>13</li>
<li>14</li>
<li>15</li>
<li>16</li>
<li>17</li>
<li>18</li>
<li>19</li>
<li>20</li>
<li>21</li>
<li>22</li>
<li>23</li>
</ul>

EOT;
    }
    $date2 = $row['day'];
}
?>
</div>
</body>
</html>
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
  4. <head>
  5. <title>Team Schedular</title>
  6. <style type="text/css">
  7. <!--
  8. .container {
  9. margin-left: -157px;
  10. }
  11. .team {
  12. background-color: #dddddd;
  13. }
  14. ul.daten {
  15. list-style-type: none;
  16. margin-left: 157px;
  17. }
  18. ul.daten li {
  19. float: left;
  20. background-color: #ffffff;
  21. color: #000000;
  22. width: 25px;
  23. }
  24. //-->
  25. </style>
  26. </head>
  27. <body>
  28. <div class="container">
  29. <?php
  30. mysql_connect('host','user','pass');
  31. mysql_select_db("database");
  32. $sql= mysql_query('SELECT * FROM table ORDER BY day,team_id,begin_hour');
  33. while ($row = mysql_fetch_assoc($sql))
  34. {
  35.     $date1 = $row['day'];
  36.     $team1 = $row['team'];
  37.     if ($date1 == $date2)
  38.     {
  39.         $team = $row['client'];
  40.         $margin = $row['begin_hour'] * 25;
  41.         $width = ($row['end_hour'] - $row['begin_hour']) * 25;
  42.         $client = $row['client'];
  43.         $location = $row['location'];
  44.     
  45.         echo " <div class=\"team_cont\">\n";
  46.         echo <<< EOT
  47. <div style='margin-left: {$margin}px; width: {$width}px; background-color: #CECECE;'>
  48. $team - $location
  49. </div>
  50. EOT;
  51.         
  52.         echo " </div>\n";
  53.     }
  54.     else
  55.     {
  56.         echo <<<EOT
  57. <ul class="daten">
  58. <li>08</li>
  59. <li>09</li>
  60. <li>10</li>
  61. <li>11</li>
  62. <li>12</li>
  63. <li>13</li>
  64. <li>14</li>
  65. <li>15</li>
  66. <li>16</li>
  67. <li>17</li>
  68. <li>18</li>
  69. <li>19</li>
  70. <li>20</li>
  71. <li>21</li>
  72. <li>22</li>
  73. <li>23</li>
  74. </ul>
  75. EOT;
  76.     }
  77.     $date2 = $row['day'];
  78. }
  79. ?>
  80. </div>
  81. </body>
  82. </html>

Les problèmes avec elle sont...
  • Doesnt montrent le premier résultat
  • Vous ne spécifiez pas ce que tu veux être pour des groupes si j'ai gâché la base de données jusqu'à...I utiliser des clients pour les groupes et les clients pour l'emplacement. Le team_id est un team_id j'ai faite dans la base de données. Une clé primaire
Voici comment ma base de données ressemble pour l'essai
SQL Code: [ Select ]
CREATE TABLE `test` (
 `team_id` tinyint(4) NOT NULL AUTO_INCREMENT,
 `client` varchar(255) NOT NULL,
 `location` varchar(25) NOT NULL,
 `begin_hour` varchar(2) NOT NULL,
 `end_hour` varchar(2) NOT NULL,
 `day` varchar(10) NOT NULL,
 PRIMARY KEY (`team_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;
 
INSERT INTO `test` (`team_id`, `client`, `location`, `begin_hour`, `end_hour`, `day`) VALUES
(1, '1', 'FOO', '8', '11', '2008-06-07'),
(2, '1', 'BAR', '9', '12', '2008-06-07'),
(3, '2', 'FOO', '10', '13', '2008-06-07'),
(4, '2', 'JOE', '15', '18', '2008-06-07'),
(5, '3', 'FOO', '18', '20', '2008-06-07'),
(6, '3', 'JOE', '10', '19', '2008-06-07'),
(7, '4', 'BAR', '8', '14', '2008-06-07');
  1. CREATE TABLE `test` (
  2.  `team_id` tinyint(4) NOT NULL AUTO_INCREMENT,
  3.  `client` varchar(255) NOT NULL,
  4.  `location` varchar(25) NOT NULL,
  5.  `begin_hour` varchar(2) NOT NULL,
  6.  `end_hour` varchar(2) NOT NULL,
  7.  `day` varchar(10) NOT NULL,
  8.  PRIMARY KEY (`team_id`)
  9. ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;
  10.  
  11. INSERT INTO `test` (`team_id`, `client`, `location`, `begin_hour`, `end_hour`, `day`) VALUES
  12. (1, '1', 'FOO', '8', '11', '2008-06-07'),
  13. (2, '1', 'BAR', '9', '12', '2008-06-07'),
  14. (3, '2', 'FOO', '10', '13', '2008-06-07'),
  15. (4, '2', 'JOE', '15', '18', '2008-06-07'),
  16. (5, '3', 'FOO', '18', '20', '2008-06-07'),
  17. (6, '3', 'JOE', '10', '19', '2008-06-07'),
  18. (7, '4', 'BAR', '8', '14', '2008-06-07');

Espérons que cela vous aide et aide à quelqu'un pour corriger les problèmes répertoriés :lol:

(PS: Le mérite en revient ici...J'ai utilisé la fonction R_Ts et édité un peu...
"Bring forth therefore fruits meet for repentance:" Matthew 3:8
  • alex89
  • Bronze Member
  • Bronze Member
  • Avatar de l’utilisateur
  • Inscription: Juil 18, 2008
  • Messages: 239
  • Loc: Western Australia
  • Status: Offline

Message Juillet 21st, 2008, 9:17 pm

Nice work! J'aimerais avoir autant de temps libre que vous :)
  • Bogey
  • Bogey
  • Genius
  • Avatar de l’utilisateur
  • Inscription: Juil 14, 2005
  • Messages: 8211
  • Loc: USA
  • Status: Offline

Message Juillet 21st, 2008, 9:34 pm

Mustve m'a pris environ une heure 30 minutes pour le faire. Man-je besoin pour obtenir une vie :lol:
"Bring forth therefore fruits meet for repentance:" Matthew 3:8
  • alex89
  • Bronze Member
  • Bronze Member
  • Avatar de l’utilisateur
  • Inscription: Juil 18, 2008
  • Messages: 239
  • Loc: Western Australia
  • Status: Offline

Message Juillet 21st, 2008, 9:37 pm

Whoops, Im une demi-heure en retard à une date - Ive a une vie, mais elle interfère avec ma vie de codage :(
  • Anonymous
  • Bot
  • No Avatar
  • Inscription: 25 Feb 2008
  • Messages: ?
  • Loc: Ozzuland
  • Status: Online

Message Juillet 21st, 2008, 9:37 pm

Afficher de l'information

  • Total des messages de ce sujet: 27 messages
  • Utilisateurs parcourant ce forum: Zealous et 203 invités
  • Vous ne pouvez pas poster de nouveaux sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas éditer vos messages
  • Vous ne pouvez pas supprimer vos messages
  • Vous ne pouvez pas joindre des fichiers
 
 

© 2011 Unmelted, LLC. Ozzu® est une marque déposée de Unmelted, LLC