Hey beste mensen
Ik ben nu bezig met een berichtensysteem en het vordert al snel
het verwijderen uit de inbox werkt. maar het verwijderen uit de outbox werkt niet, terwijl dat toch wel hetzelvde systeem is

Om berichten te verwijderen doe ik hetvolgende:

<?php
if($loc = "outbox"){

$query = "SELECT * FROM message_outbox WHERE outbox_id='".$id."'";
$result = mysql_query($query) or die(mysql_error());
$row = mysql_fetch_array($result);
        $id = $row['outbox_id'];
        $user = $row['outbox_user'];
        $reciever = $row['outbox_reciever'];
        $datum = $row['outbox_date'];
        $subject = $row['outbox_subject'];
        $message = $row['outbox_message'];

$query2 = "INSERT INTO message_trash_outbox (`trash_id`,`trash_user`,`trash_other_user`,`trash_date`,`trash_subject`,`trash_message`) VALUES ('".$id."','".$user."','".$reciever."','".$datum."','".$subject."','".$message."')";
$result2 = mysql_query($query2)or die(mysql_error());

$query3 = "DELETE FROM message_outbox WHERE inbox_id='".$id."'";
$result3 = mysql_query($query3)or die(mysql_error());

echo "Message deleted";

}
?>


Hierbij worden eerst alle waarden opgehaalt en die worden naar de prullenbak verplaatst die voor de inbox en outbox apart is om dubbele id's te voorkomen.
daarna pas wordt die verwijdert uit de outbox.

echter als ik het script nu uitvoer dan krijg ik dit:

Out of range value adjusted for column 'trash_id' at row 1


Waar zou dit aan kunnen liggen denken jullie ?

Ik heb zelf in de database al wat veranderd maar dit help echter niet.

Op verzoek wil ik gerust even de database hier plaatsen.

Mvg,
Vincent


edit
even de php tags toegevoegt
klikje

schijnt iets te maken te hebben met mysql 5 oid... snapte het niet helemaal maar ik kwam het vaker tegen...
ik heb net even wat zitten testen en heb de 2e tabel voor de outbox even veranderd.
wat mij opviel is dat hij de eerste if pakt. dus die van de inbox
de reden daarvoor weet ik echter niet :S

*edit

Ik kom er net achter dat de $_GET[]; om de 1 of andere redenniet werkt

*edit2
ook als die werkt doet het script het niet :S
Waarom heb je verschillende tabellen. Het enige wat je nodig hebt zijn een tabel met gebruikers en een tabel met berichten.

users
user_id
user_name
etc.

messages
msg_id
msg_from
msg_to
msg_subject
msg_text
msg_deleted_sender
msg_deleted_receiver

Als er nu een bericht wordt gestuurd van gebruiker nr. 4 naar gebruiker nr. 23, voeg je een bericht als volgt toe:

msg_id: spreekt voor zich
msg_from: 4
msg_to: 23
msg_subject: Onderwerp van het bericht
msg_text: Het bericht zelf
msg_deleted_sender: 0
msg_deleted_receiver: 0

Als gebruiker nr. 4 het bericht dan uit zijn outbox verwijdert, zet je msg_deleted_sender op 1. Zo weet je dat je het bericht niet meer in de outbox hoeft te laten zien van gebruiker nr. 4. Het bericht blijft dus nog wel in de database staan, gebruiker nr. 23 moet het immers nog kunnen lezen in zijn inbox. Als ook gebruiker nr. 23 het bericht verwijdert, kun je twee dingen doen:

1) Je gooit het bericht uit de database
2) Je laat het staan

Logisch. Als je voor optie 1 gaat, kun je het bericht niet meer in de prullenbak bekijken. Als je gaat voor optie 2, kunnen je gebruikers in hun prullenbak het bericht alsnog bekijken, en weer terugzetten in hun in-/outbox.

Succes!
Ik heb in 1 van de eerdere versies van het systeem wat ik heb gemaakt inderdaad gewerkt met maar 1 tabel
echter met nog een prullenbak erin werkt dit niet meer en ben ik dus een nieuw systeem gaan programmeren
Dit ook om het wat beter te kunnen ordenen.
Nu heb ik die out of range value weten te corrigeren door int(11) te veranderen naar varchar(128).
echter nu krijg ik een probleem met de datum.

mijn tabellen zien er trouwens als volgt uit:


CREATE TABLE `message_inbox` (
  `inbox_id` int(11) NOT NULL auto_increment,
  `inbox_user` varchar(128) NOT NULL,
  `inbox_sender` varchar(128) NOT NULL,
  `inbox_date` datetime NOT NULL,
  `inbox_subject` varchar(128) NOT NULL,
  `inbox_message` longtext NOT NULL,
  `inbox_read` enum('No','Yes') NOT NULL default 'No',
  PRIMARY KEY  (`inbox_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;

CREATE TABLE `message_outbox` (
  `outbox_id` int(11) NOT NULL auto_increment,
  `outbox_user` varchar(128) NOT NULL,
  `outbox_reciever` varchar(128) NOT NULL,
  `outbox_date` datetime NOT NULL,
  `outbox_subject` varchar(128) NOT NULL,
  `outbox_message` longtext NOT NULL,
  PRIMARY KEY  (`outbox_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;

CREATE TABLE `message_trash_inbox` (
  `trash_id` varchar(128) NOT NULL,
  `trash_user` varchar(128) NOT NULL,
  `trash_other_user` varchar(128) NOT NULL,
  `trash_date` datetime NOT NULL default '0000-00-00 00:00:00',
  `trash_subject` varchar(128) NOT NULL,
  `trash_message` longtext NOT NULL,
  UNIQUE KEY `trash_id` (`trash_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE `message_trash_outbox` (
  `trash_id` varchar(128) NOT NULL,
  `trash_user` varchar(128) NOT NULL,
  `trash_other_user` varchar(128) NOT NULL,
  `trash_date` datetime NOT NULL default '0000-00-00 00:00:00',
  `trash_subject` varchar(128) NOT NULL,
  `trash_message` longtext NOT NULL,
  UNIQUE KEY `trash_id` (`trash_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;



*edit*

Ik kwam een fout tegen in het hoofdsysteem waarin ik alle pagina's oproep
na deze fout hersteld te hebben werkt het berichten systeem volledig :D

Reageren