Jump to content

phppup

Members
  • Posts

    880
  • Joined

  • Last visited

  • Days Won

    1

Posts posted by phppup

  1. Great info, @gizmola.

    But perhaps I should rephrase.

    Staying with the same premise, I'm really ONLY interested in tracking the history of inventory (at this juncture).

    We only sell one type of truck and one type of car (vehicle history is the only focus for now).

    I'm going to track when we got the car and the wholesale price with shipping and fees, and, of course, sales data.

    All the same info is applicable to trucks EXCEPT that trucks are sold on consignment. So, I need to include a "sell by date" and, if not sold, a "date of return".

    Do I include these 2 columns in a single table, and only fill them with data when applicable?

    Or do I use one table for cars, and a separate table for trucks ( where the two tables are identical except for two columns?

  2. In a hypothetical situation, suppose I want to record sales data for items in two broad categories: cars and trucks.

    There are obviously different makes and models within each category, but all have the same accessories (for the sake of discussion).

    However, trucks have a few accessories not available to cars, and vice versa.

    The inclusion of these accessories will reflect in the final sale price, which will be determined identically for both categories, and recorded along with basic info (date of order, date of pickup, payment method, etc.).

    What would be the correct/best database setup?

    One table that incurs some NULL entries of unavailable accessories?

    Two tables; one for trucks and one for cars?

    Something more?

    Reasoning? Pitfalls?

  3. No, I don't @requinix

    I want someone that looks at the form to see the drop-down apparatus with the phrase "Car choices" (similar to a text field placeholder).

    it can be visible once the menu drops open, but should NOT be selectable (like an optgroup).

  4. I thought of that, but am missing a connection.

    The radio selection kicks off a script that populates an empty <div> and displays a form.

    At that point, doesn't the form exist?

    Shouldn't the forms be accessible?

    This portion of scripting is AFTER and below all other code.

  5. Same issue.

    For some reason, I cannot get a response when I try to access by the inputs or form ID.

    It seems pretty straightforward, so I wasn't sure if having JavaScript create the forms was creating an obstacle that I wasn't unaware of.

  6. This is what I've done in the past, but it still allowed the NULL category to be a viable option (especially on a mobile device).

    I want something similar to an <optgroup> that is viewable prior to closing the drop-down.

  7. I have a lot of working code that is essentially doing this:

    <div id="mydiv">
      radio buttons 
     </div>
    <div id="div2">
      form populates here
     </div>
    
    <script>
      //listen for a radio to be clicked and then display the appropriate form in div2  
     if(radio1){ document.getElementById("div2").innerHTML = blah blah blah   
     if(radio2){  
    document.getElementById("div2").innerHTML = blah blah blah   
    etc.

    Now I want to listen for a change in any input on the form to trigger a response.

    However, I am having difficult accessing the form inputs.

    document.getElementById("name").addEventListener("click", displayDate);
    function displayDate() {
    alert('Hurray');
    }
    
    //does not work and essentially disables the JavaScript that follows

    I managed to gain success with

    document.getElementById("div2").addEventListener("click", displayDate);

    But this triggers the associated function with any click at any location in the div.

    How can I "drill down" to the specific inputs inside the form?

  8. This will give me a dropdown menu

    <select name="cars" id="cars">
      <option value="volvo">Volvo</option>
      <option value="saab">Saab</option>
      <option value="mercedes">Mercedes</option>
      <option value="audi">Audi</option>
    </select>

    and by default, the first choice, Volvo, will be visible to the user.

    This will let me categorize the menu for the user

    <select name="cars" id="cars">
      <option value="" >Car choices</option>
      <option value="volvo">Volvo</option>
      <option value="saab">Saab</option>
    </select>

    but the user CAN select the "Car choices" as an option.

    Using an <optgroup> tag gets me CLOSER, but it is NOT visible until after the user clicks the drop-down.

    How can I create a visible category title that is not selectable in my drop-down?

  9. @kicken , I implemented your suggested CSS solution and I like it.

    It does what I intended and saves me the next step of dealing with reverting the colors onblur.

    EXCELLENT!!

    On a related note, after abandoning the specific JavaScript effort and using the CSS solution, I discovered a new conflict.

    Aside from the DIV changing color on focus/blur, I have a button to make the div a third color.

    Essentially, highlight on/off when DIV is selected, click button to highlight as a "reminder." (Only one section allowed)

    The issue that arose is that when a DIV is effected by the JS script it seems to lose the CSS toggle ability afterward.

    Each effect works okay independently, but together there is conflict.

    Is there an additional CSS solution.

    Is there a reason that the JS overrides the CSS?

    I have tried using the JS to "restore" the DIV,

    //After script had completed affecting the variable called element
    
    //changed the color
    element.style.background = "blue"
    //still lost the toggle effect
    element.tabindex="-1";

    but it didn't work. Solution?

     

  10. 3 hours ago, kicken said:

    Use a multi-line closure and log the value

    Yes, @kicken , that's the first thing I did; although I don't use a console, I used

    alert ("d is " +d);

    and the script froze at this point with no alert prompt visible.

    Perhaps I'll try the option you offered. Will it revert to the initial color on blur?

  11. A few questions have come up recently.

    Essentially, I have a webpage with several DIVs and I want the div that is in FOCUS to change color and thereby become highlighted.

    Additionally, I would want other DiVs to return to their original color (probably white) at the same occurrence.

    Using ONBLUR seemed "old school", so in the name of progress, I've created my problem. LOL

    Using this code

    const divs = document.querySelectorAll('div');
    
    divs.forEach(e => {
      e.addEventListener('click', (e) => {
      
        // remove the class from the others
        divs.forEach(d => d.classList.remove('active'));
        
        // add the class to the current one
        e.target.classList.add('active');
      });
    })

    with correlating CSS to change the DIV background color has its own issues (as it seems to be working on <h1> and <h2>inside the div, but not the full div itself).

    Things began to work when I added

    document.getElementById(e.target.id).style.background = "blue";

    to replace the ACTIVE class..

    My questions:

    How can I "see" the variable d value?

    I've tried lots of alterations and cannot see its value, ID, etc. (Mostly the script FAILS at that point when I try to "see" d.)

    My assumption is that knowing d will allow me to make further adjustments (to clear the background onblur [thus, a different focus]).

    Also, I want to clear all DIVs of the highlight with a click on a non-DIV element.

    Any helpful info or explanations are appreciated.

  12. On this site, we do not normally open attachments. In order to post code, use the <> button located in the toolbar.

    As for your issue, the PHP script will be read by the server when loading the webpage.

    It is currently doing what you have directed it to do (and has proven that it functions adequately).

    If you want to change your instructions to not run unless the submit button is clicked, then you have created a new CONDITION that needs to be added to the code.

    There are several ways to handle this:

    //let's say this is your button
    <input type="submit" name="my_submit" value="runPHP">
    
    //Assuming the button is inside a <form method="POST"> tag, you now have several alternatives or combinations to use as conditions 
      <?php if(isset($_POST['my_submit'])){
      //code to run if the CONDITION is met hours here
      } else {
      //what to do if condition is NOT met
      echo "Sorry, the button was not clicked";
      }  //end the condition
    
      //OR do this if you want to meet a greater condition 
      if(isset($_POST['my_submit']) && $_POST['my_submit'] == "runPHP"){
      //code to run if ALL the CONDITIONs are met
      } else {
      //what to do if conditionS are NOT met
      echo "Sorry, the button was not clicked";
      }  //end the conditions statement 
      
      ?>

    Hope this helps.

    You can research ISSET and see other examples online.

    • Great Answer 1
  13. @Barand

    Quote

    The checkboxes are names "vote[]" so they are posted as an array.

    Ok. I had initially built my form in a similar manner with the values and labels coming from an array (which I expected to eventually generate from a table) anyway.

    Quote

    $pdo

    Always confuses me. I know there are advantages to PDO (which I'll likely never be ready for), but I use procedural.

  14. @Barand Got a little busy, but as always, your help is greatly appreciated.

    It always looks so simple when you show the path.  And it seems you anticipated my next phase, which would be something along the line of "Choose 3 cities from the checkbox group that you would be most interested in visiting."

    If I'm understanding your example, I can easily expand the "vote" table to accept more INSERTed data with each form submission

    (This approach will NOT be inserting zero/null for unselected checkboxes, but without using 3 separate dropdown menus, what is the best/most correct way to format a smooth accumulation of selected itemsto be inserted into the table?)

    I haven't had the time to test my actual code, but it would seem modifying it to operate in a normalized methodology will be easier than jumbling through my "dog's breakfast of a table" set-up.  LOL

    Also from your reply, you use the character   "o"   , but I'm not sure I'm following its origin or meaning.  Can you clarify or link me to an explanation?

    Thanks!!

  15. I'm trying to workout the logic before writing my code and I've hit a bump.

    I'm setting up a table to receive votes and want to display the rankings.

    Example: what's the best party item?

    Each row will correlate to the person that submitted a vote.

    The essential columns would be balloons, soda, ribbons, bows.

    Voting for an item would INSERT a "1" (unless you're of a certain political party. LOL) into a cell.

    Now, I want to SUM() each column [I think I can do that] and list them in descending order.

    Can I do this in a statement? Or do I need to put the summed data into an array and then sort the array?

    What's the best approach?

  16. Anybody have any recommendations for a web-hosting provider that will offer PHP, SQL, email, and other assorted features that would be beneficial (like the ability to run CRON jobs, etc.)?

    @ginerjm I noticed in a recent thread that you cautioned against GoDaddy. Who would you suggest as an alternative?

  17. @ginerjm 

    Quote

    I would NEVER use W3 as a resource.

    That's good to know, but they come up on top of many searches and you failed to offer any constructive alternative as a recommendation.  Should I use nothing at all!!?!

     

    @mac_gyver Thanks for the helpful information.

    Much appreciated.

    PS: So, if I'm digesting this properly (and I do agree with your methodology) a value should NOT be subjected to htmlentities/htmlspecialchars UNLESS being used within an HTML context.  Tinkering with the value, even as a variable going into a database is essentially unnecessary?

     

  18. I need a little clarity, as I have a form with input and want to sanitize the input effectively to avoid attacks and complications.

    I adapted a W3 example but got unexpected results when I tried to view the results to verify success.

    
      $data = trim($data);             echo "after trim >".$data."<br>";
      $data = stripslashes($data);     echo "after strip >".$data."<br>";
      $data = htmlspecialchars($data); echo "after char >".htmlspecialchars($data)."<br>";
    
      echo "straight ".htmlspecialchars($data)."<br>";  //different viewable result
    
      echo " >".$data."<br><br>";
      

    Is there something going on 'behind the scenes' that I'm not recalling.

    Please inform and advise for best practices.

    Thanks.

  19. Hey @mac_gyver , I want to thank you tremendously for your responses.

    After scrolling further in the tutorial that I was using I spotted a section that states EXACTLY what you mentioned above with an added caveat that there is an exception if

    Quote

    using the FormData object to send form data

    and it then provides the necessary JavaScript.

    I'm not sure why there's a difference, but at this point I'm just happy to have working components that suit my needs.

    Nonetheless, curiosity did have me wondering, would the solution that you provided initially have worked if I had used the "more traditional" AJAX format?

    And yes, I understand the need for validating and sanitizing form data (but thanks for the reminder) and was more concerned that the alternate method of JavaScripting might (in itself) open a vulnerability.

  20. @mac_gyver A follow-up to your solution (which initially failed).

    The AJAX road has been grimy for me, so this time around, instead of using the usual format of

            $.ajax({ 
            type: "POST", 
            url: "check.php", 
            data: "email="+ usr,
            dataType: 'text',
                success: function(msg){
                    if(msg == 'OK'){
                     alert ("success");
                    // ..... etc.

    I tried a format from W3 that looks like this

    function loadDoc() {
      const xhttp = new XMLHttpRequest();
      xhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
          // ....blah blah blah

    I don't really know the difference between the two, but in building my script it seemed to be accomplishing the assigned task.

    I plugged in the code you provided, and then added some troubleshooting to determine that

    if(IS_AJAX_REQUEST)

    was determining a NO response.

    Ultimately, I modified your code and seem to have success with

    if($_SERVER["REQUEST_METHOD"] == "POST")
    {
        // build and output the response to the AJAX request
        // typeically json_encode([some meaningful error or success data]);
    echo "<br>yes AJAX request detected<br>"; die; } else { echo "<br>no AJAX request NOT detected<br>";
        // stopped php code execution in affirmative only
        
    }


    Now I have new questions (if you (or anyone else) would be so kind):

    Is my revision safe to use?

    Does it create any security issues or functional dilemmas?

    I can see why my code (built on your assistance) works, but why does the original not detect the AJAX submission as was expected?

  21. For simplicity, I've sometimes created a form with

    <form action="" method="POST">

    which had the form self-check its file to run PHP.

    Now I have a file with a form and I am using AJAX where the URL link is the same file.

    It didn't work with "" but does with the file name.

    However, because it is regurgitating the file, a by-product of the process is that the webpage displays the form twice.

    Is there a fix to stop this under these conditions. Or is an external PHP file the only solution?

×
×
  • 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.