Jump to content

Barand

Moderators
  • Posts

    24,551
  • Joined

  • Last visited

  • Days Won

    821

Community Answers

  1. Barand's post in code challenge was marked as the answer   
    or
    $data = file('hansford.txt',FILE_IGNORE_NEW_LINES); natsort($data); foreach ($data as $line) { echo "$line<br>"; } gives
    #1A - Kessenich #1B - Adams #8 - Johnson #50 - Smith #100 - Sanders
  2. Barand's post in New PHP version is released! was marked as the answer   
    Consult the manual
    http://php.net/manual/en/migration70.new-features.php
  3. Barand's post in Return X words from string was marked as the answer   
    This closes off any current tags
    $text = "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam elementum ornare scelerisque.<br> <a href='xyz.com' target='_blank'>Vestibulum</a> iaculis mattis dui.</p> <p>Aliquam <i>scelerisque</i> sapien at tellus accumsan varius. <img src='a.jpg'> Fusce facilisis ullamcorper dapibus. Aliquam dignissim</p> <ul>     <li>gravida</li>     <li>dui eget</li>     <li>aliquam</li> </ul> <p>Duis odio, semper eu sodales vel, sollicitudin eu enim. Cras tortor libero, pellentesque accumsan tempus in, ullamcorper nec augue. Mauris eu ipsum mauris, non imperdiet ipsum. In hac habitasse platea dictumst. Morbi ipsum mauris, tincidunt vitae pretium tempor, pretium a turpis. Nulla quis eros eu lorem aliquam congue non a nisl.</p>"; $voidtags = ['br','hr','img']; $keeptags = '<a><b><i><br><p><ul><ol><li><u><strong><emphasis>'; $limit = 30; $summary = limitText($text, $limit, $voidtags, $keeptags); echo $summary; function limitText($text, $limit, $voidtags, $keeptags) {     $result = '';     $p=0;     $tags=[];     $currtag = '';     $words = 0;     $intag = $inword = 0;     $text = strip_tags($text, $keeptags);     $len = strlen($text);     while ($p<$len) {         $c = $text[$p];         switch ($c) {             case '<':                 if ($inword) {                     $inword = 0;                     $words++;                     if ($words > $limit) break 2;                 }                 $intag = 1;                 break;             case '>':                 if ($intag && $currtag != '') {                     if (!in_array($currtag, $voidtags)) $tags[] = $currtag;                     $currtag = '';                 }                 $intag = 0;                 break;             case '/':                 if ($intag) {                     array_pop($tags);                     do {                         $result .= $c;                     }                     while (($c=$text[++$p]) !='>');                     $intag = 0;                     }                 break;             case "\n":             case "\t":             case ' ':                 if ($inword) {                     $inword = 0;                     $words++;                     if ($words >= $limit) break 2;                 }                 elseif ($intag) {                     $tags[] = $currtag;                     do {                         $result .= $c;                     }                     while (($c=$text[++$p]) !='>');                     $intag = 0;                 }                 break;             default:                 if ($intag) {                     $currtag .= $c;                 }                 else $inword = 1;                 break;         }         $result .= $c;         ++$p;     }     while ($t=array_pop($tags)) {         $result .= "</{$t}>";  // close any open tags     }     return $result; } results
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam elementum ornare scelerisque.<br> <a href="xyz.com" target="_blank">Vestibulum</a> iaculis mattis dui.</p> <p>Aliquam <i>scelerisque</i> sapien at tellus accumsan varius. Fusce facilisis ullamcorper dapibus. Aliquam dignissim</p> <ul> <li>gravida</li> <li>dui</li></ul>
  4. Barand's post in Using dropdown as it to update record was marked as the answer   
    Try $_POST['aid'] instead of $_GET.
  5. Barand's post in Nonomonotone mysql queries (Using NOT EXISTS) was marked as the answer   
    SELECT drinker
    FROM frequents
    WHERE bar IN (
    SELECT bar
    FROM frequents
    WHERE drinker = 'Joe'
    )
    GROUP BY drinker
    HAVING COUNT(bar)=1;

    +---------+
    | drinker |
    +---------+
    | Erik |
    | Herb |
    | Jesse |
    | Justin |
    | Mike |
    | Vince |
    +---------+
  6. Barand's post in Help for a PHP select script for my website was marked as the answer   
    Do the calculation in the query
    SELECT receptie.id , receptie.marca_tel , receptie.model , receptie.data_primire , articole_service.pret_sol , articole_service.pret_achizitie , articole_service.pret_sol - articole_service.pret_achizitie as profit -- add this FROM receptie inner join articole_service on receptie.id = articole_service.id_receptie then output $row['profit']
  7. Barand's post in Join was marked as the answer   
    Why the join to schedule t4?
     
    Why not just
    WHERE t1.schedule_date > '$today' AND t1.schedule_date < '$week' And you should be using a prepared statement instead of dropping values into the query.
  8. Barand's post in Join Multiple table was marked as the answer   
    I'd make a couple of changes
     
    move the WHERE condition to the JOIN condition for the answer table use a LEFT join for the txtanswer table SELECT question.*, question_options.*, answer.*,txtanswer.* FROM question LEFT JOIN question_options ON question.question_id = question_options.question_id LEFT JOIN answer ON answer.option_id = question_options.qtn_option_id AND answer.empid = 'EMP8969' LEFT JOIN txtanswer ON txtanswer.qtn_option_id= question_options.qtn_option_id And don't use *s in the SELECT, specify the required fields.
  9. Barand's post in the query is failing on a calculated field was marked as the answer   
    Using an aggregation function (SUM(), COUNT() etc) without specifying a GROUP BY column(s) will return a single row containing the aggregate for the whole selection. Values for the other non-aggregated selected columns are indeterminate (although usually from the first record in the set.
  10. Barand's post in Check database name before running a query in phpMyAdmin was marked as the answer   
    I can think of only three  ways
     
    Only ever have a single database on your server Execute the statement "USE databasename" before every query. In INSERT, UPDATE and DELETE queries always prefix the table names with dbname (ie dbname.tablename). No damage is done with SELECT queries I suppose a fourth way is
    be careful what you are doing
  11. Barand's post in IF in mysql WHERE clause was marked as the answer   
    Use a left join. If the is no matching se record then values from the se table will be null.
     
    Use explicit A JOIN B ON condition syntax and not the FROM A,B WHERE.
     
    You can use IFNULL() to check the status
    SELECT ua.id , ua.security_key , ua.creation , ua.last_login , ua.f_name , ua.l_name , ua.email , ua.title , ua.org_name , ua.org_size , ua.manage_num , ua.manage_direct_num , ua.phone , IFNULL(se.status, 'No match') as status FROM user_accts AS ua LEFT JOIN sessions AS se ON se.author_id = ua.id AND se.status < ? WHERE ( $search_filter >= ? AND $search_filter <= ? ) ORDER BY $search_filter DESC
  12. Barand's post in Ajax not working good was marked as the answer   
    IDs have to be unique within a document. If you have multiple objects, use classname instead.
  13. Barand's post in How do i put two int to one float like INT1,INT2 was marked as the answer   
    As this is a math help forum
    $x=1; $y=1; $z = $x + $y/10; echo $z;
  14. Barand's post in Help With Getting MySQL Script To Work was marked as the answer   
    Sounds like you you have "modified_date" column in both tables. You have to specify which one to use
     
     
    order_history.modified_date  
    or
    research_queue.modified_date
  15. Barand's post in Add date offset to current code was marked as the answer   
    Create a dateTime object for each timezone. Format the time with 'P' format.
    class Time_zone { private $regions = array( 'Africa' => DateTimeZone::AFRICA, 'America' => DateTimeZone::AMERICA, 'Antarctica' => DateTimeZone::ANTARCTICA, 'Artic' => DateTimeZone::ARCTIC, 'Asia' => DateTimeZone::ASIA, 'Atlantic' => DateTimeZone::ATLANTIC, 'Australia' => DateTimeZone::AUSTRALIA, 'Europe' => DateTimeZone::EUROPE, 'Indian' => DateTimeZone::INDIAN, 'Pacific' => DateTimeZone::PACIFIC ); public function generate_list() { $time_zones = array(); foreach ($this->regions as $name => $mask) { $time_zones[$name] = DateTimeZone::listIdentifiers($mask); } foreach ($time_zones as &$zones) { foreach ($zones as &$zstr) { $zn = new DateTimeZone($zstr); $t = new DateTime('now', $zn); $offset = $t->format('P'); $zstr = "[UTC/GMT $offset] $zstr"; } } return $time_zones; } }
  16. Barand's post in what is wrong with the query here? was marked as the answer   
    You haven't executed the prepared statement
  17. Barand's post in Get All Records From Table one Joining other table was marked as the answer   
    When you LEFT JOIN to a table then any conditions regarding its data cannot be in the WHERE clause, they must be in the ON conditions in the join.
    SELECT * FROM user as u LEFT OUTER JOIN event as e ON u.id = e.user_id AND e.event_date = '2016-07-05' AND e.event = 'Arrival' WHERE u.group_id = 6 GROUP BY u.id And don't use SELECT *. Specify the columns you want.
  18. Barand's post in delete all but latest 6 rows was marked as the answer   
    try something like this
    DELETE benchmarks FROM benchmarks LEFT JOIN ( SELECT id FROM benchmarks ORDER BY id desc LIMIT 6 ) lastsix USING (id) WHERE lastsix.id IS NULL;
  19. Barand's post in Help with sorting was marked as the answer   
    If you have the data in a database, sort it when you retrieve the date using an ORDER BY clause.
     
    Otherwise, don't use variables like $JOBDISPLAY10, $JOBDISPLAY11, use an array and sort the array.
     
    EG
    <?php $jobdisplay = [ 10 => [ 'title' => 'Job title 10', 'company' => 'Company name 10', 'country' => 'Somewhere', 'start' => '2016-05-01', 'finish' => 'present', 'duties' => 'description of duties ...' ], 11 => [ 'title' => 'Job title 11', 'company' => 'Company name 11', 'country' => 'Somewhere else', 'start' => '2014-01-01', 'finish' => '2014-12-31', 'duties' => 'another description of duties ...' ], 12 => [ 'title' => 'Job title 12', 'company' => 'Company name 12', 'country' => 'Somewhere', 'start' => '2016-04-01', 'finish' => 'present', 'duties' => 'yet another description of duties ...' ], 13 => [ 'title' => 'Job title 13', 'company' => 'Company name 13', 'country' => 'Somewhere other', 'start' => '2015-01-01', 'finish' => '2016-03-31', 'duties' => 'and yet another description of duties ...' ] ]; function customSort($a, $b) { $finA = $a['finish']=='present' ? date('Y-m-d') : $a['finish']; $finB = $b['finish']=='present' ? date('Y-m-d') : $b['finish']; $x = strcmp($finB, $finA); // if same finish dates, sort by start date if ($x==0) { return strcmp($b['start'], $a['start']); } return $x; } usort($jobdisplay, 'customSort'); echo '<pre>'; foreach ($jobdisplay as $j) { printf('%-20s | %-15s | %-15s<br>', $j['title'], $j['start'], $j['finish']); } echo '</pre>'; ? Gives
    Job title 10 | 2016-05-01 | present Job title 12 | 2016-04-01 | present Job title 13 | 2015-01-01 | 2016-03-31 Job title 11 | 2014-01-01 | 2014-12-31
  20. Barand's post in Variable sent in form was marked as the answer   
    Use a hidden field in the form for the goalie value
     
     form.php
    <?php     $goalie = 'someCalculatedValue';          // calculate the goalie value ?> <html> <body>     <form method="post" action="penalty.php">              <input type="hidden" name="goalie1" value="<?=$goalie?>">  <!-- store the goalie value in a hidden field -->          <input type="checkbox" name="angle" value="1">     <input type="submit" name="btnSubmit" value="Submit">     </form> </body> </html> penalty.php
    <?php $goalie = $_POST['goalie']; $angle = $_POST['angle'] ... ?>
  21. Barand's post in Table structure based on row count? was marked as the answer   
    You will need to process the query results differently if you are not using PDO. Try
    <?php $sqlsn = "SELECT system_name FROM tbl_sub_systems WHERE section=\"21a\""; $rssn = mssql_query( $sqlsn, $conn) or die ("Cannot execute"); // // read data into an array first // $rows = []; while ($row = mssql_fetch_row($rssn)) { $rows[] = $row[0]; } // // now chunk this array // $data = array_chunk($rows,2); echo "<table border=\"1\">"; foreach ($data as $row) { echo "<tr>"; if (count($row)==2) { foreach ($row as $n) echo "<td>".$n."</td>"; } else { echo "<td colspan=\"2\">".$row[0]."</td>"; } echo "</tr>"; } echo "</table>"; ?>
  22. Barand's post in Group By Year, Name, and Count from Two Fields on Same Row was marked as the answer   
    You need to use a UNION
    SELECT Year , Team , COUNT(*) as Played FROM ( SELECT Year, Away_Team as Team FROM table UNION SELECT Year, Home_Team as Team FROM table ) teams GROUP BY Year, Team
  23. Barand's post in how to fetch images from images table and display along with topic? was marked as the answer   
    SELECT topic_name , image_name FROM topic t LEFT JOIN image i ON i.tid = t.id I used LEFT join in case some topics have no image. If all topics have an image, use INNER JOIN, it's more efficient.
  24. Barand's post in Diffrence in days in two dates was marked as the answer   
    You need to use the DATEDIFF() function
     
    http://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html#function_datediff
     
    but the best way to do it is not to do it at all.
     
    Derived data should not be stored in your database. Calculate it when required instead of continually updating the table.
  25. Barand's post in how would i query these tables for availables for room reservation was marked as the answer   
    Should be. These are my reservations
    +----+---------+------------+------------+------+---------------------+ | id | room_id | checkin | checkout | ip | date | +----+---------+------------+------------+------+---------------------+ | 1 | 6 | 2016-03-01 | 2016-03-05 | NULL | 2016-03-10 18:08:16 | | 2 | 2 | 2016-03-02 | 2016-03-06 | NULL | 2016-03-08 15:12:34 | | 3 | 4 | 2016-03-03 | 2016-03-07 | NULL | 2016-03-10 18:08:16 | <-booked | 4 | 3 | 2016-03-06 | 2016-03-07 | NULL | 2016-03-10 18:08:16 | <-booked | 5 | 5 | 2016-03-07 | 2016-03-08 | NULL | 2016-03-08 16:07:57 | <-booked | 6 | 1 | 2016-03-08 | 2016-03-10 | NULL | 2016-03-10 18:08:16 | | 7 | 7 | 2016-03-08 | 2016-03-09 | NULL | 2016-03-08 15:12:34 | | 8 | 8 | 2016-03-09 | 2019-03-10 | NULL | 2016-03-08 15:12:34 | +----+---------+------------+------------+------+---------------------+ If I want to check in on the 6th and out on the 8th then the rooms indicated are already booked (rooms 3, 4 and 5)
    SELECT * FROM rooms WHERE room_id NOT IN ( SELECT room_id FROM reservations WHERE checkin < '2016-03-08' AND checkout > '2016-03-06' ); +---------+-----------+-------------+---------------+-------------+ | room_id | room_name | room_number | room_capacity | room_status | +---------+-----------+-------------+---------------+-------------+ | 1 | Deluxe | 101 | 2 | 1 | | 2 | Standard | 102 | 2 | 2 | rooms 3,4,5 | 6 | Executive | 203 | 1 | 1 | not available | 7 | Executive | 301 | 2 | 2 | | 8 | Standard | 302 | 2 | 3 | | 9 | Executive | 303 | 1 | 3 | | 10 | Suite | 401 | 6 | 5 | | 11 | Suite | 501 | 4 | 2 | +---------+-----------+-------------+---------------+-------------+
×
×
  • 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.