[PHP] gegevens formulier wegschrijven

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • 6bit
  • Registratie: Februari 2002
  • Laatst online: 19-06-2022
Ik heb een formulier waar mensen zich kunnen opgeven voor een busreis, de bedoeling is dat de namen die opgegeven worden ook zichtbaar worden/zijn op de pagina. dit kan op 2 manieren of het wordt op een soort gastenboek manier gepost onder het formulier (geen idee hoe dat moet) of het wordt weggeschreven naar een txt bestand die vervolgens door een ander script uitgelezen wordt.
Met dat laatste ben ik nu bezit en ik heb dit hieronder, maarik zit vast op de fclose regel en weet niet waarom.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php

$naam = $_POST['namen'];

if ( $_POST['submit'] ) {

fopen ("bus.txt","$naam r+"); 

int fclose (int fh);
}

else {
?>


<form action="bus.php" method=post>
Geef hieronder je naam op als je de 24ste meegaat (meerder namen kan ook).<br>
<input type=textarea name="namen" size="75"><br>
<input type=submit name="submit" value="aanmelden"> 

</form>
<?php
}
?>

the things we fear most have already happened to us


Acties:
  • 0 Henk 'm!

  • We Are Borg
  • Registratie: April 2000
  • Laatst online: 14:26

We Are Borg

Moderator Wonen & Mobiliteit / General Chat
Wat is de error?

Zie ook het voorbeeld op php.net
PHP:
1
2
3
4
5
<?php
  $handle = fopen('somefile.txt', 'r');

  fclose($handle);
?> 

[ Voor 85% gewijzigd door We Are Borg op 31-03-2004 09:59 ]


Acties:
  • 0 Henk 'm!

  • youngster
  • Registratie: Maart 2004
  • Laatst online: 20-05 09:48
PHP:
1
2
3
4
5
6
7
8
9
$naam = $_POST['namen'];

if ( $_POST['submit'] ) {
      $fp = fopen ("bus.txt", "r+"); 
      fwrite($fp, $naam."\n"); 
      fclose ($fp);
}

else {


zoiets??

[ Voor 49% gewijzigd door youngster op 31-03-2004 10:30 ]

Real programmers don't comment their code... it was hard to write, it should be hard to read!


Acties:
  • 0 Henk 'm!

  • 6bit
  • Registratie: Februari 2002
  • Laatst online: 19-06-2022
dat was het,

nu lijkt alles te werken alleen hij schrijft dus helemaal niets naar het txt bestand

nu zit ik alleen met de vraag op de zelfde pagina, staat ook een script die dus het txt bestandje uitleest en dat laat scrollen dus de bedoeling is dat iemand zich aanmeld via het formulier dit wordt weggeschreven naar het bestand bus.txt die vervolgens door een ander script weer uitgelezen wordt,

net hing mijn IE zal zo nog eens proberen, maar wil dit hierboven wel?

dit zijn nu de foutmeldingen
Warning: fopen(bus.txt): failed to open stream: Success in /data/home/httpd/html/www.netspirit.nl/HTML/thalassa/bus.php on line 15

Warning: fclose(): supplied argument is not a valid stream resource in /data/home/httpd/html/www.netspirit.nl/HTML/thalassa/bus.php on line 17

[ Voor 36% gewijzigd door 6bit op 31-03-2004 11:45 . Reden: vraag wat verduidelijkt ]

the things we fear most have already happened to us


Acties:
  • 0 Henk 'm!

Verwijderd

Zet het bus.txt bestand eens op chmod 777 dus read/write en execute voor iedereen.

ben benieuwd :)
en moet :
PHP:
1
$fp = fopen ("bus.txt", "r+");

niet
PHP:
1
$fp = fopen ("bus.txt", "w");

zijn?

kijk anders ff hier http://nl.php.net/quickref.php

p.s.

misschien heb je wat aan deze home made functie wel ff ombouwen als je het gaat gebruiken:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  function set_Parsefile_put($parsefile_content, $parsefile_name, $parsefile_location = "./")
  {
    if(!empty($parsefile_content))
    {
      $parsefile_info = $parsefile_location.$parsefile_name;

      // Kijken of het bestand al bestaat, zo ja gooi weg.
      if( file_exists($parsefile_info) ) {@unlink($parsefile_info);}
      
      // Open het te veranderen bestand.
      if( !($fd = @fopen($parsefile_info, 'w')) ) {return false;}

      fwrite($fd, $parsefile_content);
      fclose($fd);

      // Read and write for owner, read for everybody else
      @chmod($parsefile_info, 0644);

      return true;
    } // end if

    return false;
  }

