Jump to content

Barand

Moderators
  • Posts

    24,605
  • Joined

  • Last visited

  • Days Won

    831

Everything posted by Barand

  1. So what are the ids of the records now in your table?
  2. Did you already have a record with an id of "1"? The id would be the id of the record to be updated, not 1 every time.
  3. You aren't inserting the id into the new record so you are not attempting to create a duplicate
  4. Here's the model I forgot to attach
  5. Your date format is invalid for storing in a database table, it needs converting to YYYY-mm-DD. Numeric values cannot contain "£".
  6. Whenever you have column names like room_type_1, room_type_2, ..., room_type_N, the database design is wrong. Database tables are not spreadsheets. You should normalize the data so each of those room_type values is in a row of its own. (See attached model.). Don't use SELECT *. Specify just the column you need. Use explicit join syntax instead of putting the join conditions in the WHERE clause. Using the attached model, the query you want would be SELECT h.hotel_num , h.name , SUM(hi.qty) as rooms FROM hotel h INNER JOIN event_hotels eh ON h.hotel_num = eh.hotel_num INNER JOIN hotels_inventory hi ON h.hotel_num = hi.hotel_num WHERE eh.event_num = 78 AND hi.inv_date BETWEEN '2015-12-01' and '2015-12-31' GROUP BY h.hotel_num ORDER BY rooms DESC;
  7. You can calculate the distance in the query and then ORDER BY distance
  8. to process a single line like that you can $str = 'Mark;;Mudel;;;Mootor;;;;;;;Laius Kõrgus ZR;;"R """;;LI;SI;XL e4txc4;;;;;;;;;;;;;;;;;;;;;;;;'; $data = array_filter(str_getcsv($str,';')); // ignore empty values echo '<pre>',print_r($data, true),'</pre>'; // view the data array which gives Array ( [0] => Mark [2] => Mudel [5] => Mootor [12] => Laius Kõrgus ZR [14] => R " [16] => LI [17] => SI [18] => XL e4txc4 ) To process the whole file you use fgetcsv, which is similar.
  9. We won't do your homework for you. Use meaningful topic titles in future
  10. That is what you said you want to do. If you want to reduce the quality each time then don't hard-code the "50", put it in a variable and reduce the value in each loop
  11. You cannot compare dates correctly using that date format. Always use yyyy-mm-dd for date storage and comparisons. Format as required on final output.
  12. You need to pass 4 parameters when you connect, not just 1. Try $conn = "mysqli_connect(db_host, db_user, db_pass, db_name)"; and don't post db credentials.
  13. If we knew your input data, what you are getting and what you expect to get then maybe we'd have some ideas.
  14. Only checked checkbox values are posted so you need to do something like this $captcha_reset_pass = isset($_POST['captcha_reset_pass'] ? 'yes' : 'no';
  15. there are some conversion programs around http://lmgtfy.com/?q=php+html+to+pdf+conversion
  16. This my best attempt yet. Instead of counting I store the traversed path then eliminate duplicates. <?php // // ARRAY OF DOGS // id => [sire, dam, name] // $dogs = array ( 1 => array ( 0 => '2', 1 => '3', 2 => 'Nimh\'s Delorean', ), 2 => array ( 0 => '4', 1 => '9', 2 => 'Dog B', ), 3 => array ( 0 => '7', 1 => '8', 2 => 'Dog C', ), 4 => array ( 0 => '7', 1 => '9', 2 => 'Dog E', ), 5 => array ( 0 => '10', 1 => '11', 2 => 'Dog F', ), 7 => array ( 0 => '14', 1 => '15', 2 => 'Dog H', ), 8 => array ( 0 => '16', 1 => '17', 2 => 'Dog I', ), 9 => array ( 0 => '16', 1 => '17', 2 => 'Dog J', ), 10 => array ( 0 => '18', 1 => '19', 2 => 'Dog K', ), 11 => array ( 0 => '20', 1 => '21', 2 => 'Dog L', ), 14 => array ( 0 => '20', 1 => '17', 2 => 'Dog O', ), 15 => array ( 0 => '0', 1 => '0', 2 => 'Dog P', ), 16 => array ( 0 => '14', 1 => '17', 2 => 'Dog Q', ), 17 => array ( 0 => '0', 1 => '0', 2 => 'Dog R', ), 18 => array ( 0 => '0', 1 => '0', 2 => 'Dog S', ), 19 => array ( 0 => '0', 1 => '0', 2 => 'Dog T', ), 20 => array ( 0 => '0', 1 => '0', 2 => 'Dog U', ), 21 => array ( 0 => '0', 1 => '0', 2 => 'Dog V', ), 22 => array ( 0 => '0', 1 => '0', 2 => 'Dog W', ), 23 => array ( 0 => '0', 1 => '0', 2 => 'Dog X', ), 24 => array ( 0 => '25', 1 => '26', 2 => 'Cedric', ), 25 => array ( 0 => '27', 1 => '0', 2 => 'Phantom', ), 26 => array ( 0 => '27', 1 => '0', 2 => 'Walton Mare', ), 27 => array ( 0 => '0', 1 => '0', 2 => 'Walton', ), 28 => array ( 0 => '0', 1 => '0', 2 => 'A', ), 29 => array ( 0 => '0', 1 => '0', 2 => 'B', ), 30 => array ( 0 => '29', 1 => '28', 2 => 'C', ), 31 => array ( 0 => '29', 1 => '28', 2 => 'D', ), 32 => array ( 0 => '0', 1 => '30', 2 => 'E', ), 33 => array ( 0 => '0', 1 => '31', 2 => 'F', ), 34 => array ( 0 => '33', 1 => '32', 2 => 'I', ), 35 => array ( 0 => '0', 1 => '0', 2 => 'J', ), 36 => array ( 0 => '0', 1 => '0', 2 => 'K', ), 37 => array ( 0 => '0', 1 => '0', 2 => 'L', ), 38 => array ( 0 => '0', 1 => '0', 2 => 'M', ), 39 => array ( 0 => '0', 1 => '0', 2 => 'N', ), 40 => array ( 0 => '0', 1 => '0', 2 => 'Dog1', ), 41 => array ( 0 => '0', 1 => '0', 2 => 'Dog2', ), 42 => array ( 0 => '40', 1 => '41', 2 => 'Dog3', ), 43 => array ( 0 => '42', 1 => '41', 2 => 'Dog4', ), 44 => array ( 0 => '0', 1 => '0', 2 => 'O', ), 45 => array ( 0 => '0', 1 => '0', 2 => 'P', ), 46 => array ( 0 => '44', 1 => '45', 2 => 'Q', ), 47 => array ( 0 => '44', 1 => '45', 2 => 'R', ), 48 => array ( 0 => '46', 1 => '47', 2 => 'S', ), 49 => array ( 0 => '46', 1 => '47', 2 => 'T', ), 50 => array ( 0 => '48', 1 => '49', 2 => 'U', ), 51 => array ( 0 => '0', 1 => '0', 2 => 'A', ), 52 => array ( 0 => '0', 1 => '0', 2 => 'B', ), 53 => array ( 0 => '51', 1 => '52', 2 => 'C', ), 54 => array ( 0 => '51', 1 => '52', 2 => 'D', ), 55 => array ( 0 => '51', 1 => '52', 2 => 'E', ), 56 => array ( 0 => '51', 1 => '52', 2 => 'G', ), 57 => array ( 0 => '53', 1 => '54', 2 => 'H', ), 58 => array ( 0 => '55', 1 => '56', 2 => 'I', ), 59 => array ( 0 => '57', 1 => '58', 2 => 'J', ), 60 => array ( 0 => '59', 1 => '50', 2 => 'Z', ) ); // // CALCULATE INBREEDING COEFFICIENTS // $doglist = [4,9,34,50,59,60]; echo "<pre>\n"; foreach ($doglist as $dogid) { printf("%-20s (#%03d) COI : %0.4f<br>", $dogs[$dogid][2], $dogid, COI($dogid, $dogs)); } echo "</pre>\n"; // // FUNCTIONS // function getAncestors($id, &$dogs, &$ancests, $path) { if ($id==0) return; $ancests[$id][] = $path; if (isset($dogs[$id]) ) { getAncestors($dogs[$id][0], $dogs, $ancests, $path.$dogs[$id][0].','); getAncestors($dogs[$id][1], $dogs, $ancests, $path.$dogs[$id][1].','); } } function COI($id, &$dogs) { if ($id==0) return 0; $sires = $dams = []; getAncestors($dogs[$id][0], $dogs, $sires, ''); getAncestors($dogs[$id][1], $dogs, $dams, ''); $result=0; foreach ($sires as $did=>$dists) { if (isset($dams[$did])) { $distd = $dams[$did]; foreach ($dists as $paths) { foreach ($distd as $pathd) { $ds = count(explode(',', $paths)); $dd = count(explode(',', $pathd)); if ($paths==$pathd && $ds>2) continue; $sumd = $ds + $dd-1; $intermed = pow(0.5, $sumd) * (1 + COI($did, $dogs)); $result += $intermed; // printf("| %5s | %8.4f | %12s | %12s |\n", $dogs[$did][2], $intermed, $paths, $pathd); } } } } return $result; } Results Dog E (#004) COI : 0.1875 Dog J (#009) COI : 0.3750 I (#034) COI : 0.0625 U (#050) COI : 0.3750 J (#059) COI : 0.2500 Z (#060) COI : 0.0000
  17. I agree with ginerjm, that's a terrible table design. Make it a datetime field with a value of '9999-12-31 23:59:59' for those that are permanent. Then your query works as it is now (except you would use NOW() instead of UNIX_TIMESTAMP() ) As it is now, are you saying you want to update the "kick" fields where kick < UNIX_TIMESTAMP() AND kick <> 'Permanently' ?
  18. I'm struggling too. My method got U correct but not J. Using your nested foreach() method gets J correct but not U. Time for a new algorithm?
  19. Those results were from my own code. Yours almost agrees with mine in that we both get | 44 | A | 2,2| 2,2| but I interpret that as A | 0.03125 | 2 | 2 | A | 0.03125 | 2 | 2 | whereas you apparently have doubled it to A | 0.03125 | 2 | 2 | A | 0.03125 | 2 | 2 | A | 0.03125 | 2 | 2 | A | 0.03125 | 2 | 2 |
  20. I get these results, which look right to me DOG: J | A | 0.0312 | 2 | 2 | | A | 0.0312 | 2 | 2 | | B | 0.0312 | 2 | 2 | | B | 0.0312 | 2 | 2 | COI : 0.1250 DOG: U | Q | 0.1250 | 1 | 1 | | O | 0.0312 | 2 | 2 | | O | 0.0312 | 2 | 2 | | P | 0.0312 | 2 | 2 | | P | 0.0312 | 2 | 2 | | R | 0.1250 | 1 | 1 | COI : 0.3750 DOG: Z COI : 0.0000
  21. In the code I posted, A - J would be in the sires array and O - U would be in the dams array, which would produce no common ancestors
  22. Specify just the columns you want in the SELECT (which you should do anyway, instead of using "SELECT * ")
  23. I used your site page to generate the pedigree for Dog#4 then entered that in their calculator chart. There was no dog #20 in their results (only 14 and 17) and then I looked at what results would give their value for #17.
  24. "It doesn't work" tells us sweet FA about the problem. We cannot see your screen. What is happening? What isn't happening?
  25. Looks like that site used REF SITE METHOD 3 | 14 | 0.0625 | 1 | 2 | | 17 | 0.0312 | 2 | 2 | | 17 | 0.0625 | 2 | 1 | Dog 4 COI : 0.1562 Dog #20 ignored, and only two of the three occurrences of #17 were used. So why?
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.