login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Time calculate project (Opgelost)

Offline kiwi - 04/04/2010 20:40 (laatste wijziging 04/04/2010 20:52)
Avatar van kiwiNieuw lid hey admins, mods, leden, ...

ik ben hier bezig met een klein scriptje aan het maken om de tijd te berekenen tussen 2 dorpen op een spel, en dat je dan wanneer je op iemand zijn naam klikt je de tijd ziet tussen elk van jou dorpen en het zijne

het tijd bereken script is me gelukt en doe ik met de volgende functie:
  1. <?php
  2. function time_calculate ($Co1_1, $Co1_2, $Co2_1, $Co2_2, $village1, $village2) {
  3. // tijd tussen 1 hokje verschil
  4. $tijd = 20;
  5.  
  6. // Verschil tussen de 2 cordinaten maal de tijd
  7. $Co1 = ($Co1_1 - $Co2_1) * $tijd ;
  8. $Co2 = ($Co1_2 - $Co2_2) * $tijd ;
  9.  
  10. // bereken wat de totale tijd is in minuten
  11. $co = sqrt((($Co1) * ($Co1)) + (($Co2) * ($Co2)));
  12.  
  13. // een simpel zinnetje :D
  14. echo "Time between <strong>$village1</strong> and <strong>$village2</strong>: ";
  15.  
  16. // Uuren uitrekenen en de getallen na de komma weg doen
  17. $h = $co / 60;
  18. $h = explode(".",$h);
  19. $h = $h[0];
  20.  
  21. // Minuten uitrekenen en de getallen na de komma weg doen
  22. $m = $co - ($h * 60);
  23. $m = explode(".",$m);
  24. $m = $m[0];
  25.  
  26. // Seconden uitrekenen en de getallen na de komma weg doen
  27. $s = $co * 60 - ($h * 3600) - ($m * 60);
  28. $s = explode(".",$s);
  29. $s = $s[0];
  30.  
  31. // Tijd tonen
  32. echo ''.$h.':'.$m.':'.$s.'';
  33. }
  34. ?>

en dat werkt zeer goed, dan wil ik de tijd tussen jou dorpen en de dorpen van de andere gebruiker weergeven met volgende functie:
  1. function travel_time($user2, $user1){
  2. // Eerste lid zijn gegevens uit de DB halen
  3. $ResultSQL1 = mysql_query("SELECT * FROM dorp WHERE username ='$user1'") or die(mysql_error());
  4. // Tweede lid zijn gegevens uit de DB halen
  5. $ResultSQL2 = mysql_query("SELECT * FROM dorp WHERE username ='$user2'") or die(mysql_error());
  6. // Dorpen opvragen 1e lid
  7. while (@$Result1 = mysql_fetch_object($ResultSQL1)){
  8. // Voor elk dorp de tijd tussen 1e lid zijn dorp en 2e lid zijn dorpen
  9. while (@$Result2 = mysql_fetch_object($ResultSQL2)){
  10. time_calculate( $Result1->co1,$Result1->co2,
  11. $Result2->co1,$Result2->co2,
  12. $Result1->naam_dorp,$Result2->naam_dorp
  13. );
  14. echo '<br />';
  15. }
  16. echo '<hr />';
  17. }
  18. }

maar ik krijg dit maar als output:
  1. Time between Dorp1_lid1 and Dorp1_lid2: 0:0:0
  2. Time between Dorp1_lid1 and Dorp2_lid2: 2:1:39
  3. Time between Dorp1_lid1 and Dorp3_lid2: 2:36:12
  4. 3x horizontal rule


terwijl lid1 ook nog een 2e en 3e dorp heeft,
dus op 1 of andere manier stopt hij na de 1e maal er door gelopen, weet iemand wat ik eventueel verkeerd doe?

alvast bedankt
kiwi

5 antwoorden

Gesponsorde links
Offline Jelmerholland - 05/04/2010 00:44
Avatar van Jelmerholland PHP beginner regel 7 en 9 van je 2e code. moet die '@' voor je $Result1 en $Result2 ?, ik heb niet zoveel ervaring hiermee, maar misschien dat als je dat weghaalt, misschien helpt dat? Just give it a try 
Offline kiwi - 05/04/2010 00:47
Avatar van kiwi Nieuw lid Nee dat is het probleem niet, die @ zet ik daar gewoon om de errors te onderdrukken in mijn programma, is nooit een probleem geweest
Offline Jelmerholland - 05/04/2010 10:30
Avatar van Jelmerholland PHP beginner Ok, verder weet ik 't niet, sorry
Offline DarkDarsstar - 05/04/2010 10:47
Avatar van DarkDarsstar Lid OK, nadat je alle rijen van de tweede query al hebt opgehaalt zal mysql_fetch_* alleen nog maar false returnen.

Oplossingen die ik kan verzinnen:
1) Zet de tweede mysql_query() binnen de eerste loop.
2) Gebruik mysql_data_seek($ResultSQL2, 0) aan het einde van de eerste loop om de pointer te resetten.
3) Nest de while loops niet maar sla eerst alle results van een van bijde queries op in een array en loop dan door de array met een geneste foreach loop.
Bedankt door: kiwi
Offline kiwi - 05/04/2010 11:04 (laatste wijziging 05/04/2010 11:20)
Avatar van kiwi Nieuw lid Die For each loop, wou ik ook al eens gebruiken maar dat versta ik ng niet volledig, maar kzal het eens bekijken

EDIT:

met die mysql_data_seek($ResultSQL2, 0), werkt ie perfect bedankt 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.307s