Jump to content

Search the Community

Showing results for tags 'php'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Welcome to PHP Freaks
    • Announcements
    • Introductions
  • PHP Coding
    • PHP Coding Help
    • Regex Help
    • Third Party Scripts
    • FAQ/Code Snippet Repository
  • SQL / Database
    • MySQL Help
    • PostgreSQL
    • Microsoft SQL - MSSQL
    • Other RDBMS and SQL dialects
  • Client Side
    • HTML Help
    • CSS Help
    • Javascript Help
    • Other
  • Applications and Frameworks
    • Applications
    • Frameworks
    • Other Libraries
  • Web Server Administration
    • PHP Installation and Configuration
    • Linux
    • Apache HTTP Server
    • Microsoft IIS
    • Other Web Server Software
  • Other
    • Application Design
    • Other Programming Languages
    • Editor Help (Dreamweaver, Zend, etc)
    • Website Critique
    • Beta Test Your Stuff!
  • Freelance, Contracts, Employment, etc.
    • Services Offered
    • Job Offerings
  • General Discussion
    • PHPFreaks.com Website Feedback
    • Miscellaneous

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


AIM


MSN


Website URL


ICQ


Yahoo


Jabber


Skype


Location


Interests


Age


Donation Link

  1. I am trying to update the status if all the rows value is set to same value. my query like this $ord = "SELECT * FROM plitems WHERE pur_order_id='".$order_id."'"; $ord1 = mysqli_query($con, $ord); while($ord2 = mysqli_fetch_array($ord1)) { if(($ord2['invoice_status']=='Invoiced')) { $m5 = mysqli_query($con, "UPDATE pur_orders SET status='Invoiced' WHERE pur_order_id='".$order_id."'"); } else { $m5 = mysqli_query($con, "UPDATE pur_orders SET status='Partial' WHERE pur_order_id='".$order_id."'"); } But here i have 2 line items in plitems table, 1st line item status is Invoiced and 2nd line item status is Partial, But still it is setting pur_orders status as Invoiced instead of Partial I tried doing like this UPDATE pur_orders AS p CROSS JOIN ( SELECT MAX(invoice_status) AS invoice_status FROM plitems WHERE pur_order_id = '".$order_id."' HAVING COUNT(DISTINCT invoice_status) = 1) AS t SET p.status = t.invoice_status WHERE p.pur_order_id = '".$order_id."' Still its noy working
  2. Note: This site is only local and used as a calculator, so to speak, and I have no concerns about data structures or injection at this time, merely the formula in this loop. I have a working php loop involving an html table that houses test values. I am attaching a screenshot of the table, but it pulls data from a database table for 4 test attributes per 8 tests. In other words, there are 8 test columns and each column is filled with 4 test variables from the database. The 5th row calculates a percentage from a formula and after all of this is done for the 8 tests, there is an overall percentage of the 8 average values. This makes more sense looking at the screenshot, but the final row is made up from the formula. This works perfectly, except the new files we're using can have less than 8 tests, so my old formula basing the answer off of 8 tests is inaccurate now. I'm looking for a fairly quick and dirty solution for the time being that will just count how many columns actually contain data. Here is the code for the table, and the php loop data is near the bottom. Basically, I want a better way to use a count in my form loop as well as my average where they are currently using 8. <table style="width:100%; border:none; border-collapse:collapse;"> <tr style="border:none;"> <th style="border:none; text-align: left;" >Meter Test</th> <th style="border:none;">Test 1</th> <th style="border:none;">Test 2</th> <th style="border:none;">Test 3</th> <th style="border:none;">Test 4</th> <th style="border:none;">Test 5</th> <th style="border:none;">Test 6</th> <th style="border:none;">Test 7</th> <th style="border:none;">Test 8</th> </tr> <tr style="border: none;" > <td style="border:none; text-align: left;">Test Rate GPM: </td> <td><? echo $row['test1TestRateGPM'];?> </td> <td><? echo $row['test2TestRateGPM'];?> </td> <td><? echo $row['test3TestRateGPM'];?> </td> <td><? echo $row['test4TestRateGPM'];?> </td> <td><? echo $row['test5TestRateGPM'];?> </td> <td><? echo $row['test6TestRateGPM'];?> </td> <td><? echo $row['test7TestRateGPM'];?> </td> <td><? echo $row['test8TestRateGPM'];?> </td> </tr> <tr> <td style="border:none; text-align: left;">Meter Volume: </td> <td><? echo $row['test1MeterVol'];?> </td> <td><? echo $row['test2MeterVol'];?> </td> <td><? echo $row['test3MeterVol'];?> </td> <td><? echo $row['test4MeterVol'];?> </td> <td><? echo $row['test5MeterVol'];?> </td> <td><? echo $row['test6MeterVol'];?> </td> <td><? echo $row['test7MeterVol'];?> </td> <td><? echo $row['test8MeterVol'];?> </td> </tr> <tr> <td style="border:none; text-align: left;">Tester Volume: </td> <td><? echo $row['test1TesterVol'];?> </td> <td><? echo $row['test2TesterVol'];?> </td> <td><? echo $row['test3TesterVol'];?> </td> <td><? echo $row['test4TesterVol'];?> </td> <td><? echo $row['test5TesterVol'];?> </td> <td><? echo $row['test6TesterVol'];?> </td> <td><? echo $row['test7TesterVol'];?> </td> <td><? echo $row['test8TesterVol'];?> </td> </tr> <tr> <td style="border:none; text-align: left;">Tester Accuracy: </td> <td><? echo $row['test1Accuracy'];?>% </td> <td><? echo $row['test2Accuracy'];?>% </td> <td><? echo $row['test3Accuracy'];?>% </td> <td><? echo $row['test4Accuracy'];?>% </td> <td><? echo $row['test5Accuracy'];?>% </td> <td><? echo $row['test6Accuracy'];?>% </td> <td><? echo $row['test7Accuracy'];?>% </td> <td><? echo $row['test8Accuracy'];?>% </td> <td style="border:none;">Overall</td> </tr> <tr> <td style="border:none; text-align: left;">Corrected Accuracy: </td> //here starts the loop within the table cell <?php $sum=0; for($i=1; $i<=8; $i++){ if($row["test".$i."TesterVol"] == 0){ $row["test".$i."TesterVol"] = 0.001; } $testFormA = $row["test".$i."MeterVol"] / $row["test".$i."TesterVol"]; $testFormB = $testFormA * $row["test".$i."Accuracy"]; $testFinalForm = $testFormB; $sum += $testFinalForm; ?> <td><?php echo round($testFinalForm,3) ?>%</td> <?php } $average = $sum / 8; ?> <td><?php echo round($average,5)?>% </td> </tr> </table>
  3. I have a page of html tables that are filled by database values through PHP, and there are no problems there. However, I have an issue on one of the tables. I have a pricing table, attached below. The $575 is currently filled from a field in the database that is set from a CSV upload, but the new CSV template is not doing this because it's missing the price field. This is the SQL statement that I'm using in the database, since the price is based off of meterSize, meterType and workOrderType2: UPDATE staging INNER JOIN pricing ON staging.meterType = pricing.meterType AND staging.meterSize = pricing.meterSize AND staging.workOrderType2 = pricing.workOrderType SET staging.onsiteTestSurveyPrice = pricing.price This works, but only with the original template, so I'm looking into doing this strictly in PHP with the table/row values, if possible. An example of what I'm looking for, using the html table and PHP: If $row['meterSize'] contains 3", $row['meterType'] contains COMPOUND and $row['workOrderType2'] contains ONSITE SURVEY AND TEST then $575 should go in <td><? echo $row['onsiteSurveyTestCost'];?> </td> Here's the code for those 3 conditional table rows: <tr style="border: none;"> <td style="border: none; text-align: left;">Meter Type:</td> <td style="border: none; text-align: right;"><? echo $row['meterType'];?> </td> </tr> <tr style="border: none;"> <td style="border: none; text-align: left;">Meter Size:</td> <td style="border: none; text-align: right;"><? echo $row['meterSize'];?> </td> </tr> <tr style="border: none;"> <td style="border: none; text-align: left;">Service Preformed:</td> <td style="border: none; text-align: right;"><? echo $row['workOrderType2'];?> </td> </tr> Is there a way to do this? I have multiple prices that are based on multiple conditions, but If I could figure out how to do this once then I can alter the values accordingly. Basically I want to mirror the db/SQL statement only with strictly PHP and the values in each table row. How can I do that, if possible?
  4. I have a search function that works perfectly by matching database values and displaying the records on my page. However, I want to make my serial number field in the output a "href " link to open a new page that uses the serial number in the code. I had it working previously with dropdowns but I'm trying to make it work with the search function. Here's the working code: $search = $connect->real_escape_string($_POST['search']); $resultSet = $connect->query("SELECT * FROM staging WHERE serialNumber LIKE '%$search%'"); if($resultSet->num_rows > 0){ while($rows = $resultSet->fetch_assoc()) { $date = $rows['date']; $utility = $rows['utility']; $address = $rows['address']; $sn = $rows['serialNumber']; $output .= "Date: $date <br />Utility: $utility<br />Address: $address<br />Serial Number: $sn<br /><br />"; } }else{ $output = "No Results"; } } Now, when I try to add the link to the serial number variable, like this: $output .= "Date: $date <br />Utility: $utility<br />Address: $address<br />Serial Number: <a href=\\'/dashboard-display?id='.$row['serialNumber'].''>$sn</a><br /><br />"; The page doesn't load. I'm using a PHP reference but I think I may have syntax wrong in the href section. How can I get this to display the info with the link tag around $sn?
  5. I have an html table with some numerical values in each data row. There are 8 columns representing 8 tests. At the bottom of each column is a corrected accuracy cell which represents a math formula from the three rows above it. Basically, it divides the meter volume by the tester volume, multiplies that result by the tester accuracy, and divides that result by 100. I have attempted something with the following code: <table style="width:100%; border:none; border-collapse:collapse;"> <? php $test1FormA = $row['test1MeterVol'] / $row['test1TesterVol']; $test1FormB = $test1FormA * $row['test1Accuracy']; $test1FinalForm = $test1FormB / 100; ?> <tr> <td style="border:none; text-align: left;">Meter Volume: </td> <td><? echo $row['test1MeterVol'];?> </td> </tr> <tr> <td style="border:none; text-align: left;">Tester Volume: </td> <td><? echo $row['test1TesterVol'];?> </td> </tr> <tr> <td style="border:none; text-align: left;">Tester Accuracy: </td> <td><? echo $row['test1Accuracy'];?> </td> </tr> <tr> <td style="border:none; text-align: left;">Corrected Accuracy: </td> <td><? echo $test1FinalForm;?> </td> </tr> </table> However, my page no longer loads with this so I'm assuming I'm doing something wrong with my variables in the top, maybe with syntax. I just need it to take the values for those three data rows and use them in the formulas so that I can put the final result in the corrected accuracy field.
  6. I have a page that displays about 12 tables that are filled from database values. These values correspond with a single record but some of these fields are based off of queries I'm making so that if something's wrong in the query, it will display red text. I'm only doing this for a few different fields but I want an option to edit and fix those fields and then save them to the database with an UPDATE. Basically, I don't want to wrap the whole page in a form since only a few fields in a few of the tables will need to be editable. Is there a way to do this so that I can edit only the few fields that need to be fixed? Here's a table as example: <div class="testResults" style=" width: 30%; clear:both; float: left;"> <!--Test Results Table--> <table style="width: 100%;"> <tr> <th colspan="2">Test Results</th> </tr> <tr> <td style="text-align: left;">Tested Within AWWA Standards</td> <td><? echo $row['standards'];?> </td> </tr> <tr> <td style="text-align: left;">Meter Failed on Low Side</td> <td><? echo $row['lowFail'];?> </td> </tr> <tr> <td style="text-align: left;">Meter Failed on High Side</td> <td><? echo $row['highFail'];?> </td> </tr> <tr> <td style="text-align: left;">Meter Failed Low and High Side</td> <td><? echo $row['bothFail'];?> </td> </tr> <tr> <td style="text-align: left;">Unable To Test</td> <td><? echo $row['unableTest'];?> </td> </tr> </table> So, for example, say I want to edit the data for just standards row and lowFail row. I tried this but it didn't work: <td><input type="text" name="test8TRGPM" value="<? echo $row['test8TestRateGPM'];?>"> </td> I know once this is done I'll need to have a submit button that attaches to a query to update with the input name, but right NOw i'm trying to find the best way to edit. Is it easiest to just wrap the whole page in a form and just create the few inputs where I need?
  7. Hey all, I'm really new to PHP and this problem has me at a loss - I've an Angular app that calls my PHP on the server to add a new entry in the database, but it doesn't ever get added. I've been trying to use a transformRequest to get what's sent to the PHP formatted correctly but I'm not too sure even that's correct. I'm getting a weird response from the PHP too - it gives me the status OK (which the PHP should only get to if it's inserted), but with an object that has the Err and its error message in it. I really could use a pointer on this one..!! my addUser.php: <?php include 'DB.php'; $db = new DB(); $tblName = 'members'; if(!empty($_POST['obj'])){ $userData = array( 'name' => $_POST['obj']['name'], 'email' => $_POST['obj']['email'], 'phone' => $_POST['obj']['phone'], 'group' => $_POST['obj']['group'] ); $insert = $db->insert($tblName,$userData); if($insert){ $data['obj'] = $insert; $data['status'] = 'OK'; $data['msg'] = 'User data has been added successfully.'; }else{ $data['status'] = 'ERR'; $data['msg'] = 'Some problem occurred, please try again.'; } }else{ $data['status'] = 'ERR'; $data['msg'] = 'Some problem occurred, please try again.'; } echo json_encode($data); exit; my app.js call: $scope.addUser = function(){ var obj = $scope.tempUserData; $http({ method: 'POST', url: 'http://localhost:8080/sns/addUser.php', data: obj, headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, transformRequest:function(data) { var str =[]; for(var p in data){ str.push(encodeURIComponent(p) +"=" + encodeURIComponent(data[p])) } return str.join("&"); } }).then(function(response){ if(response.status == 'OK'){ $scope.users.push({ id:response.data.id, name:response.data.name, email:response.data.email, phone:response.data.phone, group:response.data.group }); } $scope.tempUserData = {}; }); }; Screen shot of the console with the OK status and the response object with the err message:
  8. I have a form, populated by an uploaded CSV, and upon submit it saves to my database staging/temp table. However, it's only saving the first 4 of 7 rows. The form: $file = $_FILES["file"]["tmp_name"]; $handle = fopen($file, "r"); $maxPreviewRows = PHP_INT_MAX; // this will be ~2 billion on 32-bit system, or ~9 quintillion on 64-bit system $hasHeaderRow = true; echo "<form method='post' action='/form-submit' >"; echo '<table>'; /*WE WILL NEED TO QA CONDITIONS AND HIGHLIGHT IN RED HERE. ALSO NEED BORDER STYLINGS*/ if ($hasHeaderRow) { $headerRow = fgetcsv($handle); echo '<thead><tr>'; foreach($headerRow as $value) { echo "<th>$value</th>"; } echo '</tr></thead>'; } echo '<tbody>'; $rowCount = 0; while ($row = fgetcsv($handle)) { $colCount = 0; echo '<tr>'; foreach($row as $value) { echo "<td><input name='row[".$rowCount."][".$colCount."]' type='text' value='$value' /></td>"; $colCount++; } echo '</tr>'; if (++$rowCount > $maxPreviewRows) { break; } } echo '</tbody></table>'; echo "<input type='submit' name='confirm' value='confirm'>"; echo '</form>'; } The submission: foreach ($_POST['row'] as $rowValue) { if( is_array($rowValue) && count($rowValue) > 0 ) { $sqlFull = "INSERT INTO staging VALUES( DEFAULT, ". substr( str_repeat ( '?, ', count($rowValue) ), 0, -2 ) .")"; if( !$stmt = $connect->prepare($sqlFull) ) { echo "Prepare failed: (" . $connect->errno . ") " . $connect->error; } $stmt->bind_param( str_repeat ( 's', count($rowValue) ), ...$rowValue ); $stmt->execute(); } } So it's definitely working but for some reason it's stopping on the fourth row every time. I edit the first field of each row each time and when I check my file dashboard I'll see only the first 4 from each submission. When I print_r($_POST) I get [0]array through [4]array, but only 4 rows actually submit to the database out of the 7 on the form. ANy ideas why this is ending on the 4th row?
  9. I have a form that is populated by a CSV file, always 229 fields but anywhere up to 10 or 12 rows. The form populates correctly, but I'm having issues saving it all. The loop seems like it's missing something or maybe something is mismatched. Here is the form code: **page-confirm.php** $connect = mysqli_connect($server, $user, $pw, $db); if ($connect->connect_error) { die("Connection failed: " . $conn->connect_error); }else{ //echo'success!'; } if(isset($_POST['preview'])) { ini_set('auto_detect_line_endings', true); $file = $_FILES["file"]["tmp_name"]; $handle = fopen($file, "r"); $maxPreviewRows = PHP_INT_MAX; // this will be ~2 billion on 32-bit system, or ~9 quintillion on 64-bit system $hasHeaderRow = true; echo "<form method='post' action='/form-submit' >"; echo '<table>'; if ($hasHeaderRow) { $headerRow = fgetcsv($handle); echo '<thead><tr>'; foreach($headerRow as $value) { echo "<th>$value</th>"; } echo '</tr></thead>'; } echo '<tbody>'; $rowCount = 0; while ($row = fgetcsv($handle)) { $colCount = 0; echo '<tr>'; foreach($row as $value) { echo "<td><input name='row[".$rowCount."][".$colCount."]' type='text' value='$value' /></td>"; $colCount++; } echo '</tr>'; if (++$rowCount > $maxPreviewRows) { break; } } echo '</tbody></table>'; echo "<input type='submit' name='confirm' value='confirm'>"; echo '</form>'; } ?> Here's the code for the submission page with the insert loop: **page-formsubmit.php** $connect = mysqli_connect($server, $user, $pw, $db); if ($connect->connect_error) { die("Connection failed: " . $connect->connect_error); }else{ echo'success!'; } //var_dump($_POST); $sql = $inserts = $binds = []; foreach ($_POST['row'] as $rowValue){ if(is_array($rowValue) && count($rowValue) > 0 ){ foreach($rowValue as $rowData){ /*** * Stupidly, I had missed that row contains arrays * rather than values, so you need a foreach, inside the * foreach as so: ***/ foreach ($rowData as $columnKey => $columnValue){ //$columnValue will now equal $value //$columnKey will be the column number (1...229) /*** * This is the area you can construct your SQL query values. * db_connection is assumed to be setup. ***/ $sql[] = "`column_name_".$columnKey."`"; $binder = "value".$columnKey; $inserts[] = ":".$binder; $binds[$binder] = $columnValue; unset($binder); } unset($columnKey,$columnValue); } unset($rowData); /*** * This is the area the SQL query is set on a per row basis ***/ $sqlFull = "INSERT INTO staging (".implode(",",$sql).") VALUES(".implode(",",$inserts).")"; $connect->prepare($sqlFull); /*** * EDIT: bind param MUST come after the prepare call ***/ foreach($binds as $bindKey=>$bindRow){ $connect->bind_param(":".$bindKey, $bindRow); } unset($bindKey,$bindRow); var_dump($binds); $sql = $inserts = $binds = []; //reset arrays for next row iteration. /*** * db_connection then executes the statement constructed above ***/ $connect->execute(); } //close if. } unset($rowValue); ?> You can see in the submission page where I comment out the var_dump for post data. When it's active, it prints out this for the array: success!array(1) { ["row"]=> array(5) { [0]=> array(229) and continues printing the 229 elements for all 7 rows. There is something that's not quite working in this loop because even a debug statement within the loop to print the query won't work. I just need to make sure it iterates all 229 fields of every row to the end of the form and puts them into my staging table. My staging table, which is temporary, has 229 named fields in the exact order as the CSV, so I shouldn't have to declare each field I don't believe.
  10. The server is AWS linux apache running PHP, with me the sole developer as owner ec2-user. Objective: To upload files from the app user's browser (handled) to a temporary directory (/test_sub below) within the /html tree, then for security purposes, to have PHP move this file to outside the /html tree (/private_sub below) where it will remain unable to be read, written to or deleted except when the app requires PHP to do this. The app needs PHP to make any directory permission changes via chmod, and perhaps owner changes and group changes (preferably not the last two). Here is the directory structure and SUDO output to accomplish this: /var drwxr-xr-x 21 root root 4096 Dec 11 19:23 /var /www drwxrwsr-x 11 root www 4096 May 1 16:50 /var/www : /html drwxrwsr-x 5 root www 4096 Apr 25 19:51 /var/www/html : : /AWS_s drwxrwsr-x 8 ec2-user www 4096 May 1 16:54 /var/www/html/AWS_s : : : /test_dir drwxrwsrwx 3 ec2-user www 4096 May 1 16:52 /var/www/html/AWS_s/test_dir : : : : /test_sub drwxrwsrwx 4 ec2-user www 4096 May 1 23:14 /var/www/html/AWS_s/test_dir/test_sub : : : : : /test_file.txt -rw-r--r-- 1 ec2-user www 13 Apr 24 13:36 /var/www/html/AWS_s/test_dir/test_sub/test_file.txt : : /private_dir drwxrwxrwx 3 ec2-user www 4096 May 1 21:02 /var/www/private_dir : : /private_sub drwxrwxrwx 2 ec2-user www 4096 May 1 21:19 /var/www/private_dir/private_sub : : : /moved_file.txt -rw-r--r-- 1 ec2-user ec2-user 13 Apr 24 13:36 /var/www/private_dir/private_sub/moved_file.txt : : : /copied_file.txt -rw-r--r-- 1 apache apache 13 May 1 23:49 /var/www/private_dir/private_sub/copied_file.txt : : /private_sub2 drwxr-xr-x 2 apache apache 4096 May 2 00:18 /var/www/private_dir/private_sub2 The PHP scripts are run in the /test_sub directory. The default permissions for directories are drwx rws r-x 2775. Only when the /private directories are both set to 777 and the setgid is unset will they allow files to be written to them. When the two /test directories are set to the default of 775 with the setgid set, they allow files to be copied from them. However, when the move (rename) script is run, the delete function of the copy and delete process throws an error unless both /test directories are reset to 777 clearly allowing files to be deleted. I'm concerned that the /test and /private directories need to be 777, opening them up to bad actors. I've spent days researching and testing many options but have failed to resolve this. Clearly, I'm missing something fundamental here My questions: 1. Why do the two /test and the two /private directories need to have the 'other' set to rwx? I read that PHP uses group www and therefore that group www should allow the writes in the /private directories and the reads and deletes in the /test directories. 2. Why does copied_file.txt have owner:group as apache:apache instead of ec2-user:www and likewise when I mkdir /private_sub2 in PHP? 3. Why does moved_file.txt have owner:group ec2-user:ec2-user instead of ec2-user:www? 4. Why did PHP mkdir create the non-default permission 0755 in /private_sub2? 5. Why, using PHP, do chown, chgrp and chmod fail to make changes to /private_sub/moved_file.txt?
  11. Hi, i'm recently had to add a new value to our product database called supplier_id, which gets called from the supplier table. Now when i'm trying to add a new product, it looks up the supplier name, but i'm not sure where/how to add the supplier_id so that it gets past to the POST, if someone could help me would much appreciate it. Please see attached file. Thanks, MsKazza <?php include('header.php'); ?> <style> table { width: 600px; } th { height: 50px; } td { height: 30px; vertical-align: middle; } </style> </head> <body> <?php include('navbar.php'); if (isset($_POST['submit'])) { $product_code = $_POST['product_code']; $product_name = $_POST['product_name']; $supplier_id = $_POST['supplier_id']; $supplier = $_POST['supplier']; $category = $_POST['category']; $sub_category = $_POST['sub_category']; $category2 = $_POST['category2']; $sub_category2 = $_POST['sub_category2']; $sql = "SELECT * FROM sub_categories WHERE id = '$sub_category'"; $subcat_result = $con->query($sql); while ($row=mysqli_fetch_array($subcat_result)) { $subcat_name = $row['subcat_name']; } $sub_category1 = preg_replace('/[^a-zA-Z0-9_.]/', '-', $subcat_name); $product_name1 = preg_replace('/[^a-zA-Z0-9_.]/', '-', $product_name); $slug = $sub_category1 . "/" . $product_name1; $slug = strtolower($slug); // Check connection if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } // Perform queries mysqli_query($con,"INSERT INTO products (product_code, slug, supplier_id, supplier, category, sub_category, category2, sub_category2,product_name) VALUES ('$product_code', '$slug', '$supplier_id', '$supplier', '$category', '$sub_category', '$category2', '$sub_category2', '$product_name')"); // Perform queries mysqli_query($con,"INSERT INTO images (product_code) VALUES ('$product_code')"); ?> <script> location.replace("products.php"); </script> <? mysqli_close($con); } else { ?> <script language="javascript" type="text/javascript"> function getXMLHTTP() { //fuction to return the xml http object var xmlhttp=false; try{ xmlhttp=new XMLHttpRequest(); } catch(e) { try{ xmlhttp= new ActiveXObject("Microsoft.XMLHTTP"); } catch(e){ try{ xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e1){ xmlhttp=false; } } } return xmlhttp; } function getSubcat(categoryId) { var strURL="findsubcat.php?category="+categoryId; var req = getXMLHTTP(); if (req) { req.onreadystatechange = function() { if (req.readyState == 4) { // only if "OK" if (req.status == 200) { document.getElementById('subcatdiv').innerHTML=req.responseText; } else { alert("Problem while using XMLHTTP:\n" + req.statusText); } } } req.open("GET", strURL, true); req.send(null); } } </script> <form method="post" action="" name="addproduct"> <?php $sql = "SELECT * FROM categories ORDER BY cat_name ASC"; $result = $con->query($sql); ?> <div class="container-fluid text-center"> <div class="row content"> <div class="col-sm-12 text-left"> <br /> <h1>Add New Product</h1> <br /> <table> <tr><td>Product Code : </td><td><input type="text" name="product_code" ></td></tr> <tr><td>Product Name : </td><td><input type="text" name="product_name" size="50px"></td></tr> <tr><td><div class="form-group"> <label for="name">Supplier</label><a href="#" style="font-size:12px"> (Edit)</a></td> <td><label class="input-group p-custom-arrow"> <select id="supplier" name="supplier" value="<?php echo $product['supplier']; ?>" class="form-control"> <option class="p-select-default" value="">Select Supplier</option> <?php $sql=mysqli_query($con,"select * from supplier ORDER BY supplier_name ASC"); while($row=mysqli_fetch_array($sql)) { ?> <option value="<?php echo $row['folder']; ?>" <?php if ($product['supplier'] == $row['folder']) echo ' selected="selected"' ?>><?php echo $row['supplier_name']; ?></option> <?php } ?> </select> </label> </div><br /></td></tr><!-- End: form group --> <tr><td style="width:150px;"> Category : </span></td><td><select name="category" onChange="getSubcat(this.value)"> <option value="">Select Category</option> <?php while ($row=mysqli_fetch_array($result)) { ?> <option value=<?php echo $row['id']?>><?php echo $row['cat_name']?></option> <?php } ?> </select> </td></tr> <tr><td style="width:150px;">Sub Category : </span></td><td><div id="subcatdiv"><select name="sub_category" > <option>Select Subcategory</option> </select></div><br /> </td></tr> </table><br /> <input type="submit" value="submit" name="submit"> </form> </div> </div> </div> </div> <?php } ?> <?php include('footer.php'); ?> </body> </html> addproduct.php
  12. I have an AWS EC2 linux instance running a PHP app for use by anyone from their browser, and developed by myself as owner. The directory tree is: /var /var/www /var/www/html /var/www/html/AWS_s /var/www/html/AWS_s/nm-app /var/www/html/AWS_s/cr-app The owner, groups & permissions are: drwxrwsr-x 10 root www 4096 Dec 25 01:03 /var/www drwxrwsr-x 5 root www 4096 Feb 26 22:42 /var/www/html drwxr-xr-x 6 ec2-user www 4096 Feb 25 22:14 /var/www/html/AWS_s drwxr-xr-x 7 ec2-user www 4096 Feb 24 20:29 /var/www/html/AWS_s/nm-app drwxr-xr-x 4 ec2-user ec2-user 4096 Apr 9 19:05 /var/www/html/AWS_s/cr-app Any ideas as to why /cr-app was automatically given the group ec2-user rather than the same group as nm-app which is www? I have not changed any groups.
  13. is it possible to call a static function inside another static function within the same class holding them both like so: public static function checkFile(){//just check if good file before upload to db $result = false; $name = $this->getorigName(); $size = $this-> get_file_size(); $ext = $this->getExtension($name);
  14. I've been searching for sources to help me understand Linux Apache permissions from the PHP programmer's perspective getting only the rwx and 755 type descriptions and processes in abundance. What I need is a *source* that I can learn Linux permissions from the perspective of the *PHP programmer*, not for the Linux admin who has the box locally or remotely. I'd like to know, for example, when to give each of the three users which permissions for my PHP app's directories, data files and PHP scripts on the basis of heightening security.
  15. Hi I have a problem as title says with form resubmission. I think all know what i mean. When i process form, i redirect to another page, and if i hit back button in browser it give me a page with "Confirm form resubmission", and if i press F5 i got pop-up window and it process form again even if i unset($_POST); data. <?php include '../config.php'; // process form if (isset($_POST['submit'])) { $username = trim($_POST['username']); $password = trim($_POST['password']); $email = trim($_POST['email']); // check if username is in use if ($users->user_exists($username) === true) { $error = '<div class="alert alert-warning alert-dismissible fade-in"> <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> Username in use, please choose another one. </div>'; // check if email alrady registered } elseif ($users->email_exists($email) === true) { $error = '<div class="alert alert-warning alert-dismissible fade-in"> <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> Email in use, please choose another one. </div>'; } else { $error = "success"; // unset post variables unset($_POST); header("refresh:5;url=users.php"); exit(); } } ?>
  16. HI! I work in the talent team at the Zoopla Property Group, the fastest growing property services business in the UK. We are seeking a Lead PHP Developer to play a hands on player coach role within a development team for a very exciting product within our Property Software Group business. You will have very strong OOP principles and previous experience playing a senior role in a development team. Our product teams are small, agile and can be likened to start up incubator type environments, with the added comfort of a large PLC's backing! We would need the successful candidate to work out of our London office 2 days a week, with the rest being from the comfort of your own home Please apply via the following link! https://zpgcareers.zpg.co.uk/vacancyView.php?requirementId=1278
  17. I am working on a item helper script. It consists of users selecting from multiple radio buttons for multiple items and updating them all at once. My question is the code below is used for each item the user has (used in "while ($stmt->fetch()){" statement") . With the way I have it set up, how will I make it so it updates the correct item for the right option? Also. how do I grab the bracket variable use_item[$id] ? <tr width=\"100%\"> <td> <p>$name</p> </td> <td> <center><input name=\"use_item[$id]\" type=\"radio\" id=\"use_item[$id]\" value=\"keep\"$check_keep></center> </td> <td width=\"50\"> <center><input name=\"use_item[$id]\" type=\"radio\" id=\"use_item[$id]\" value=\"stock\"$check_stock></center> </td> <td width=\"50\"> <center><input name=\"use_item[$id]\" type=\"radio\" id=\"use_item[$id]\" value=\"discard\"$check_discard></center> </td> <td width=\"50\"> <center><input name=\"use_item[$id]\" type=\"radio\" id=\"use_item[$id]\" value=\"donate\"$check_donate></center> </td> <td width=\"50\"> <center><input name=\"use_item[$id]\" type=\"radio\" id=\"use_item[$id]\" value=\"gallery\"$check_gallery></center> </td> <td width=\"50\"> <center><input name=\"use_item[$id]\" type=\"radio\" id=\"use_item[$id]\" value=\"gallery3\"$check_gallery3></center> </td> <td width=\"50\"> <center><input name=\"use_item[$id]\" type=\"radio\" id=\"use_item[$id]\" value=\"deposit\"$check_deposit></center> </td> </tr> The form takes them to the page that updates using the information they choose from above. A small snippet below. if(isset($_POST['submit'])){ $use = $_POST['use_item']; foreach($use as $use_item){ $item = $_POST['item_id']; /////// UPDATING MYSQLI INSERTED HERE ////////////////// } } Thank you for your time. Hopefully I posted enough information for your help.
  18. Hi I have a issue with function for searching a title of a blog. I have a title in table "My blog 123", and if i try to search for "my blog" i don't get any results so its case sensitive, but when try to search "My blog" or "My" i got results. Even with searching "blog" i don't get any result, like it try to search from first letter only. So how can i fix this to search if i type "blog" or "my blog" to give me results with all titles with "blog" or "Blog" in title ignoring uppercase or lowercase letters or position in sentence. if (isset($_POST['submit'])) { $term = $_POST['search']; $stmt = $dbh->prepare("SELECT * FROM blog WHERE heading LIKE :term"); $stmt->bindValue(':term', '%'.$term.'%', PDO::PARAM_STR); $stmt->execute(); $data = $stmt->fetchAll(PDO::FETCH_ASSOC); print_r($data); }
  19. I've looked around and it seems regx's are used to validate file specifications in php. Is that true? I was hoping someone had a filter or something. Thanks.
  20. somebody have an example or reference for PHP code that make login to a website and handle with the redirection after? thanks!
  21. new to the work with PHPSimpleXML I want to filter the data to get the nodes with special category. Here is sample of the OSM data I want to get the whole schools within an area. The first script runs well - but now i want to refine the search and add more tags. Finally i want to store all into the MySQL-db So we need to make some XML parsing with PHP: The following is a little OSM Overpass API example with PHP SimpleXML I've compiled it because I love OSM, so let's show some useful examples. The first part shows how we can query an Overpass Endpoint with standard PHP. we do not need that part if we have already saved the data on the harddisk. <?php /** * OSM Overpass API with PHP SimpleXML / XPath * * PHP Version: 5.4 - Can be back-ported to 5.3 by using 5.3 Array-Syntax (not PHP 5.4's square brackets) */ // // 1.) Query an OSM Overpass API Endpoint // $query = 'node ["amenity"~".*"] (38.415938460513274,16.06338500976562,39.52205163048525,17.51220703125); out;'; $context = stream_context_create(['http' => [ 'method' => 'POST', 'header' => ['Content-Type: application/x-www-form-urlencoded'], 'content' => 'data=' . urlencode($query), ]]); # please do not stress this service, this example is for demonstration purposes only. $endpoint = 'http://overpass-api.de/api/interpreter'; libxml_set_streams_context($context); $start = microtime(true); $result = simplexml_load_file($endpoint); printf("Query returned %2\$d node(s) and took %1\$.5f seconds.\n\n", microtime(true) - $start, count($result->node)); // // 2.) Work with the XML Result // # get all school nodes with xpath $xpath = '//node[tag[@k = "amenity" and @v = "school"]]'; $schools = $result->xpath($xpath); printf("%d School(s) found:\n", count($schools)); foreach ($schools as $index => $school) { # Get the name of the school (if any), again with xpath list($name) = $school->xpath('tag[@k = "name"]/@v') + ['(unnamed)']; printf("#%02d: ID:%' -10s [%s,%s] %s\n", $index, $school['id'], $school['lat'], $school['lon'], $name); } ?> For you the second part is more interesting. That is querying the XML data you have already. This is most easily done with xpath, the used PHP XML library is based on libxml which supports XPath 1.0 which covers the various querying needs very well. The following example lists all schools and tries to obtain their names as well. I have not covered translations yet because my sample data didn't have those, but you can also look for all kind of names including translations and just prefer a specific one): The key point here are the xpath queries. Two are used, the first one to get the nodes that have certain tags. I think this is the most interesting one for you: //node[tag[@k = "amenity" and @v = "school"]] This line says: Give me all node elements that have a tag element inside which has the k attribute value "amenity" and the v attribute value "school". This is the condition you have to filter out those nodes that are tagged with amenity school. Further on xpath is used again, now relative to those school nodes to see if there is a name and if so to fetch it: tag[@k = "name"]/@v' This line says: Relative to the current node, give me the v attribute from a tag element that as the k attribute value "name". As you can see, some parts are again similar to the line before. I think you can both adopt them to your needs. Because not all school nodes have a name, a default string is provided for display purposes by adding it to the (then empty) result array: list($name) = $school->xpath('tag[@k = "name"]/@v') + ['(unnamed)']; ^^^^^^^^^^^^^^^ Provide Default Value so far so good: **note**. i need to have the adress-data, of the school with cf Key:addr - OpenStreetMap Wiki and even more important cf Key:contact - OpenStreetMap Wiki btw. here my results for that code-example: martin@linux-70ce:~/php> martin@linux-70ce:~/php> php osm1.php Query returned 1691 node(s) and took 3.34569 seconds. 23 School(s) found: #00: ID:332534486 [39.5017565,16.2721899] Scuola Primaria #01: ID:1428094278 [39.3320912,16.1862820] (unnamed) #02: ID:1822746784 [38.9075566,16.5776597] (unnamed) #03: ID:1822755951 [38.9120272,16.5713431] (unnamed) #04: ID:1903859699 [38.6830409,16.5522243] Liceo Scientifico Statale A. Guarasci #05: ID:2002566438 [39.1349460,16.0736446] (unnamed) #06: ID:2056891127 [39.4106679,16.8254844] (unnamed) #07: ID:2056892999 [39.4124687,16.8286119] (unnamed) #08: ID:2272010226 [39.4481717,16.2894353] SCUOLA DELL'INFANZIA SAN FRANCESCO #09: ID:2272017152 [39.4502366,16.2807664] Scuola Media #10: ID:2358307794 [39.5015031,16.3905965] I.I.S.S. Liceo Statale V. Iulia #11: ID:2358307796 [39.4926280,16.3853662] Liceo Classico #12: ID:2358307797 [39.4973761,16.3858275] Scuola Media #13: ID:2358307800 [39.5015527,16.3941156] I.T.C. e per Geometri #14: ID:2358307801 [39.4983862,16.3807796] Istituto Professionale #15: ID:2358344885 [39.4854617,16.3832419] Istituto Tecnico Statale Commerciale G. Falcone #16: ID:2448031004 [38.6438417,16.3873106] (unnamed) #17: ID:2458139204 [39.0803263,17.1291649] Sacro Cuore #18: ID:2552412313 [39.0765212,17.1224610] (unnamed) #19: ID:2582443083 [39.0815417,17.1178983] Liceo Socio Biologico Gravina #20: ID:2585754364 [38.8878393,16.4076323] Scuola Elementare #21: ID:2585754366 [38.8877600,16.4076216] Scuola Media #22: ID:2755576944 [39.3641541,17.1310900] (unnamed) martin@linux-70ce:~/php> note. i need to have the adress-data, of the shool with and even more important Key:contact - OpenStreetMap Wiki How to add this .. into the query ? and how to finally store all into the MySQL-db ?
  22. Hi, I have two date and time stamps stored in my database, I'm using the below script to calculate the difference but whenever I'm getting an extra 1 hour added ?? Any ideas, Cheers Chris <?php $start = $row_rsComplete['quote_added']; $finish = $row_rsComplete['quote_complete']; $difference = ($finish - $start); $day = round(($difference % 604800) / 86400); $hours = round((($difference % 604800) % 86400) / 3600); $minutes = round(((($difference % 604800) % 86400) % 3600) / 60); echo $day." days"."<br/>"; echo $hours." hours"."<br/>"; echo $minutes." minutes"."<br/>"; ?>
  23. I currently have a php code at the top of the page that would automatically delete a user from the database if a certain condition isn't met before 24 hours. This code is processed no matter where you are on the site. I have two questions. 1. Will this be an issue if the database has thousands of users? 2. Is there a better way to do this?
  24. Hi, i never worked with .htaccess files because i didn't use it for anything, now i need one and i'm stuck into this. I made a rule to remove .php extension from file and to make a url like this "localhost/blog/My%20first%20post" Now i need to replace that white spaces and make a url to look like this "localhost/blog/My-first-post" Here is my .htaccess file RewriteEngine On # Removes .php extension from inner_blog.php RewriteRule ^blog/?$ blog.php [NC] # Remove inner_blog.php and changing it to blog/articlename RewriteRule ^blog/([^/]*)$ /inner_blog.php?title=$1 [L]
  25. Hi guys, i've been struggling with a problem regarding reading the JSON structure, decoding it and than trying to extract a UNIQUE key structure from it. So let me show you by example what im trying to do here. Let's take a look at this JSON: { "status": true, "message": "Everything was ok", "posts":[ { "id": 1, "post_type": "type_a", "posted_on": "", "updated_on":"", "user":{ "id": 1, "name": "" }, "num_comments": 2, "comments":[ { "id": 1, "comment":"", "commented_on":"", "user":{ "id": 1, "name": "", "profile_image": "" } }, { "id": "", "comment": "", "commented_on": "", "user":{ "id": "", "name": "", "profile_image":"" } } ], "message": "", "images":[ { "image":"", "image_large":"" } ] }, { "id": 2, "post_type": "type_b", "posted_on": "", "updated_on":"", "notes":{ "id": 1, "name": "" }, "user":{ "id": 1, "name": "" }, "num_comments":"0", "images":[ { "image":"", "image_large":"" } ] }, ] } So as you can see from the example the structure of the two post arrays varies, one has a comments section, the other one doesnt, one has a notes section, the other one doesnt etc etc. What i would somehow like to be able to do is extract a UNIQUE JSON structure for this document. Meaning i only care about the KEYS not the values and i wanna show the user what can he expect and what are the possibilities. Here is my code so far: function keys_are_equal($array1, $array2, $key) { return !array_diff_key($array1, $array2) && !array_diff_key($array2, $array1); } function prettyParseJson($json) { $decoded = json_decode($json, true); if($decoded && is_array($decoded)) { return recursiveJsonRead($decoded); } } function recursiveJsonRead($data) { $previous_array = array(); $unique_array = array(); foreach ($data as $key => $val) { if(is_array($val)) { if(!empty($val)) { if(keys_are_equal($previous_array, $val, $key)) { } else { $unique_array[$key] = gettype($val); $unique_array[$key] = recursiveJsonRead($val); $previous_array = $val; } } } else { $unique_array[$key] = gettype($val); } } return $unique_array; } As you can see im trying to decode the json, im trying to walk through it and extract all keys and their types but currently it only works if the structure is ALWAYS the same, if it varies if creates duplicates of keys that are already defined in a previous array. And again i hope im explaing this correctly but all i wanna do is be able to load a JSON file and read out its UNIQUE key structure. If someone can help me out it would be great cos im losing my mind over it.
×
×
  • 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.