Jump to content

maxxd

Gurus
  • Content Count

    919
  • Joined

  • Last visited

  • Days Won

    24

Everything posted by maxxd

  1. So, clearly you're working with WordPress for this project. WordPress has enough issues and pain points by and of itself - why are you making it harder on yourself? If you're actually (as it seems) working within the WP infrastructure, why not just use the WordPress database object? The connection to the database is already made, you can use it like an ORM (kinda), and depending on how you use it, it kinda sorta sanitizes database interactions by default. The reason you'll see a check in most WP theme and/or plugin files for the ABSPATH constant is to make sure the WordPress core has been loaded. If you're trying to do something within WordPress before the core is loaded, I'd recommend looking at why you're trying to do it and why it needs to be done exactly then. I hope that makes sense, and sorry if I'm missing the point of what you're actually trying to do, but it really seems like you're making things much more difficult than they need to or should be.
  2. maxxd

    Insert into database at all at once

    Also, part of the joy of prepared statements is that you only need to prepare them once. Do the PDO::prepare() outside the loop, then bind the variables and run the query in the loop. Which, again, we can't see.
  3. maxxd

    Insert into database at all at once

    Nothing in your code shows a loop. If there's a loop inserting data but the only data being inserted via that loop is the last row of data, then there's probably a problem with the loop; which we haven't seen.
  4. Create a variable called "$currentSalesRep". At the start of your while loop, grab the current record's name field and compare the value to $currentSalesRep. If the values are different, create a new worksheet then store the current record's name value in $currentSalesRep.
  5. maxxd

    Generating voice into wave form using php

    PHP is a server-side language. You're going to want JavaScript so as to handle things on the client side. Check out https://developer.mozilla.org/en-US/docs/Web/API/Web_Speech_API/Using_the_Web_Speech_API
  6. Check this list out. I think it's probably not exhaustive, but it should be big enough to get you started.
  7. maxxd

    Newbie Question!

    Put the code from the example in your child theme's functions.php file. I assume you're using a child theme - if not, create one and then do it. You don't want to modify any plugin or pre-built theme files directly as those changes will be overwritten every time the plugin or theme updates. Now, that having been said, you can't just copy and paste the example code - you'll have to modify it to fit your purposes. For instance, the example code checks for any fields with an ID of 100, 101, or 102 before running the rest of the logic. The likelihood that the fields you're looking to compare against are ID 100, 101, or 102 is slim...
  8. maxxd

    Text Area Entry

    Explode the string on newline and you'll have an array of emails which you can loop through to insert. You may want to run additional checks for commas and/or whitespace just in case your users don't read the instructions.
  9. maxxd

    Read EXIF Orientation & Rotate Image

    This seems like a good place to start.
  10. Is there a reason you're not using the WordPress database class?
  11. maxxd

    Output wp shortcode in php page

    I may not be understanding your question, but do_shortcode() is not a PHP function, it's a WordPress function. If you're trying to call it from a script that isn't run through WordPress (if it's an external script [I think is what you're describing]), it's not going to work.
  12. maxxd

    PHP Templating

    Couldn't even begin to say why, but I always forget about __DIR__. It's weird, honestly.
  13. maxxd

    PHP Templating

    I've typically used something along the lines of this: require_once(dirname(__FILE__).'/style/navbar.php'); I don't know if it's better or not, but it does make me feel like I've got more control over the file structure and as though there's less of a chance of somehow injecting "../../{whatever nefarious thing}" into $_SERVER['DOCUMENT_ROOT']. Also, (really no point in lying here) I don't even know if it's possible to inject into$_SERVER['DOCUMENT_ROOT'], but I know that $_SERVER['PHP_SELF'] can be spoofed, so I think it may just be possible. Maybe I'm just being paranoid.
  14. maxxd

    Poll Folders for new File

    It's a kludge, but you could always keep a list of files in a database or flatfile and schedule a CRON to run a script that scans the directory for file names, then compare that to the saved list. You'd know if something had been added or removed, though it wouldn't be instant.
  15. maxxd

    Plugin Template PHP

    Just don't forget that you'll have to make those changes to the plugin file every time you update your plugin.
  16. maxxd

    Check if User and Email already exists

    Not as it is now - if you want to tell the user which is taken you'll have to update the query. Right now it just returns a count of records that match either the username or the email. You'll have to actually select both and then check in PHP which one matches, or rewrite the query to return the offending column. However, I'd recommend just letting people know that one of the two has been taken. That way you're not confirming to an outside party which of the two actually exists in the database - a hacker that knows for a fact a username exists has less work to do and can focus only on figuring out a correct password.
  17. maxxd

    Create form send to database

    Don't do that. Try PHP The Right Way or codecademy - there are a lot of tutorials and lessons out there. If you don't know whether or not they're any good, ask here first. Someone can tell you. w3shools.com is a great place to look up what exactly you need to Google in order to figure out how something works, but it's not a great place to actually learn how something works.
  18. maxxd

    Check if User and Email already exists

    SELECT COUNT(*) AS recs FROM users WHERE username = :username OR email = :email You're overwriting your query and only checking for the email match - try the above as the only value of $sql. Also (and I could be wrong so hopefully someone will correct me if I am) I seem to remember having run into to troubles using 'email' as a column name in MySql - I tend to use something like "email_address" (or "eAddy" if I'm tired of typing). As to the unique index point that mac_gyver raised, if those columns are already set to 'UNIQUE', just insert the data. If there's a duplicate in either column, the insert will throw an error - check that and let the user know what's up. No data will actually be inserted because the attempt violates the unique constraints so no harm done.
  19. I don't program Python, but I have to say that VSCode is quickly becoming my favorite IDE. It's fast, has a huge amount of plugins, and seems light and nimble on my Mac desktop, Windows 10 desktop, and my Surface. The biggest issue I have with it as of right now is that some of the Windows version keyboard shortcuts are different from the Mac version shortcuts.
  20. maxxd

    Update to database

    The biggest thing about WordPress and AJAX is that WP routes all AJAX calls through the admin_ajax file, and what exactly it does at that point is dependent on the `action` parameter of the passed data - at that point it uses it's internal routing and the 'action' parameter to figure out what file and function/method to call via the add_action() call - however, it doesn't actually pass any parameters to the called function. So you need to pass all the data in the AJAX request but don't expect any of it to actually hit the handling function that you've written - you're still going to have to go to the $_POST or $_GET superglobals for that. Sure, you could use the $_REQUEST superglobal, but WP has enough security concerns without adding more so skip $_REQUEST entirely please. Sorry, none of that is entirely unusual but IMO if you're going to force everything to go through a centralized location you should at least consolidate and pass data to the called target. It's just courtesy for making me jump through the extra hoop. Anyway (long and random "it's my second glass of wine" rant aside), the important part is that you technically can - like any other application - send your AJAX request to any receptive PHP file you want. The problem is that if you don't use the admin_ajax link, the WordPress core won't be loaded. So any and all of the functions, objects, or hooks you want or need to use won't exist at the time of the AJAX call.
  21. maxxd

    Update to database

    First, if you're going to be handling form processing via AJAX you don't need an action attribute on the form. Your JavaScript preventDefault() on the submit event stops the form from submitting to the action target anyway. Your AJAX handling functions are doing a few redundant things. For instance, the acikudos_ajax_handler() function is invoking the global $wpdb in order to ignore it completely before sending the program to acikudos_process_request(), where the global $wpdb is invoked again. Then acikudos_process_request() echos the JSON encoded data before returning the array data to acikudos_ajax_handler(), which prints the JSON encoded array. Again. Beyond that, WordPress runs all AJAX calls through the wp_ajax_{action}() and wp_ajax_nopriv_{action}() hooks, so I'm a bit confused as to how the acikudos-update.php file is even getting called at this point if the hooks for those actions are actually in that file. It's pretty normal to put all the action and filter hooks into the plugin main (or 'functions') file (I assume at this point that is acikudos-plugin.php). You can always call to external classes from the functions file by using an array as the second parameter in the add_action() or add_filter() calls - for instance: add_action('wp_ajax_acikudos', [myObject, 'acikudos_ajax_handler'], 0, 1); It's late so I hope I'm not missing something you've described in your code, but I would recommend doing some more searching into how WordPress handles AJAX in general - it can be a bit confusing at first. Beyond that, you've got a random quotation mark in the acikudos-edit.php file that should be easy to see in any decent IDE or even here in your post. I'm assuming it's an issue in the copy/paste as the file wouldn't work at all if that were the verbatim code in development and testing.
  22. maxxd

    Physical Width (Inches) Of The Screen

    requinix is right - don't worry about the physical size of the screen. As monitors are packing more pixels in per inch it doesn't matter at all. I personally use pixel-based breakpoints for my media queries with rem or percentages for element sizing and placement. It's an approach some people disagree with - I've talked to developers that think using rem or em is the only way to go, I've just not really been able to wrap my head around applying rem or em units to a Photoshop file, and I guarantee the designers here won't do it either.
  23. maxxd

    Pull data to page based on id

    It's because you're making things hard on yourself. You're constructing a full URL (for no reason other than to assign it immediately to another variable) only in order to check that a $_GET variable marker exists without actually checking to see if the corresponding $_GET variable value exists. You then try to access the value of the $_GET variable without checking to see if it's actually set, hence the error you would be getting if you had error reporting turned on. All of this: $actual_link = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; $url = $actual_link; if (strpos($url, "?viewkudoid")!==false){ $viewkudoid = $_GET['viewkudoid']; /* ... stuff ... */ } should be replaced with this: if(!empty($_GET['viewkudoid'])){ /* ... stuff ... */ } What you're doing now by checking to see if the string `?viewkudoid` is in the URL will technically handle scenario 2 and most of scenario 3 - the problem is that you're assuming there's a value assigned to viewkudoid in the URL. Which you can't. Besides which, everything after the question mark in a URL is the $_GET array. So ditch the homespun variable name existence check and make sure the value exists. Then you'll be taking care of scenarios 2 and 3 - scenario 3 will follow the else clause and print out all kudos records. And turn on error reporting while you're developing. You should have it turned on in your php.ini on the development/testing server, but you can enable it on a per-site basis. With WordPress you've got 2 ways to turn on error reporting: you can go the traditional PHP way and add this to the top of your script file: error_reporting(-1); ini_set('display_errors', true); or you can go the WordPress way and add this to your wp-config.php file: define('WP_DEBUG', true); define('WP_DEBUG_DISPLAY', true); For more information, check here. I will say that in my experience the WordPress way isn't bulletproof, and I'd highly recommend using the PHP ini_set() and error_reporting() functions if you can't turn on error reporting at the server via the php.ini on your development/testing machine for whatever reason.
  24. maxxd

    Need help with this script

    Lots of questionable design choices work. Just trying to put you on a decent path for your class work.
  25. maxxd

    Need help with this script

    For the limited scope you're describing, what you're using will - theoretically and for the most part - be fine. However, I think what requinix was referring to is that the password value should be coming from $_POST, not $_SESSION. When a form is submitted, the data is passed to the receiving PHP script via a $_POST array (or $_GET, but this has to do with passwords so ignore $_GET for now). $_SESSION is a completely different thing, typically used for different reasons entirely. So, instead of if(empty($_SESSION['password'])) you'll want if(empty($_POST['password'])) This is assuming the value of the 'name' attribute on the password field in the HTML form is 'password' - the name of the field becomes the value's index in the $_POST array.
×

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.