Pagina 1 van 1

Data base vraagje

Geplaatst: 23 jan 2005, 23:47
door maico
Hoi,

Waar ik me forum draai hebben ze wegens veiligheidsreden de commando drop table uit geschakeld als ook de commando legen van een komplete table

Nu het ik een table waar redelijk veel gegeven is komen die ik van tijd tot tijd leeg wil maken.
Nu kan ik wel veld voor veld selecteren en dan verwijderen maar dat is niet om te doen.

Nu is mijn vraag is er geen commande verwijder van de velden van dat en dat table?
Het zelfde dus als insert to** maar dan delete from ofzo??

Geplaatst: 24 jan 2005, 14:47
door Stef
DELETE FROM tabel

Geplaatst: 24 jan 2005, 15:11
door maico
Hoi

Ik heb het zogedaan:

Code: Selecteer alles

DELETE FROM `maico_topics_viewdata` WHERE `viewed_id` = '1' LIMIT 1;
Maar er staan meer als 5000 viewed_id en dat word bij ieder keer dat er gekeken word meer natuurlijk.
Is ervoor `viewed_id` = '1' niet een joker teken?
*. ofzoiets dan want dat *. en *.* heb ik al geprobeerd :lol:

Geplaatst: 24 jan 2005, 17:19
door Luuk
Een tabel legen dus, ik dacht TRUNCATE TABLE maico_topics_viewdata.

Geplaatst: 24 jan 2005, 17:32
door maico
Hoi Luuk,

Ook dat gaat niet.VOORBEELD

DELETE FROM is met joker tekens als dat gaat wel mogelijk.

Geplaatst: 24 jan 2005, 17:33
door Bee
Er mist iets in die phpMyAdmin. De select all functie. Daarna kan je het met twee klikken ook alles verwijderen. Maargoed, dat is weer wat anders.

Geplaatst: 24 jan 2005, 17:36
door maico
Ja inderdaad in het veld daarvoor heb ik wel die select alles maar hier niet.
Dus vandaar het probleempje :lol:

Geplaatst: 24 jan 2005, 17:50
door Luuk
Maak een bestand aan in de phpbb root (naam maakt niet uit, bijvoorbeeld delete.php) met dit als inhoud:

Code: Selecteer alles

<?php
/***************************************************************************
 *                               delete.php 
 ***************************************************************************/

define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);

$sql = "SELECT viewed_id
	FROM maico_topics_viewdata";
if( !($result = $db->sql_query($sql)) )
{
	message_die(GENERAL_ERROR, 'Could not query ids', '', __LINE__, __FILE__, $sql);
}

$rows = array();
while( $rows[] = $db->sql_fetchrow($result) );
$db->sql_freeresult($result);

for($i = 0; $i < count($rows)-1; $i++)
{
    $sql = "DELETE FROM maico_topics_viewdata
		WHERE viewed_id = " . $rows[$i]['viewed_id'];
	if( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Could not delete viewed_id', '', __LINE__, __FILE__, $sql);
	}
	echo('Viewed_id verwijder met id' . $rows[$i]['viewed_id'] . '<br />');
}

?>
Ga daarna naar die pagina en als het goed moet hij alle id's verwijderen.

Geplaatst: 24 jan 2005, 17:57
door maico

Code: Selecteer alles

Parse error: parse error, unexpected ';' in /xxxxxxxxxxxxxx/maico/delete.php on line 32
Als ik ingelogt ben als admin of niet maakt niet uit.

Geplaatst: 24 jan 2005, 18:19
door Luuk
Ow, ) vergeten. Heb hem aangepast. :wink:

Geplaatst: 24 jan 2005, 18:24
door maico

Code: Selecteer alles

Could not delete viewed_id

DEBUG MODE

SQL Error : 1064 You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 2

DELETE FROM maico_topics_viewdata WHERE viewed_id = 

Line : 30
File : /xxxxxxxxxxxx/maico/delete.php
Nog niet goed denk ik :lol:

Geplaatst: 24 jan 2005, 18:44
door maico
In een eerder veld (zo noem ik het maar)
daar kan ik wel de 6 verwijderen dus dat zijn maar 6 klikjes!

En dan daarna de velden terug erin zetten dat gaat ook maar hoe maak ik dit een goed geheel?
de create table hoef dus niet niet want die verwijder ik niet.
Het zou dus als de user_ip moeten worden nadat ik de 6 velden verwijderd heb draai ik toch gewoon de SQL query en heb ik het zooitje toch ook leeg niet!?

CREATE TABLE `phpbb_topics_viewdata` (
`viewed_id` int(10) unsigned NOT NULL auto_increment,
`user_id` mediumint(9) NOT NULL default '0',
`topic_id` mediumint(8) unsigned NOT NULL default '0',
`num_views` tinyint(3) unsigned NOT NULL default '1',
`last_viewed` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`viewed_id`),
KEY `user_id` (`user_id`,`topic_id`),
KEY `last_viewed` (`last_viewed`)
) TYPE=MyISAM ;


