I²C Memory Card Help. Cant Write more than one bit

ok. now i have this code:

#include <Wire.h>

void i2c_eeprom_write_byte( int deviceaddress, unsigned int eeaddress, byte data ) {
  int rdata = data;
  Wire.beginTransmission(deviceaddress);
    Wire.send((byte)(eeaddress >> 8)); // MSB
   Wire.send((byte)eeaddress&255);
  Wire.send(rdata);
  Wire.endTransmission();
}

// WARNING: address is a page address, 6-bit end will wrap around
// also, data can be maximum of about 30 bytes, because the Wire library has a buffer of 32 bytes
void i2c_eeprom_write_page( int deviceaddress, unsigned int eeaddresspage, byte* data, byte length ) {
  Wire.beginTransmission(deviceaddress);
    Wire.send((byte)(eeaddresspage >> 8)); // MSB
   Wire.send((byte)eeaddresspage&255);



  byte c;
  for ( c = 0; c < length; c++)
    Wire.send(data[c]);
  Wire.endTransmission();
}

byte i2c_eeprom_read_byte( int deviceaddress, unsigned int eeaddress ) {
  byte rdata = 0xFF;
  Wire.beginTransmission(deviceaddress);
    Wire.send((byte)(eeaddress >> 8)); // MSB
  Wire.send((byte)eeaddress&255); // LSB
  Wire.endTransmission();
  Wire.requestFrom(deviceaddress,1);
  if (Wire.available()) rdata = Wire.receive();
  return rdata;
}

// maybe let's not read more than 30 or 32 bytes at a time!
void i2c_eeprom_read_buffer( int deviceaddress, unsigned int eeaddress, byte *buffer, int length ) {
  Wire.beginTransmission(deviceaddress);
   Wire.send((byte)(eeaddress >> 8)); // MSB
  Wire.send((byte)eeaddress&255); // LSB
  Wire.endTransmission();
  Wire.requestFrom(deviceaddress,length);
  int c = 0;
  for ( c = 0; c < length; c++ )
    if (Wire.available()) buffer[c] = Wire.receive();
}


void setup()
{
  Wire.begin();
  Serial.begin(9600);
  
  i2c_eeprom_write_byte(0x50,00,145);
  delay(50);
    i2c_eeprom_write_byte(0x50,01,146);
  delay(50);
    i2c_eeprom_write_byte(0x50,02,147);
  delay(50);
    i2c_eeprom_write_byte(0x50,03,148);
  delay(50);
    i2c_eeprom_write_byte(0x50,04,149);
  delay(50);
    i2c_eeprom_write_byte(0x50,05,150);
  delay(50);
  Serial.println("DOne");
  
}
 int n = 0;
void loop()
{

}

It seems that no matter what address i use as eeaddress the writing is done to byte 0

How can i fix this?

All right - there seems to be only one explanation:
What you have is not - as you insinuated by posting the datasheet - a 24C256 but a 24C01, 24C02, 24C04 or 24C08.
Those devices have only ONE data address byte, not two.

Alas, all those EEPROMs have I2C address 50 ff. Note that you have to use I2C addresses 51, 52 e.t.c. to address the other pages, if it's a 24C04 or 24C08....

i am not following. I have had a look at the writing and reading section of the datasheet. I dont understand how it is done. Can anyone help me.

YOU DO NOT HAVE THE CHIP YOU MAKE US BELIEVE!

(Or so it seems...)

Just leave this out in all places.
Wire.send((byte)(eeaddress >> 8)); // MSB

Well. I haven't tried the new option because I'm waiting for smart-card connectors to arrive from China. With these i can be assured that the connection to the device is fine. I will update when i receive them. According to the company it should be some time next week.