De functie doet het altijd op chmod 666/777

[ Voor 141% gewijzigd door Verwijderd op 31-03-2004 12:10 ]


Acties:
  • 0 Henk 'm!

  • 6bit
  • Registratie: Februari 2002
  • Laatst online: 19-06-2022
bus.txt is gechmod naar 777 en als ik hem op w zet dan gooit hij alles wat al in het txt bestandje staat weg, toch? ik wil juist dat het toegevoegd word het liefst bovenin het bestandje op een nieuwe regel

the things we fear most have already happened to us


Acties:
  • 0 Henk 'm!

  • Jelmer
  • Registratie: Maart 2000
  • Laatst online: 16:45
Je kunt alleen onderaan een bestand appenden. Als je bovenaan wat wil toevoegen, moet je in een nieuwe file die regel wegschrijven. Vervolgens voeg je het originele bestand toe. Daarna vervang je het oude bestand door het nieuwe.

Acties:
  • 0 Henk 'm!

Verwijderd

ja idd dat is waar ook okee 2e poging :)

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# Eerst ff kijken of het 'bus.txt' bestand ook bestaat.
if( !file_exists("bus.txt") ) {die("ERROR: ik zie geen bus.txt!!!");}

# Het 'bus.txt' bestand openen en de content lezen.
if( !($fd_lezen = @fopen("bus.txt", 'r')) ) {die("ERROR: kan niet lezen!");} 
while (!feof ($fd_lezen)) {
   $bus_content .= fgets($fd_lezen, 4096);
}
fclose($fd_lezen);

# Gooi het bus.txt bestand weg.
@unlink("bus.txt");

# Het 'bus.txt' voor de 2e keer openen alleen nu om er naar toe te schrijven.
if( !($fd_schrijven = @fopen("bus.txt", 'w')) ) {die("ERROR: kan niet schrijven!");} 

# Nu schrijven we naar het bestand toe. 
fwrite($fd_schrijven, "we voegen iets aan het begin toe".$bus_content."\n");
fclose($fd_schrijven);

[ Voor 170% gewijzigd door Verwijderd op 31-03-2004 13:53 ]


Acties:
  • 0 Henk 'm!

  • 6bit
  • Registratie: Februari 2002
  • Laatst online: 19-06-2022
ik heb nu dit:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php

$naam = $_POST['namen'];

if ( $_POST['submit'] ) { 
      $fp = fopen ("bus.txt", "r+"); 
      fwrite($fp, $naam."\n"); 
      fclose ($fp);

}

else {
?>


<form action="bus.php" method=post>
Geef hieronder je naam op als je de 24ste meegaat (meerder namen kan ook).<br>
<input type=textarea name="namen" size="75"><br>
<input type=submit name="submit" value="aanmelden"> 

</form>
<?php
}
?>


en dat zorgt ervoor dat de eerste naam in de bus.txt wordt vervangen door de nieuwe, niet helemaal de bedoeling

<edit> ik was dus iets te laat met dit bericht haha ik wil dus dat de opgegeven namen bovenaan komen, moet ik dan dus idd zorgen dat hij eerst een nieuw bestand maakt en vervolgens het ouwe bestand erachter stopt en weer hernoemt naar bus.txt</edit>

[ Voor 31% gewijzigd door 6bit op 31-03-2004 13:33 ]

the things we fear most have already happened to us


Acties:
  • 0 Henk 'm!

  • We Are Borg
  • Registratie: April 2000
  • Laatst online: 14:26

We Are Borg

Moderator Wonen & Mobiliteit / General Chat
Zet allereerst eens error_reporting(E_ALL) boven je script. Regel 3 zal dan gelijk een waarschuwing geven. Daarnaast heb ik zo mijn twijfels over regel 5 qua waarschuwingen (isset), maar goed.

Heb je de manual er al eens naast gelegd :) ?

