get uit txt-bestand
ik heb een txt bestand met op elke lijn een emailadres. hoe kan ik die een voor een uitlezen en willekeurig er een vantussen halen?
http://www.php.net voor uitleg van alle functies.
Edit: zonder echte array, voorbeeld:
Code (php)
In mijn data.txt staat de volgende informatie:
[email protected]
[email protected]
[email protected]
Zo wordt er dus random een mailadres geselecteerd.
Gewijzigd op 30/05/2005 18:41:00 door ev0l
Je moet alleen nog even de rijen tellen (count();? weet het eigenlijk niet) En die drie veranderen in die waarde...
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
$file = 'data.txt';
$open = fopen($file, 'r');
$data = fread($open, filesize($file));
fclose($open);
// Splitten per regel
$a_Adressen = explode("\n",$data);
$i = rand(1,count($a_Adressen));
// Explode begint bij 0, random bij 1 in dit geval (duidelijkheid)
$i = $i-1;
$output = $a_Adressen[$i];
echo "$output";
if(isset($_GET['action']) && $_GET['action'] == 'delete'){
if($i_key = array_search($_GET['email'])){
unset($a_Adressen);
$handle = fopen($file, 'w');
fwrite($handle, implode("\n", $a_Adressen)) or die('Kon gegevens niet schrijven.');
fclose($handle);
}
}
?>
$file = 'data.txt';
$open = fopen($file, 'r');
$data = fread($open, filesize($file));
fclose($open);
// Splitten per regel
$a_Adressen = explode("\n",$data);
$i = rand(1,count($a_Adressen));
// Explode begint bij 0, random bij 1 in dit geval (duidelijkheid)
$i = $i-1;
$output = $a_Adressen[$i];
echo "$output";
if(isset($_GET['action']) && $_GET['action'] == 'delete'){
if($i_key = array_search($_GET['email'])){
unset($a_Adressen);
$handle = fopen($file, 'w');
fwrite($handle, implode("\n", $a_Adressen)) or die('Kon gegevens niet schrijven.');
fclose($handle);
}
}
?>
Zoiets?
ik ga dit eens proberen (mits nodige aanpassingen). Bedankt ;-)
Ik zal delete er even bijscripten met behulp van een postdata formulier zometeen.
Alle 3 leeg :S Zie niks noppes , niet veel dus
basisbestand
ok, ik kan nu zien waar het gekozen email staat. hoe haal ik die nu vantussen mijn tekstbestand?
ok, ik kan nu zien waar het gekozen email staat. hoe haal ik die nu vantussen mijn tekstbestand?
ja die hebbik al gevonde, hoe zet ik nu alle andere adressen weer in het bestand zonder die ene
je unset hem uit de array, en dan schrijf je de array (met implode("\n") ieder email op een nieuwe regel) weer teru gin het bestand.
// Bestand leegmaken
$owrite = fopen($file, w);
$write = fwrite($owrite, '');
fclose($owrite);
// We gaan herschrijven
$aopen = fopen($file, a);
for ($i=0;$i<$total;$i++) {
if ($i != $id) {
$result = fwrite($aopen, "$expl[$i]\n";
$var = 1;
}
}
if ( $var == '1' ) {
echo "Verwijderd.";
} else {
echo "Niet verwijderd, het opgegeven adres kwam blijkbaar niet in de database voor...";
}
Niet getest, misschien enige foutjes die er zitten, maar je snapt het idee.
Is niet nodig, w (wat een string is, en dus tussen "-tjes moet!) zet de pointer automatisch al bij het begin.
En had ik niet ongeveer hetzelfde script gemaakt, alleen dan een paar posts eerder (en met logischere namen)
basisbestand
Het werkt!!!
maar het kan enkel nog niet het eerste emailadres vinden $a_Adressen[0] vind hij niet bij search_array()
Het werkt!!!
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
$file = 'email.txt';
$open = fopen($file, 'r');
$data = fread($open, filesize($file));
fclose($open);
// Splitten per regel
$a_Adressen = explode("\n",$data);
echo "<p>\n"; // alles weergeven
$max = count($a_Adressen);
for ($i = 0; $i < $max; $i++)
{
echo "<a href='?email=".$a_Adressen[$i]."'>".$a_Adressen[$i]."</a><br>\n";
}
echo "</p>\n\n";
if($i_key = array_search($_GET['email'],$a_Adressen))
{
echo "<p>\$_GET['email'] = ".$_GET['email']."<br>\n"; // hulp tonen
echo "gekozen email staat in array op positie ".$i_key."<br>\n";
echo "Dit maakt \$a_Adressen[".$i_key."] = ".$a_Adressen[$i_key]."</p>\n";
echo "<p><a href='?email=".$a_Adressen[$i_key]."&action=delete'>Verwijder email</a></p>";
if($_GET['action'] == 'delete') // het adres deleten
{
unset($a_Adressen[$i_key]);
$handle = fopen($file, 'w');
fwrite($handle, implode("\n", $a_Adressen)) or die('Kon gegevens niet schrijven.');
fclose($handle);
echo "emailadres verwijdert uit database";
}
}
else{ echo "email staat niet in database";}
?>
$file = 'email.txt';
$open = fopen($file, 'r');
$data = fread($open, filesize($file));
fclose($open);
// Splitten per regel
$a_Adressen = explode("\n",$data);
echo "<p>\n"; // alles weergeven
$max = count($a_Adressen);
for ($i = 0; $i < $max; $i++)
{
echo "<a href='?email=".$a_Adressen[$i]."'>".$a_Adressen[$i]."</a><br>\n";
}
echo "</p>\n\n";
if($i_key = array_search($_GET['email'],$a_Adressen))
{
echo "<p>\$_GET['email'] = ".$_GET['email']."<br>\n"; // hulp tonen
echo "gekozen email staat in array op positie ".$i_key."<br>\n";
echo "Dit maakt \$a_Adressen[".$i_key."] = ".$a_Adressen[$i_key]."</p>\n";
echo "<p><a href='?email=".$a_Adressen[$i_key]."&action=delete'>Verwijder email</a></p>";
if($_GET['action'] == 'delete') // het adres deleten
{
unset($a_Adressen[$i_key]);
$handle = fopen($file, 'w');
fwrite($handle, implode("\n", $a_Adressen)) or die('Kon gegevens niet schrijven.');
fclose($handle);
echo "emailadres verwijdert uit database";
}
}
else{ echo "email staat niet in database";}
?>
maar het kan enkel nog niet het eerste emailadres vinden $a_Adressen[0] vind hij niet bij search_array()
Gewijzigd op 30/05/2005 21:34:00 door Hipska BE
iemand? en hoe deed je dat weer om enkel op het einde bv nog een rij bij te schrijven?
Misschien moet je even omhoog lezen...
ev0l:
^o) dan klopt het niet he, alles kan hij vinden in de array en deleten, behalve emailadres 1Misschien moet je even omhoog lezen...
Bekend maar vreemd probleem. Een array kan wel de waarde 0 hebben, dus 0, 1, 2, 3, 4 enz. Maar als je de array (bijv. {0,1, 2, 3, 4}) zal hij 5 geven, omdat hij bij een begint te tellen. Dat zou dus verklaren dat hij die niet weergeeft.
edit: ooh, shit, ik weet het al.
Als array_search zegt dat het 0 is, denkt de if-constructie dat hij false bedoelt.
Maak er dus van
Code (php)
1
2
3
2
3
<? if(in_array($_GET['email'], $a_Adressen)){
$i_key = array_search($_GET['email'], $a_Adressen);
}?>
$i_key = array_search($_GET['email'], $a_Adressen);
}?>
Gewijzigd op 30/05/2005 23:06:00 door Jelmer -