On Wed, 2010-12-15 at 14:44 -0500, Steve Staples wrote: > On Wed, 2010-12-15 at 14:34 -0500, Gary wrote: > > "Steve Staples" <sstaples@xxxxxxxx> wrote in message > > news:1292440837.5460.8.camel@xxxxxxxxxxx > > > On Wed, 2010-12-15 at 13:42 -0500, Gary wrote: > > >> I cant seem to get this to connect. This is to my local testing server, > > >> which is on, so we need not worry that I have posted the UN/PW. > > >> > > >> This is a duplicate of a script I have used countless times and it > > >> worked. > > >> The error message is 'Error querying database.' > > >> > > >> Some one point out the error of my ways? > > >> > > >> Gary > > >> > > >> > > >> <form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post"> > > >> <tr> > > >> <td> > > >> <label>Name of Beer</label></td><td><input name="beername" type="text" /> > > >> </td> > > >> </tr> > > >> <tr> > > >> <td> > > >> <label>Maker of Beer</label></td><td><input name="manu" type="text" /> > > >> </td> > > >> </tr> > > >> <tr> > > >> <td> > > >> <label>Type of Beer</label></td> > > >> <td><select name="type" size="1" id="type"> > > >> <option>Imported</option> > > >> <option>Domestic</option> > > >> <option>Craft</option> > > >> <option>Light</option> > > >> </select> > > >> <!--<select name="avail" size="1" id="avail"> > > >> <option>Available</option> > > >> <option>Sold</option> > > >> </select>--> > > >> </td> > > >> </tr> > > >> <tr> > > >> <td><label>Sold in</label> > > >> </td><td><input type="checkbox" name="singles" value="Yes" /> Singles<br > > >> /> > > >> <input type="checkbox" name="six" value="Yes" /> Six Packs <br /> > > >> <input type="checkbox" name="can" value="Yes" /> Cans<br /> > > >> <input type="checkbox" name="bottles" value="Yes" /> Bottles <br /> > > >> <input type="checkbox" name="tap" value="Yes" /> Draft <br /> > > >> <tr> > > >> <td> > > >> <label>Size</label></td><td><input name="size" type="text" /> > > >> </td></tr> > > >> <tr><td> > > >> <label>Description</label></td><td><textarea name="desc" cols="40" > > >> rows="5"></textarea> > > >> </td></tr> > > >> <tr><td> > > >> <input name="submit" type="submit" value="Submit" /></td></tr> > > >> </form> > > >> </table> > > >> </div> > > >> <div id="list"> > > >> <?php > > >> $beername = $_POST['beername']; > > >> $manu = $_POST['manu']; > > >> $type = $_POST['type']; > > >> $singles = $_POST['singles']; > > >> $six = $_POST['six']; > > >> $can = $_POST['can']; > > >> $bottles = $_POST['bottles']; > > >> $tap = $_POST['tap']; > > >> $size = $_POST['size']; > > >> $desc = $_POST['desc']; > > >> $ip= $_SERVER['REMOTE_ADDR']; > > >> > > >> $dbc = mysqli_connect('localhost','root','','rr')or die('Error connecting > > >> with MySQL Database'); > > >> > > >> $query = "INSERT INTO beer (beername, manu, type, singles, six, can, > > >> bottles, tap, size, desc, ip )"." VALUES ('$beername', '$manu', '$type', > > >> '$singles', '$six', '$can', '$bottles', '$tap', '$size', '$desc', > > >> '$ip' )"; > > >> > > >> $result = mysqli_query($dbc, $query) > > >> or die('Error querying database.'); > > >> > > >> > > >> mysqli_close($dbc); > > >> > > >> > > >> > > >> -- > > >> Gary > > > > > > > > > Read Ash's reply... but basically, you're running the query with POST > > > variables, and inserting them on page display as well as on form submit. > > > > > > can you ensure that you can connect from the command line? > > > > > > > > > if you may take some criticism, you should rethink your database design, > > > as well as the page flow/design... you should either post the form to a > > > new page, or if it is back to itself, you should check to see that you > > > have in fact posted it before just blindly inserting into the database > > > (as currently, every time you view the page, you will insert into the > > > database, even if completely empty values). > > > > > > > Steve > > > > Thank you for your reply. > > > > I did not see a reply from Ashley, but I would love to read it. > > > > I always welcome criticism, however this form is for the owner of a bar > > where he will inputing his list of beer that he sells. The rest of the code > > that is not there is I will have the list then echo to screen below the > > form. This is an internal list only, no customers will be seeing it....if > > that makes any difference to your suggestion. > > > > On your one point > > > > <<(as currently, every time you view the page, you will insert into the > > database, even if completely empty values).>> > > > > Is this always the case when you process a form onto itself? Or is there a > > fix? > > > > I did just create a new page, inserted the script onto it, and got the same > > error message. > > > > Again, thank you for your help. > > > > Gary > > > Gary > > the line: > <input name="submit" type="submit" value="Submit" /> > > is the submit part... if you encapsulate the DB part of the code, > within: > if($_POST['submit'] == 'Submit') > { > # do db stuff in here and value sanitizing > } > > basically, what that does is the submit button is name $_POST['submit'] > and has the value "Submit" (the 'value' of the button) which will not be > set, until you submit the form. Personally, I do it another way, but > but is how most people check to see if a form is submitted (i think?) > > but it seems as if your issue stems from the lack of being able to > connect to the database itself, so either your login credentials are > wrong, or you dont have the mysqli connector enabled with your php in > your development box. > > check your phpinfo() to ensure it is enabled. > > Steve > > Echo out the $query string to see if it was you expect, but like a few of us have said so far, you need to check that the form is submitted before you run the query. To extend on what Steve said, I usually do something like this: if(isset($_POST['submit']) && $_POST['submit'] == 'Submit') Which first checks to see if there is such a variable to avoid warning messages in your log file or script output. Also, I mentioned before (but I guess you didn't see it) that the action attribute in your form tag is largely redundant, as in HTML, a form will post back to itself by default. Also, there are security concerns with using $_SERVER["PHP_SELF"] like this, as it won't always be what you expect and could be used to attack your site. Thanks, Ash http://www.ashleysheridan.co.uk