ALTER TABLE `maico_topics_viewdata` ADD `user_ip` CHAR( 8 ) NOT NULL;
ALTER TABLE `maico_topics_viewdata` ADD KEY `user_ip` (`user_ip`);

Geplaatst: 24 jan 2005, 18:58
door Luuk
Hmm, ben niet helemaal wakker zo te zien :P

Maar wat wil je aanpassen? Dat je op een moment alle rijen van 1 ip kan verwijderen of wat?

Geplaatst: 24 jan 2005, 19:08
door maico
Nee ik wil van tijd tot tijd die hele tabel legen.
Maar omdat we de rechten niet krijgen moet het nu via een omweg :lol:
Dus als ik nu alle velden verwijder is hij toch leeg?

Nadat ik dat gedaan heb draai ik de sql weer en ik heb LEGE velden terug toch?

Nou moet ik alleen de goede SQL hebben.
Deze heb ik nodig voor me user_ip terug te krijgen

Code: Selecteer alles

ALTER TABLE `maico_topics_viewdata` ADD `user_ip` CHAR( 8 ) NOT NULL; 
ALTER TABLE `maico_topics_viewdata` ADD KEY `user_ip` (`user_ip`);
Die heb jij al eens gemaakt voor me :lol:
En zo moet ik het dus hebben van:
viewed_id
user_id
num_views
last_viewed


Dit is een stukje backup van me DB

Code: Selecteer alles

CREATE TABLE `maico_topics_viewdata` (

  `user_id` mediumint(9) NOT NULL default '0',
  `topic_id` mediumint(8) unsigned NOT NULL default '0',
  `num_views` tinyint(3) unsigned NOT NULL default '1',
  `last_viewed` int(10) unsigned NOT NULL default '0',
  `user_ip` char(8) NOT NULL default '',
  PRIMARY KEY  (`viewed_id`),
  KEY `user_id` (`user_id`,`topic_id`),
  KEY `last_viewed` (`last_viewed`),
  KEY `user_ip` (`user_ip`)
) TYPE=MyISAM AUTO_INCREMENT=25 ;
Maar ik hoef de tabel niet te maken want die verwijder ik niet het gaat dus alleen om de velden

Geplaatst: 24 jan 2005, 21:29
door Luuk
Een veld is bij jouw tabel bijvoorbeeld user_id. Volgens mij haal je het door elkaar met een rij. Dat is een rij waar informatie in staat.

Ik heb het nog 1 keer veranderd (heb het getest en het moet werken), alle rijen worden verwijderd dus de tabel wordt eigenlijk met een omweg geleegd.

Om het veld user_ip weg te halen moet je in je database dit uitvoeren:

Code: Selecteer alles

ALTER TABLE maico_topics_viewdata DROP user_ip
Vergeet niet in het php bestand waar er rijen worden ingevoerd ook user_ip weg te halen, anders krijg je errors.

Geplaatst: 24 jan 2005, 21:44
door maico
Hoi Luuk

Ik krijg dit als resultaat :lol:

Code: Selecteer alles

Viewed_id verwijder met id24
Viewed_id verwijder met id25
Viewed_id verwijder met id26
Er stonden maar 3 id`s in dus dat is goed.

Het veld user_ip hoef toch niet weg want ik wil het wel blijven gebruiken, maar het ging mij erom dat ik hem eens mee en dan kan legen.
Want hij logt nog steeds niet 100%

Maar ik denk dat dit nu is.
Bedankt weer :thumb:

Geplaatst: 24 jan 2005, 22:25
door maico
Luuk je script werkt perfect.

Ik heb het inmiddels op het goede forum gedraait meteen alles weg :thumb:

Er zit echter nog steed een foutje in de update van de datum, het ip schijnt nu helemaal goed te zijn maar de datum update soms wel en dan weer niet.
Als je er nog eens naar wil kijjken als je zin hebt :wink:

LINKJE hoe het eruit ziet na het legen van de tabel en naar het functions_user_viewed_posts.php bestand zoals ik het gebruik.

Ric

Geplaatst: 25 jan 2005, 16:17
door Luuk
Dus als een bericht 1x bekeken is staat het niet goed, bij de 2e keer (of erna) wel. Moet de fout dus zitten bij de INSERT INTO.
Probeer eens door

Code: Selecteer alles

' . time() . '
te veranderen in

Code: Selecteer alles

" . time() . "
Een ander verschil kan ik niet zien tussen de update en de insert into querrie.

Geplaatst: 25 jan 2005, 17:19
door maico
Soms is het vanaf bericht 1 ookal goed en bij een ander lid weer niet dat is nu juist het vage aanhet verhaal, bij de een goed en bij de ander maar half werk :lol:

Maar ik heb het even veranderd en zoals het zich nu laat aan zien werkt het.
Althans bij de 5 mensen die nu online waren.
Mocht het niet helmaal goed zijn hoor je het wel

Bedankt maar weer met probleempje