Ahoj,
mám soubor do kteryho přidávám slova. Ale nechci aby tam nějaký slovo bylo možný přidat dvakrát. Můžete mě nakopnout?
díky
pokud by bylo každé slovo na samostatném řádku, tak mě napadá:
$fp = fopen("soubor.neco","r")
$data = file($fp);
Fclose($fp);
reset($data);
while(current($data))
{if($data == $pridavane_slovo)
{$pridat = "ne";};
next($data);}
if($pridat !="ne"}
{$fp = Fopen("soubor.neco","a");
FWrite($fp,$pridavane_slovo);
FClose($fp);}
Nakopnout? Cyklus, ktery soubor napred prohleda, zda-li se tam jiz ono slvo nevyskytuje. Najde-li ho, nevlozi ho.
$fp = "data/slova.txt";
$data = file($fp);
if (!ereg($nejake_slovo, $data)) { echo "slovo neni v databázi."; }
else { echo "slovo už JE v databazi."; }
zkousim to takhle ale nejak to nefacha... jsem aspon na dobre ceste ?:)
$data je pole takze nie ereg($nejake_slovo, $data
ale :
$fp = "data/slova.txt";
$data = file($fp);
foreach($data as $slovo) {
if (!ereg($nejake_slovo, $slovo))
{ echo "slovo neni v databázi."; }
else { echo "slovo už JE v databazi."; }
}
no jo tohle jakž takž funguje, když mám v souboru 50x slovo ahoj a budu ho tam přidat znova nak to 50x hodí hlášku "slovo už je v databázi" a naopak když tam neni tak to 50x napiše "slovo neni v databazi"
uvádím celý script tak jak se ho pokouším rozchodit:
---------------------------------------------------------------------------
<!-- ZACATEK formulare pro zasilani ////////////////////////// -->
<?php
$fp = "data/emaily.txt";
$data = file($fp);
foreach($data as $slovo) {
if (!ereg($email, $slovo))
{
if (ereg("^.+@.+\\..+$",$email))
{
?>
Váš email byl úspěšně přidán do databáze.<br>
Budete pravidelně informován(a) o změnách na těchto stránkách.
<br>
<a href="javascript:history.go(-1)">Zpět</a>
<?
@mail($email,"Pridani emailu do databaze "," Vase emailova adresa byla uspesne pridana do databaze serveru .\n Budete pravidelne informovan(a) o zmenach a novinkach na tomto serveru. \n\n\n\n\n\n----------------------------------------\n Pro zruseni zasilani novinek ze serveru zvolte adresu: http://server.cz/novinky/zrusit.php?email=$email .","From: info@server.cz");
@$filename="data/emaily.txt";
@$fp = fopen($filename,"r");
@$obsah = fread( $fp, filesize( $filename ) );
@fclose( $fp );
$obsah=$email."\n".$obsah;
@unlink($filename);
@$fp = fopen($filename,"w");
@fwrite( $fp , $obsah);
@fclose($fp);
} }
else { echo "Neplatně zadaná e-mailová adresa.<br><a href=\"javascript:history.back()\">Zpět</a>"; }
}
?>
<!-- KONEC formulare pro zasilani ////////////////////////// -->
tën email se tam přidává snad desetkrát...
Když ho tam máš 50x tak nepoužívej foreach, ale while a each(), a ošetři si nalezení výskytu. Jinak, jak už bylo uvedeno výš, můžeš zkusit soubor strčit do proměnné a najít přes nějakou tu fci....
Tak když to budeš zjišťovat tak si dej ten soubor do:
$soubor = join("", file("adresa"));
if(!ereg("neco", $soubor)):
...................
asi by se nenašel nějaký dobrák, který by výše uvedený script přepsal do fungující podoby? jsem vážně natvrdlej a nemám dostatek času na pořádné bádání nad problémem...
předem moc děkuji...
/*
před a za každým slovem musí být nový řádek
*/
$slovo = "ahoj"; // pridavane slovo, ktery se kontroluje, zda neni dvakrat
$file = "slova.txt"; //soubor se slovama
$obsah_souboru = file_get_contents($file);
if(!strstr(strtolower($obsah_souboru), "\n".strtolower($slovo)."\n")){ //prevede se na male znaky a zjisti, zda neni dvakrat
// neni dvakrat
$fp = fopen($file, "a"); //otevření souboru
if(fwrite($fp, "\n" . $slovo . "\n")) echo"slovo bylo uloženo"; // zapasání slova na konec souboru a vložení nového řádku
else echo"problém s přidáváním slova";
fclose($fp);
}else{
echo"slovo už v databázi je";
}