Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: tekst nie jest losowy :\
Forum PHP.pl > Forum > PHP
D3vilroot
W tym programie chodzi o to żeby pobieral on losowe linie z pliku tekstowego i zapisywal je do innego ,ktorego nazwa jest pobierana z jeszcze innego pliku .txt
Moze wydawać się zagmatwane ale spojrzcie na kod
  1. <?
  2. $nazwa = $_POST['nazwa'];
  3.  
  4.  
  5. $temat1 = $nazwa;
  6. $wersja1 = "slowa/$temat1.txt";
  7. $arrFile1 = file( "$wersja1" ); // wczytujesz wszystko do tablicy
  8.  
  9. //shuffle( $arrFile ); // tasujesz/mieszasz tablicę
  10.  
  11. $intLinesCount1 = count( $arrFile1 ); // liczysz ilosc linii
  12. for($i1=; $i1 < $intLinesCount1; $i1++ ) //tablica jest indeksowana od zera
  13. {
  14. //zamienia biale znaki na podkreslenia
  15. $klucz = $arrFile1;
  16. $arrFile1[$i1] = eregi_replace(" ", "_", $arrFile1[$i1]);
  17. //zamienia kropki na myslniki
  18. $arrFile1[$i1] = eregi_replace(".", "-", $arrFile1[$i1]);
  19.  
  20. $arrFile1[$i1] = eregi_replace("n", "", $arrFile1[$i1]);
  21.  
  22. //echo  "$arrFile1[$i1].txt<br />n";
  23. }
  24. ?>
  25.  
  26. <?php
  27. $zlicz = $intLinesCount1 ;
  28. mkdir("pliki/$nazwa");
  29.  
  30. $slowo = $temat1;
  31. //config
  32. $dbname = "slowka";
  33. $username = "root"; 
  34. $password = "krasnal";
  35.  
  36. //laczy do bazy
  37. $dbh = mysql_connect ("localhost", "$username", "$password") or die ('Brak polaczenia z baza danych: ' . mysql_error());
  38. mysql_select_db ("$dbname");
  39.  
  40. for ($a=; $a <13; $a++){
  41. $wykonaj = mysql_query("SELECT * FROM klucze_poczatek WHERE id=$a");
  42. while ($row = mysql_fetch_array($wykonaj)) {
  43. //echo $row[1];
  44. $row[1] = eregi_replace("rn", "", $row[1]);
  45. $row[1] = eregi_replace("nr", "", $row[1]);
  46. $nr[$a] = $row[1];
  47. //echo "<br>$nr[$a]";
  48.  }
  49. }
  50.  
  51. $arrFile[1] = file( "artykuly/jakis_tekst_1.txt" ); // wczytujesz wszystko do tablicy
  52. $arrFile[2] = file( "artykuly/jakis_tekst_2.txt" ); // wczytujesz wszystko do tablicy
  53. $arrFile[3] = file( "artykuly/jakis_tekst_3.txt" ); // wczytujesz wszystko do tablicy
  54. $arrFile[4] = file( "artykuly/jakis_tekst_4.txt" ); // wczytujesz wszystko do tablicy
  55. $arrFile[5] = file( "artykuly/jakis_tekst_5.txt" ); // wczytujesz wszystko do tablicy
  56.  
  57.  
  58. //petla tworzaca pliki
  59. for ($ileS = 0; $ileS < $intLinesCount1; $ileS++){
  60.  
  61. $plik = rand( 1, 5);
  62. shuffle( $arrFile[$plik] ); // tasujesz/mieszasz tablicę
  63.  
  64. for($i=,$a=0; $i < 25; $i++ ) //tablica jest indeksowana od zera
  65. {
  66. $arrFile[$plik][$i] = eregi_replace("nr", "", $arrFile[$plik][$i]);
  67. $arrFile[$plik][$i] = eregi_replace("rn", "", $arrFile[$plik][$i]);
  68. $a++;
  69. $ble[$intLinesCount1] = "$nr[$a] $slowo ".$arrFile[$plik][$i]." $nr[$a] $slowo " .$i++. " Jakis napis".$arrFile[$plik][$i]." $nr[$a] $slowo";
  70. $blee .= $ble[$intLinesCount1];
  71. }
  72.  
  73.  
  74.  
  75. $filename = "pliki/$nazwa/$arrFile1[$ileS].txt"; 
  76. if (!file_exists($filename)) { 
  77. touch($filename);
  78.  chmod($filename,0666); 
  79. }
  80.  
  81. //echo $stron . "<br>";
  82. $losowa = rand(, 50);
  83. $string = "$klucz[$losowa]$blee"; 
  84.  
  85. $file = fopen("$filename", w); 
  86. $zapisz = fwrite($file, $string, '7168'); 
  87. fclose($file); 
  88. }
  89.  
  90. if($zapisz){
  91. echo "Zapisano pliki na haslo $nazwa<br><br>";
  92. }
  93.  
  94.  
  95. ?>

pod zmienną $nazwa kryje się napis np. komputer
Wiec w pliku komputer.txt zapisane sa przyszle nazwy plikow
Kod
strona1
inny napis
jeszcze inny....napis

Zaleznie od tego ile jest linii w tym pliku tyle powstanie nowych

Dlaczego taki kod tworzy mi pliki prawidłowo nazwane (te pobrane z komputer.txt) ale zapisane w nich dane sa identyczne, przeciez mieszam tablice za kazdym okrazeniu petli blink.gif
co wiecej to za kazdym razem wybieram inny losowy plik blink.gif Czemu wiec wszystkie sa identyczne?

Dodalem tez ograniczenie zeby nowo tworzony plik mial 7 KB bo wczesniejsze mialy nawet po 3 MB i po 16 tys. linii worriedsmiley.gif

Potrafi mi ktos pomoc?
php programmer
ogólnie twój kod jest strasznie zagmatwany,
trudno wyczytać z niego o co dokładnie robi,
ale proponuje zrobić tak.

Napisać od nowa i po każdym dodanym duperelu
sprawdzać czy dzieje się to co zamierzasz.

Podziel sobie zadanie
Cytat
chodzi o to żeby pobieral on losowe linie z pliku tekstowego i zapisywal je do innego ,ktorego nazwa jest pobierana z jeszcze innego pliku .txt

na dwie części najpierw zrób
Cytat
chodzi o to żeby pobieral on losowe linie z pliku tekstowego i zapisywal je do innego

i jak już będzie to działało to dopiero zrób kolejną część
Cytat
ktorego nazwa jest pobierana z jeszcze innego pliku .txt

a na samym końcu dopiero eregi_replace
D3vilroot
Poszedlem z Twoją radą i poskutkowalo. I udalo mi się znaleźć błąd.
Wystarczyło po zrobieniu okrążenia pętli "uwolnić" zmienną, która zawiarała tekst zapisywany do pliku.
A tak za każdym razem tworzył sie plik z takimi samymi danymi.

Wielkie dzięki za dobrą rade...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.