Hello everyone,

I seem to be having a problem inserting some information into a MySQL table. Below is a copy of the MySQL table code I used and also the PHP code. I was wondering if anyone can help me find out why it wont insert the information.

What I am trying to do is make it so members can go and choose an option to join one of a selection of islands which will be subdivded into towns and then the town subdivided into villages. Each of the island/town and village levels will have a staff rank to allow certain members to have access rights to those pages.

But basically as you can see I want to set the default island/town/village levels and ranks to 0 intially. Then when the member goes to the island -age they will choose an island of say 4 options (which would update the island field to between 1-4 to depending on selecting an option. Then they choose a town of say between 1-4 and then again it updates the town field of between 1-4. And again for the village.

However, for some reason this code isnt working so far and its stopped me in my tracks. lol

I am using the $userid and $game tags which are apart of the include global.inc.php page I believe. I need this to identify the user and their individual details.


Can anyone help or see any obvious mistakes?


Here is the MySQL code:

CREATE TABLE `island2` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `user` int(11) NOT NULL default '0',
  `island` int(11) NOT NULL default '0',
  `town` int(11) NOT NULL default '0',
    `village` int(11) NOT NULL default '0',
      `islandrank` int(11) NOT NULL default '0',
    `townrank` int(11) NOT NULL default '0',
      `villagerank` int(11) NOT NULL default '0',
  `game` int(11) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=6359 ;

And this is the PHP island1090.pro.php page which should once the link on island1090.php is clicked insert a row. But currently it doesnt do it.

<?php

/*

Move to Island 1090 (island1090.pro.php)

*/
ob_start();
$rank_check = 1;
include "global.inc.php";


$check = fetch("SELECT * FROM island2 WHERE user = '$userid' AND game = '$game'");
if ($check[id])
{
	die(header(error("isaland1090.php?game=$game","You already have a House.")));
}


mysql_query("INSERT INTO island2 (id,user,island,town,village,islandrank,townrank,villagerank,game) VALUES ('',$userid','1','1','1','0','0','0','$game')");
header(error("island1090.php?game=$game","You have just settled into *****Island name here*******."));

?>

Any help is much appreciated.


Thank you

Justin

Hi Justin

I see you have the command ob_start() at the top of your php. Do you have the ob_end_flush() command before the page end?

What ob_start() does is to hold all the php output in its Output Buffer (ob) until it receives the ob_end_flush() command, whereupon it sends all the output together. So, if you don't have the ob_end_flush(), php is going to wait a long time before sending the output to the server! ;-)

I hope that helps.

Rory

Comments
Very Helpful :)

Print out your query, execute it in phpmyadmin/ mysql console and see if it works. You can also give "die" to check if your query is working or not.
ie.,

$query = mysql_query("your query") or die(mysql_error())";
Comments
Very helpful :O)

Hiya thanks for the replies.,

I have tried the ob_end and that didnt work and dont exactly know how to print the query :>/

Im sorry but im only a beginner. I know how to run a SQL query but not print or do the die. :>/

Also I actually dont know why the ob_start is there as I took a similar script from my website and just changed the details to this table.

Im not sure I could write it from scratch quite yet. But what does the Ob_start and end mean/do?


Thanks

Justin

You are trying to insert an id value of ' ' when you have that column set up as auto_increment. Don't insert an id value. Let MySQL set the id value.

Try this:

mysql_query("INSERT INTO island2 (user,island,town,village,islandrank,townrank,villagerank,game) VALUES ('$userid','1','1','1','0','0','0','$game')");

Comments
Very helpful. Is a star! :O)

Hiya thanks for the replies.,
But what does the Ob_start and end mean/do?

It was explained, but we will try again.

ob_start(); buffers the output to the browser (stops it) until ob_end_flush() is called. If you don't have ob_end_flush() then the output of code after ob_start will not be sent to the browser.

Matti Ressler
Suomedia

You are trying to insert an id value of ' ' when you have that column set up as auto_increment. ;

What IS this nasty script? I answered the same to very similar looking code just the other day :icon_eek:


Matti Ressler
Suomedia

Thank you everyone so much. That has worked. And thanks for the explanation. :O)


Justin

What IS this nasty script? I answered the same to very similar looking code just the other day :icon_eek:


Matti Ressler
Suomedia

Deja vu man ;)

I paid for the script off this guy who advertises that he gives support and backup to customers. However, this is not true and he ignores any tech support requests so I have had to learn what I can by editing the script.

Why is it really that bad? :o/

Justin

I paid for the script off this guy who advertises that he gives support and backup to customers. However, this is not true and he ignores any tech support requests so I have had to learn what I can by editing the script.

Why is it really that bad? :o/

Justin

Thats exactly what the user in the other thread said - please name the script so all can steer clear of it.

From what I have seen of it, yes, its very badly coded.

Matti Ressler
Suomedia

Hi Guys

Please will you tell us lesser mortals what is bad about the code so that we can learn not to do the same?

Your input is appreciated!

Rory.

This article has been dead for over six months. Start a new discussion instead.