Acties:
  • 0 Henk 'm!

  • 6bit
  • Registratie: Februari 2002
  • Laatst online: 19-06-2022
ik heb geleerd om regel 5 zo te doen en wat is er mis met regel 3

the things we fear most have already happened to us


Acties:
  • 0 Henk 'm!

Verwijderd

De code die bij mijn laatste bericht staat doet het hier lokaal (Win32+Apache) goed :z

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
38
39
40
41
42
<?PHP

if ( !empty($_POST['submit'])  )
{
  $naam = htmlspecialchars($_POST['namen']);

  # Eerst ff kijken of het 'bus.txt' bestand ook bestaat.
  if( !file_exists("bus.txt") ) {die("ERROR: ik zie geen bus.txt!!!");}

  # Het 'bus.txt' bestand openen en de content lezen.
  if( !($fd_lezen = @fopen("bus.txt", 'r')) ) {die("ERROR: kan niet lezen!");}
  while (!feof ($fd_lezen)) {
   $bus_content .= fgets($fd_lezen, 4096);
  }
  fclose($fd_lezen);

  # Gooi het bus.txt bestand weg.
  @unlink("bus.txt");

  # Het 'bus.txt' voor de 2e keer openen alleen nu om er naar toe te schrijven.
  if( !($fd_schrijven = @fopen("bus.txt", 'w')) ) {die("ERROR: kan niet schrijven!");}

  # Nu schrijven we naar het bestand toe.
  fwrite($fd_schrijven, $naam."\r\n".$bus_content."\r\n");
  fclose($fd_schrijven);

}
//else
//{

?>


<form action="test.php" method=post>
Geef hieronder je naam op als je de 24ste meegaat (meerder namen kan ook).<br>
<input type=textarea name="namen" size="75"><br>
<input type=submit name="submit" value="aanmelden">

</form>
<?php
//}
?>


Heb de else constructie ff uitgezet anders is het lastig testen ;)

En van action heb ik test.php gemaakt.

[ Voor 160% gewijzigd door Verwijderd op 31-03-2004 14:13 ]


Acties:
  • 0 Henk 'm!

  • 6bit
  • Registratie: Februari 2002
  • Laatst online: 19-06-2022
ik krijg nog steeds een error ik heb het geprobeerd, misschien zie ik nog wat over het hoofd dit is de complete code het onderste deel is dus een scroller die het txt bestand inleest Regel 15 geeft een error trouwens
code:
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Geef hieronder je naam op als je</title>
</head>

<body>
<?php

$naam = $_POST['namen'];
if ( $_POST['submit'] ) { 

# Eerst ff kijken of het 'bus.txt' bestand ook bestaat. 
if( !file_exists(("bus.txt") ) {die("ERROR: ik zie geen bus.txt!!!");} 

# Het 'bus.txt' bestand openen en de content lezen. 
if( !($fd_lezen = @fopen("bus.txt", 'r')) ) {die("ERROR: kan niet lezen!");} 
while (!feof ($fd_lezen)) { 
   $bus_content .= fgets($fd_lezen, 4096); 
} 
fclose($fd_lezen); 

# Gooi het bus.txt bestand weg. 
@unlink("bus.txt"); 

# Het 'bus.txt' voor de 2e keer openen alleen nu om er naar toe te schrijven. 
if( !($fd_schrijven = @fopen("bus.txt", 'w')) ) {die("ERROR: kan niet schrijven!");} 

# Nu schrijven we naar het bestand toe. 
fwrite($fd_schrijven, "we voegen iets aan het begin toe".$bus_content."\n"); 
fclose($fd_schrijven);
 
else {
?>


<form action="bus.php" method=post>
Geef hieronder je naam op als je de 24ste meegaat (meerder namen kan ook).<br>
<input type=textarea name="namen" size="75"><br>
<input type=submit name="submit" value="aanmelden"> 

</form>
<?php
}
?>

   <p align="left"><font size=1>Laatste namen die zijn toegevoegd:
   <applet code="ticker.class" width="140" height="40">
   <param name=filename value="bus.txt">
   <param name=font value="Arial, 1, 9">
   <param name=fontcolor value="000000, 336699">
   <param name=target value="mainframe">
   <param name=xmargin value="1">
   <param name=ymargin value="1">
   <param name=spacing value="30">
   <param name=rectcolor value="336699">
   <param name=bgcolor value="FFFFCC">
   <param name=speed value="10">
  </applet></p>
</body>

</html>

[ Voor 20% gewijzigd door 6bit op 31-03-2004 14:01 ]

the things we fear most have already happened to us


Acties:
  • 0 Henk 'm!

  • We Are Borg
  • Registratie: April 2000
  • Laatst online: 14:26

We Are Borg

Moderator Wonen & Mobiliteit / General Chat
6bit schreef op 31 maart 2004 @ 13:45:
ik heb geleerd om regel 5 zo te doen en wat is er mis met regel 3
Imo is dit dan mooier:

PHP:
1
2
3
4
<?php
if (Isset($_POST['submit')) {
// doe wat
}


Wat er mis is met regel 3: als je $_POST waarde nog niet bestaat, wordt hij al wel gekoppeld (sorry, vakjargon beheers ik niet) aan $naam. Een niet bestaande waarde koppelen aan een $naam. Snap je wat ik bedoel ;) ?

Acties:
  • 0 Henk 'm!

Verwijderd

ja idd die geeft een error (haakje te veel) kijk even naar mijn laatste berichtje dat is oude code :)
PHP:
1
2
3
if ( !empty($_POST['submit'])  ) {
 //doe iets
}

dit kan ook nog mooier vind ik zelf :)

