Schreiben in txt bis zu bestimmtem Wert.

tetsuo666

Mitglied
Hallo,

1) Ja,. ich habe die Regeln gelesen!
2) Ja, ich habe ausführlichst nach einer Problemlösung selbst gesucht.
3) Trotzdem komme ich nicht weiter...


Ich schreibe mit einem Skript in eine (oder mehrere?) txt-Datei.
Das Ganze soll eine Anmeldung für verschiedene Kurse darstellen, mit unterschiedlicher maximaler Teilnehmerzahl.
Nun soll ausgegeben werden "Kurs ist voll" wenn sich bspw. in Kurs xy schon 5 Teilnehmer eingetragen haben. Ich muss das Ganze leider so machen, da kein mysql möglich.

Wie schaffe ich es dass ab einer bestimmten Anzahl eine Rückmeldung "Kurs ist voll" erscheint?

PHP:
<?php
$nachname = $_POST["nachname"];
$vorname = $_POST["vorname"];
$mailadresse = $_POST["mailadresse"];
$semester = $_POST["semester"];
$kurs = $_POST["kurs"];
$fach = $_POST["fach"];
 
if( isset($nachname)&& isset($vorname)&& isset($mailadresse)&& isset($semester)&& isset($kurs)&& isset($fach) && $nachname!="" && $vorname!="" && $mailadresse!="" && $semester!="" && $kurs!="" && $fach!="") {
 
     $datei="daten.csv";
     $danke="danke.html";
     $zeiger = fopen($datei,"a+");
 
     flock($zeiger, LOCK_EX);
 
     $meinung = $nachname.";".$vorname.";".$mailadresse.";".$semester.";".$kurs.";".$fach."\r\n";
 
     fputs($zeiger, $meinung);
     fclose($zeiger);
     readfile($danke);
} 

else {
     echo "Dir roten Eingabefelder wurden nicht ausgefüllt:<br><br>";
 
     $out = (empty($_POST['nachname']))?'<font style="color:red">Name</font><br>':'<font style="color:green">Name</font><br>';
     $out .= (empty($_POST['vorname']))?'<font style="color:red">Vorname</font><br>':'<font style="color:green">Vorname</font><br>';
     $out .= (empty($_POST['mailadresse']))?'<font style="color:red">E-Mail</font><br>':'<font style="color:green">E-Mail</font><br>';
     $out .= (empty($_POST['semester']))?'<font style="color:red">Semester</font><br>':'<font style="color:green">Semester</font><br>';
     $out .= (empty($_POST['kurs']))?'<font style="color:red">Kurs</font><br>':'<font style="color:green">Kurs</font><br>';
     $out .= (empty($_POST['fach']))?'<font style="color:red">Fach</font><br>':'<font style="color:green">Fach</font><br>';
  
     echo $out;
} 
?> 
<br /><br />
<INPUT TYPE=BUTTON VALUE="Zurück" onClick="history.back()">

Ich muss wohl irgendwie einen Counter einbauen...
aber ich weiss nicht wie, und wo...

PHP:
 $zaehler = fgets($zeiger, 1000); // Zeilenweise? 
 $zaehler = strlen($zaehler);
 echo "zaehler: ".$zaehler."<br>";
 fclose($zeiger);

 if ( $zaehler >= 5 ) 
 {
   echo  "Kurs voll!!<br>";
   exit;
 }
 else


Ich habe allerdings nicht die geringste Ahnung ob ich mit diesem Ansatz auf dem richtigen Weg bin.

Tetsuo


P.S: Auch wenn es gerne vorgeschlagen wird, man solle sich ersteinmal mit den php-Befehlen auseinandersetzen, ist es für einen Anfänger gar nicht einfach, da ich ja nicht einmal weiss nach welchen ich schauen soll...Ein Graus!
 
Zuletzt bearbeitet:
Hallo

Du trennst die einzelnen Daten mit ; dann wäre es noch klug die Datensätze an sich zu trennen bei dir mit \r\n zumindest optisch geschehn, würde ich es mit z.B. | trennen, das sieht so aus:
Code:
bla;bla;bla ...
|
bla;bla;bla...
|
bla;bla;bla...
Wenn du das hinbekommen hast, kannst du bevor du in die Datei schreibst mittels explode() deine Datensätze trennen. Mit count() zählen und vergleichen.

Näheres zur Strukturierung einer CSV-Datei hier

mfg
 
Zuletzt bearbeitet:
Hi, meinst du so etwas?

PHP:
<?php
$nachname = $_POST["nachname"];
$vorname = $_POST["vorname"];
$mailadresse = $_POST["mailadresse"];
$semester = $_POST["semester"];
$kurs = $_POST["kurs"];
$fach = $_POST["fach"];
 
if( isset($nachname)&& isset($vorname)&& isset($mailadresse)&& isset($semester)&& isset($kurs)&& isset($fach) && $nachname!="" && $vorname!="" && $mailadresse!="" && $semester!="" && $kurs!="" && $fach!="") {
 
     $datei="daten.txt";
     $danke="danke.html";
 
$lesen = file($datei);
$anzahl = count($lesen);

if ( $anzahl > 5 ) {
echo "Der Kurs ist voll!";
} else {

 
     $meinung = $nachname.";".$vorname.";".$mailadresse.";".$semester.";".$kurs.";".$fach."\r\n";

$fp = fopen($datei,"a+");
fwrite($fp,$meinung);
fclose($fp); 


     readfile($danke);
} 
}

else {
     echo "Dir roten Eingabefelder wurden nicht ausgefüllt:<br><br>";
 
     $out = (empty($_POST['nachname']))?'<font style="color:red">Name</font><br>':'<font style="color:green">Name</font><br>';
     $out .= (empty($_POST['vorname']))?'<font style="color:red">Vorname</font><br>':'<font style="color:green">Vorname</font><br>';
     $out .= (empty($_POST['mailadresse']))?'<font style="color:red">E-Mail</font><br>':'<font style="color:green">E-Mail</font><br>';
     $out .= (empty($_POST['semester']))?'<font style="color:red">Semester</font><br>':'<font style="color:green">Semester</font><br>';
     $out .= (empty($_POST['kurs']))?'<font style="color:red">Kurs</font><br>':'<font style="color:green">Kurs</font><br>';
     $out .= (empty($_POST['fach']))?'<font style="color:red">Fach</font><br>':'<font style="color:green">Fach</font><br>';
  
     echo $out;
} 
?> 
<br /><br />
<INPUT TYPE=BUTTON VALUE="Zurück" onClick="history.back()">

schiese
 
Super, Perfekt, Danke...so passt es.
Werde jetzt einfach auf mehrere Textfiles ausweichen, quasi pro Kurs eine Datei.
Dann wird das schon klappen...

Danke !
 
Zurück