Jump to content

5kyy8lu3

Members
  • Posts

    257
  • Joined

  • Last visited

Everything posted by 5kyy8lu3

  1. Oh, I didn't think about having to check the source to see the output. I was just looking at the browser output and it was blank. This is the output of the bin2hex(): 342048616e64732053756761722026616d703b205370696365 My knowledge on character encodings are admittedly limited Scraping public data is not stealing lol Also, if you want to know more specifically what I'm doing, it's a website that my friends and I use to keep track of the beers we've had for flying saucer's "ufo club". It gets really difficult to know which beers we've had after you get past about 50, so I made this site. To avoid errors with data entry, instead of letting users add new beers that aren't found when they do a search, I scrape saucer's "beer menu" to get a full list of what's in stock. In fact, my "menu" ends up being more accurate than theirs because the printed menus are often a couple days old.
  2. This is what vardump shows: string(25) "4 Hands Sugar & Spice" strlen() shows this: 21 and I get nothing when I bin2hex the containing variable oh and I should mention that when I do the strlen, I'm copy/pasting output of browser back into script to do teh strlen. when I wrap strlen around the variable I get 25 just like vardump shows
  3. Hi. I've been banging my head against the wall with this stupid problem and I just figured out the problem. I scrape data from a website. I query my table to see if I already have everything in there. If no match is found, I insert it. Today, I noticed even after inserting, my script kept telling me there's a new entry I need to insert, despite it actually being there when I physically check the table. But when I echo the query out and run it in phpmyadmin, it finds the row. But not if I run the query directly in my script. Turns out, there are several invisible characters in my string. When I do var_dump(), it says length is 25. When I copy and paste the string into notepad, then back into a fresh php script and wrap it in quotes and echo out a strlen(), I get 21. There are apparently 4 invisible characters that I can't see. I trim() everything, so that apparently didn't catch it. So... is there a good way to "clean" my data before inserting or comparing it to avoid this in the future? This wasted a ton of time and I hope to find a way to clean this junk out of my data. Thanks! It just seems like I run into this sort of thing often when it's data scraped from the web. (breaks my regex! grr!)
  4. Well, I just did this: UPDATE beers SET brewery=TRIM(brewery); And it fixed my problems! I really appreciate the help!
  5. Oooooh, I see what you're asking now. A lot of it was scraped from a website. Some was copy/pasted, and the rest was typed manually. If it's the existing data that's not working correctly, I'm curious why using TRIM on the ORDER BY clause fixes the problem? NEVERMIND, duh, it's trimming the original data's whitespace or whatnot. That was a dumb question, sorry. I didn't realize until after I pushed the button to post. I think I'm going to write a quick script to go through each row and clean it
  6. The data was typed by hand into an HTML form. I even typed the data into phpmyadmin's insert page to insert a row and that did the same thing. When I do this, it doesn't sort correctly: SELECT brewery FROM beers ORDER BY brewery ASC; But when I do this, it sorts correctly: SELECT brewery FROM beers ORDER BY TRIM(brewery) ASC; So I'm fairly sure it's related to invisible characters, but I can't figure out where or how they're getting in there. (or how they're sneaking past php's trim() function)
  7. I just inserted a brand new row using phpmyadmin and that row isn't sorting correctly either. This is weird. The page is rather large with formatting so I cut all the fat out and left the actual function code. <?php session_start(); require("library.php"); $DBA = new DBA; if ( $_GET['post'] == 1 ) { $_SESSION['brewery'] = trim($_POST['brewery']); $q = 'UPDATE beers SET brewery="' . $_SESSION['brewery'] . '" WHERE ID="' . $_SESSION['ID'] . '"'; $results = $DBA->Query($q); $_SESSION['insert_success'] = 'New brewery successfully added!'; header("Location: addbrewery.php"); die(); } else { echo '<html> <head> <title>Add Brewery</title> </head> <body>'; if ( $_SESSION['insert_success'] != '' ) { echo $_SESSION['insert_success']; unset($_SESSION['insert_success']); } echo ' <form action="addbrewery.php?post=1" method="POST"> <input type="text" name="brewery"> <input type="submit" value="Add Brewery!"> </form> </body> </html>'; } ?> Here's a screenshot of the sorting not working for my test row in phpmyadmin (and I USED phpmyadmin to INSERT this specific row)
  8. Hi. Any time I have POST data, I wrap it with php's trim() function to strip whitespace to avoid sorting issues and such in the database. (mysql5 / php5) Despite using php's trim() function, I believe some special characters or spaces are ending up at the beginning of the string. Even editing that row with phpmyadmin doesn't fix the problem which is what's weird. (meaning I manually retype the value in the column in phpmyadmin, then save it, and it still won't sort correctly) Basically, every row sorts correctly except one row that ends up at the very end. If I use mysql's TRIM() in the order by clause like so: ORDER BY TRIM(name) ASC, it actually sorts correctly. So how is something sneaking past php's trim() that mysql's trim() is able to fix? Any ideas? That column is using latin1_swedish_ci collation
×
×
  • 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.