We Are Borg:
okee je hebt gelijk zetten we die regel binnen de if ;)

[ Voor 78% gewijzigd door Verwijderd op 31-03-2004 14:14 ]


Acties:
  • 0 Henk 'm!

  • 6bit
  • Registratie: Februari 2002
  • Laatst online: 19-06-2022
ok super hij werkt nu in zoverre, alleen is het ook mogelijk om nog een enter na de nieuwe naam die wordt toegevoegd, ik krijg zeg maar nu in de scroller

jan

piet


voeg ik bert toe dan krijg ik

bertjan

piet

hoop dat jullie snappen wat ik bedoel

the things we fear most have already happened to us


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

We Are Borg schreef op 31 maart 2004 @ 14:01:
[...]

Imo is dit dan mooier:

PHP:
1
2
3
4
<?php
if (Isset($_POST['submit')) {
// doe wat
}
Imho is dit de meeste belabberde manier om een post te checken... Je kunt namelijk ook gewoon kijken of er gepost is (waarom mensen naar een submitknop blijven kijken is mij een raadsel):

PHP:
1
if ($_SERVER['REQUEST_METHOD'] == 'POST') {

Acties:
  • 0 Henk 'm!

  • We Are Borg
  • Registratie: April 2000
  • Laatst online: 14:26

We Are Borg

Moderator Wonen & Mobiliteit / General Chat
Bosmonster schreef op 31 maart 2004 @ 14:17:
[...]


Imho is dit de meeste belabberde manier om een post te checken... Je kunt namelijk ook gewoon kijken of er gepost is (waarom mensen naar een submitknop blijven kijken is mij een raadsel):

PHP:
1
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
Ik gebruik de methode die jij beschrijft ook voor mijn kleine prutswerkjes, maar wilde in de sfeer blijven van de TS'er. Hij checked op submit en ik geef een methode die geen waarschuwingen geeft met error_reporting(E_ALL). Maar je hebt gelijk, ik vind de methode die jij beschrijft ook het mooist :)

offtopic:
De meeste belabberde manier is if ($submit) ;)

[ Voor 7% gewijzigd door We Are Borg op 31-03-2004 14:21 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Ben je dat niet afhangelijk van de "register_globals" instellingen :? voor de rest super oplossing trouwens (ga ik ook dan maar eens gebruiken). ;)

2 keer enter na de nieuwe naam:
PHP:
1
fwrite($fd_schrijven, $naam."\r\n\r\n".$bus_content."\r\n");

hopla :)

of bedoel je in html :? dan ff ergens een <br /> tussen zetten.
PHP:
1
fwrite($fd_schrijven, $naam."<br />\r\n".$bus_content."\r\n");

[ Voor 152% gewijzigd door Verwijderd op 31-03-2004 18:38 ]

Pagina: 1