ik heb net mijn forum aangepast met een paar MODs en daarna de data van mijn origineel forum daar naar overgezet...
nu zit ik met een klein probleempje in mijn phpbb_topics tabel.
om dit op te lossen heb ik een scriptje nodig dat voor elke topic in mijn phpbb_posts tabel een dummy record toevoegt en dat daarna dan ook weer verwijdert. (does this make a lot of sense?) :p
enige hulp would be appreciated :)
scriptjes zouden er ongeveer zo moeten uitzien:
Script 1 is nog vrij simpel. Ik ga er evenvanuiit dat je mysql_connect e.d. zelf erbij invoegt.
<?php
$sql_result = mysql_query("SELECT DISTINCT topic_id FROM phpbb_posts");
if($sql_result) // $sql_result is 'false' waneer er een fout in de query zat, en in dat geval hoeven we niet verder.
{
while($row = mysql_fetch_assoc($sql_result)) //voor iedere regel uit het resultaat
{
if(mysql_query("INSERT INTO phpbb_posts SET topic_id=".$row['topic_id'].", post_name='enz'..."))
{
echo 'Rij '.$row['topic_id'].' succesvol toegevoegd<br>';
}
}
}
else
{
echo mysql_error();
}
?>
dank u voor het antwoord, dit helpt me al een beetje op weg :)
en hoe kan ik die net toegevoegde records (en enkel die) dan ook weer deleten?
(zou het voldoende zijn in phpMyAdmin een
"delete from phpbb_posts where creatiedatum (of iets dergelijks?) > dan uurtje geleden of zo?
Ik vind dat als je een systeem download, dat er dan op het forum van de makers gewoon antwoord gegeven moet worden. Ik wil je best helpen hoor, daar niet van, maar naar mijn mening zullen de makers (en de 'experts' die zich er heel erg in verdiept hebben) je gewoon simpelweg veel beter helpen...
Ik denkd at je better tijdens script 1 al alle insert_id()'s kan opslaan in een array en deze dan weer via een for-lusje verwijderen. (de array kan je tijdelijk opslaan door hem met file_put_contents() en serialize() in een bestand te stoppen, en dan in script 2 weer uit te lezen via file_get_contents() en unzerialize().)
Dus bij script 1, onder de insert-query , in de loop, en dus net boven de echo zou je nog kunnen zetten <? $inserted[] = mysql_insert_id(); ?>. Bovenaan je script moet dan nog even <? $inserted = array(); ?> (even vars definieren tegen errors) en aan het einde zou je nog <? file_put_contents('inserted.txt', serialize($inserted)); ?> kunnen zetten.
edit: Oja, file_put_contents in script1 is pas beschikbaar vanaf PHP versie 5. Mocht je dus een 'undefined function' error krijgen, dan moet je deze 2 funties even in je script plakken, bij voorkeur helemaal bovenaan:
<?php
if(!function_exists('file_put_contents'))
{
function file_put_contents($filename, $data, $file_append = false)
{
$fp = fopen($filename, (!$file_append ? 'w+' : 'a+'));
if(!$fp)
{
trigger_error('file_put_contents cannot write in file.', E_USER_ERROR);
return;
}
fputs($fp, $data);
fclose($fp);
}
}
if (!function_exists('file_get_contents')) {
function file_get_contents($filename, $incpath = false, $resource_context = null)
{
if (false === $fh = fopen($filename, 'rb', $incpath)) {
user_error('file_get_contents() failed to open stream: No such file or directory',
E_USER_WARNING);
return false;
}
Hoe ziet de tabel phpbb_posts eruit; wat zijn de velden?
@Jelmer: Is het wel nodig om met serialize en unserialize te werken? Je kunt toch ook gewoon de array opslaan door alle id's te scheiden door een '|' en dan bij het verwijderen met explode te werken? Of zelfs nog makkelijker; de records meteen na de aanmaak te verwijderen, ik weet alleen niet of dat het probleem verhelpt...