[PHP & MySql] Enkele record 2x gebruiken

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Toppe
  • Registratie: Januari 2004
  • Laatst online: 15:29

Toppe

Oké ✅

Topicstarter
Hallo,

Ik kom er niet meer uit, hopelijk kunnen jullie mij nog helpen, word er echt moedeloos van. Ik moet bepaalde gegevens 2x gebruiken, terwijl deze maar één keer in de database staan. Het script is om vliegtuigen te kunnen registreren.

Momenteel heb ik dit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CREATE TABLE IF NOT EXISTS `flights` (
  `id` int(50) NOT NULL auto_increment,
  `flight_in` char(50) NOT NULL,
  `origin` char(50) NOT NULL,
  `original_date` date NOT NULL,
  `original_eta` time NOT NULL,
  `flight_out` char(50) NOT NULL,
  `destination` char(50) NOT NULL,
  `leave_original` date NOT NULL,
  `leave_takeoff` time NOT NULL,
  `engineer` char(50) NOT NULL,
  `mechanic` char(50) NOT NULL,
  `night` int(50) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=28 ;

INSERT INTO `flights` (`id`, `flight_in`, `origin`, `original_date`, `original_eta`, `flight_out`, `destination`, `leave_original`, `leave_takeoff`, `engineer`, `mechanic`, `night`) VALUES
(1, 'CX271', 'HKG', '2012-03-02', '06:20:00', 'CX271', 'CDG', '2012-03-02', '08:30:00', '2;1', 'x', 0);


Het is zo dat orignal_date en leave_original een verschillende datum kunnen hebben, vandaag komt de vlucht binnen, morgen vertrekt de vlucht weer.

Via PHP word er een output gegeven, alle vluchten voor vandaag worden netjes weergegeven door deze te selecteren aan de hand van de datum, maar als een vlucht morgen vertrekt moet de leave_original datum geselecteerd worden, de datum van gister moet dus in het lijstje van vandaag komen.

Nu heb ik zitten denken door één vak aan te maken met 'selectdatum' en daar de datum in te zetten dat de vlucht vertrekt, alleen heb je daar niets aan als de vlucht gister is binnen gekomen...

Ik denk zelf dat er niets anders op zit dan de vlucht 2x in de database toe te voegen?

Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

Je kunt toch gewoon kijken of de aankomst datum op vandaag ligt of de vertrekdatum op vandaag ligt?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • storeman
  • Registratie: April 2004
  • Laatst online: 13:52
Je omschrijft je probleem niet helemaal lekker, wat wil je nu als uiteindelijke output bereiken? Als je eenzelfde rij twee keer in je resultaat wilt onder andere voorwaarden, dan kun je dit doen door middel van een UNION statement.

"Chaos kan niet uit de hand lopen"


Acties:
  • 0 Henk 'm!

  • borft
  • Registratie: Januari 2002
  • Laatst online: 15:34
ik zou gewoon een OR opnemen in je WHERE clausule? hetzelfde record 2x in de db opnemen lijkt me onwenselijk.

Acties:
  • 0 Henk 'm!

  • Toppe
  • Registratie: Januari 2004
  • Laatst online: 15:29

Toppe

Oké ✅

Topicstarter
Het is lastig uit te leggen ja.

Vlucht X komt vandaag binnen en vertrekt morgen weer. In mijn overzicht moet Vlucht X dus 2x worden weergegeven (In het lijstje van vandaag en in het lijstje van morgen). Bij beide lijsten moet de Original Date wel de datum zijn dat hij binnen komt (5-3). Dus in de lijst van 6-3 heb je een vlucht staan met een Original Date van 5-3, in de lijst van 5-3 staat de vlucht met Original Date 5-3, maar Departed Date is morgen

Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Dat is puur presentatie en geen extra data, ergo geen extra data in je db. Verplicht leesvoer (afh. v. hoe je het oplost niet allemaal van toepassing) : Joins, OR clauses, IF() condities. Of maak gewoon beide lijstjes op basis van aparte queries. :z

{signature}


Acties:
  • 0 Henk 'm!

  • Patriot
  • Registratie: December 2004
  • Laatst online: 15:55

Patriot

Fulltime #whatpulsert

Toppe schreef op maandag 05 maart 2012 @ 10:30:
Het is lastig uit te leggen ja.

Vlucht X komt vandaag binnen en vertrekt morgen weer. In mijn overzicht moet Vlucht X dus 2x worden weergegeven (In het lijstje van vandaag en in het lijstje van morgen). Bij beide lijsten moet de Original Date wel de datum zijn dat hij binnen komt (5-3). Dus in de lijst van 6-3 heb je een vlucht staan met een Original Date van 5-3, in de lijst van 5-3 staat de vlucht met Original Date 5-3, maar Departed Date is morgen
Je wilt dus een lijstje met vluchten waarvan de original date of de departed date een bepaalde datum is? Dat is niet zo moeilijk lijkt me?

Acties:
  • 0 Henk 'm!

  • Toppe
  • Registratie: Januari 2004
  • Laatst online: 15:29

Toppe

Oké ✅

Topicstarter
Kijk hier een voorbeeld:

Flickr <- is ff snel het de hand gemaakt:-)

Ik gebruik MH016 even als voorbeeld...

De huidige query die ik gebruik:
PHP:
1
$fetch = mysql_query("Select * From flights Where original_date Between '".$now."' AND '".$week."'") or die(mysql_error());


Hier mee krijg ik netjes MH016 te zien, alleen moet ik deze data dus 2x gaan gebruiken, tenslotte komt hij voor op 3-3 en op 4-3.

Op de dag van binnenkomst moet je dus de original_date gebruiken en als de vertrek datum niet de datum van aankomst is moet je leave_original gebruiken.

Daarbij gebruik in volgend script voor het weergeven van de datum (Die blauw balk dus)
PHP:
1
2
3
4
5
6
if(in_array($record['date'], $date)){
                        //Allready in array
                    } else {
                        array_push($date, $record['date']);
                        echo'<tr class="weekhead"><td colspan="10" style="text-align: center">'.date('j-n', strtotime($record['date'])).' ('.date('l', strtotime($record['date'])).')</td></tr>';
                    }


Niet super maar werkt wel super!

[ Voor 41% gewijzigd door Toppe op 05-03-2012 10:42 ]

Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!

Pagina: 1