Hallo allemaal,

op PHP gebied ben ik een hele vroege beginner.

Nu heb ik voor de plaatselijke postduivenvereniging (niet lachen, ik zag het wel!!!) een scriptje aangepast zodat deelnemers rechtstreeks op onze website hun tijden kunnen doorgeven. Altijd leuk wanneer de andere leden kunnen zien hoe laat (of vroeg) iemand anders een duifje thuis kreeg.

In dit scriptje kunnen een 4-tal velden ingevuld worden, t.w. naam, afstand, tijd en snelheid. Dit scriptje echter, plaatst de data achterelkaar in de datebase (vlucht.txt) en maakt er als het ware één regel van...
Nu zou ik graag zien dat de data apart werd opgeslagen zodat er een mooier overzicht gemaakt kan worden op de website.
Boven de invulvelden komen de meldingen te staan, zie: http://www.steedsverder.nl/melding/melding.php

Wie o wie kan mij met dit knullige (beginners) probleem op weg helpen?

Alvast, namens de hele duivenclub, mijn geweldige dank....

dit is het script: (ik hoop dat ik het zo goed doe??

<?php

// -------------------------------------
// Verander de variabelen hieronder

$ShoutboxB = "vlucht.dat";
// Het bestand waar de berichten
// in opgeslagen worden...

$EenKeerAchterElkaar = false;
// Mogen ze maar één keer achter elkaar
// gegevens insturen? true; of false;

$Aantal = 100;
// Het maximum aantal berichten in de shoutbox

// Na hier hoef je niets te veranderen!
// -------------------------------------

echo("<b>De meldingen van: <br>");
echo("<b>Strombeek 25 april 2009 <br>"); 
echo("<b>Lossingstijd: 10.30 uur:</b><br><br>");
echo("<b>naam---afstand-----tijd----snelheid </b><br><br>");

$Inhoud = file($ShoutboxB PHP_EOL  );
if($toevoegen && trim($bericht) && trim($naam)
&& !@strstr(@implode("",@file($IPBestand)),"$REMOTE_ADDR|")) {
$Bestand = fopen($ShoutboxB,"w" PHP_EOL );
for($i = (count($Inhoud)-$Aantal+1); $i < count($Inhoud); $i++) {
fputs($Bestand,$Inhoud[$i]  PHP_EOL ); }
fputs($Bestand,"".
htmlentities(trim(substr($naam,0,45)),ENT_QUOTES)."</a>: ".
htmlentities(trim(substr($afstand,0,8)),ENT_QUOTES)."</a>: ".
htmlentities(trim(substr($bericht,0,8)),ENT_QUOTES)."</a>: ".
htmlentities(trim(substr($snel,0,8)),ENT_QUOTES)."<br>\n" PHP_EOL );
fclose($Bestand  PHP_EOL );
if($EenKeerAchterElkaar) { $IpBestand = fopen($IPBestand,"a"PHP_EOL  );
fputs($IpBestand,"$REMOTE_ADDR|"); fclose($IpBestand  PHP_EOL ); }

}

echo(implode("",file($ShoutboxB)));

?>
<br>
<form method='post'>
Naam (bv. Henk B.):<br> <input type='text' name='naam' maxlength=45><br>
Afstand (bv. 534.123):<br> <input type='text' name='afstand' maxlength=8><br>
Tijd (bv. 12.34.12):<br> <input type='text' name='bericht' maxlength=8><br>
Snelheid (bv. 1123.451):<br> <input type='text' name='snel' maxlength=8>
<br><br><input type='submit' value='Toevoegen' name='toevoegen'>
</form> 
Als je nu eens door vraagt hoe en wat, dan leer je nog eens wat. Het is echt niet zo moeilijk, alleen moet je het zelf wel inzien en een beetje logisch nadenken. Als je zomaar ineens ergens in het bestand PHP_EOL neer gaat zetten, terwijl je niet eens weet wat het ook maar inhoudt, dan kom je nergens. Als je zelf nu eens uit gaat zoeken wát PHP_EOL is en wat het doet, dan weet je ook hoe je het moet gebruiken.
Rustig Jezpur,

Ik heb al vanaf het begin gezegd dat ik er niets van weet, zal me er tzt eens in gaan verdiepen. Ik heb ook gezegd dat ik niet wist waar ik wat neer moest zetten... verder doe ik er niet moeilijk over.
Ik dacht dat het voor de mensen hier een makkie was om me even de goede kant op te sturen, aan jouw post heb ik in ieder geval niets..
Sommige mensen zijn nu eenmaal meer behept met logisch nadenken, misschien heb ik andere kwaliteiten en om het forum niet te vervuilen vraag ik vriendelijk het geheel maar te verwijderen, zo ernstig is het nu ook weer niet!! :D
Je wilt de nieuwe regel ook in het .dat/.txt bestand? En dan per groep (naam - afstand - tijd - snelheid) een nieuwe regel, of ook per afzonderlijk gegeven?

Met \r\n (of alleen \n) begin je in een txt-bestand een nieuwe regel. Met <br /> begin je een nieuwe regel in html. Beter nog zou het zijn om een echte database te gebruiken om je gegevens te scheiden. ;)

Edit:
Zoiets bedoel je dus denk ik?


fputs($Bestand,
htmlentities(trim(substr($naam,0,45)),ENT_QUOTES) . ": " .
htmlentities(trim(substr($afstand,0,8)),ENT_QUOTES) . ": " .
htmlentities(trim(substr($bericht,0,8)),ENT_QUOTES) . ": " .
htmlentities(trim(substr($snel,0,8)),ENT_QUOTES) . "<br>\r\n");


En ow ja, postduiven.......whahahah >:)
Hallo Kasper,

Het gaat er mij (ons) om dat de data keurig onder elkaar komen te staan.

Doordat nu van de 4 ingevoerde waarden één regel wordt gemaakt, zal het geheel (doordat niet ieders naam even lang is) er nu een beetje schots en scheef bij staan... Dus we willen graag de namen recht onder het kopje "naam", de tijd onder "tijd" enz, ...

Moet ik nu dat gedeelte wat jij hier geplaatst hebt, in mijn code plakken?
Aah zo. In dat geval moet je de gegevens in een tabel printen. Ik meende dat je de gegevens in je .dat netjes onder elkaar wilde hebben.


In dat geval, vervang de code uit je eerste post eens met (uit het hoofd, niet getest, ik maak ook wel eens fouten etc. etc.):

<?php

// -------------------------------------
// Verander de variabelen hieronder

$ShoutboxB = "vlucht.dat";
// Het bestand waar de berichten
// in opgeslagen worden...

$EenKeerAchterElkaar = false;
// Mogen ze maar één keer achter elkaar
// gegevens insturen? true; of false;

$Aantal = 100;
// Het maximum aantal berichten in de shoutbox

// Na hier hoef je niets te veranderen!
// -------------------------------------

echo("<b>De meldingen van: <br>");
echo("<b>Strombeek 25 april 2009 <br>"); 
echo("<b>Lossingstijd: 10.30 uur:</b><br><br>");
echo "<table>";
echo("<th>naam</th><th>afstand</th><th>tijd</th><th>snelheid</th>");

$Inhoud = file($ShoutboxB);

if($toevoegen && trim($bericht) && trim($naam)
&& !@strstr(@implode("",@file($IPBestand)),"$REMOTE_ADDR|")) {
    $Bestand = fopen($ShoutboxB,"w");
        for($i = (count($Inhoud)-$Aantal+1); $i < count($Inhoud); $i++) {
            fputs($Bestand,$Inhoud[$i]); }
            fputs($Bestand,
                '<tr><td>' .  htmlentities(trim(substr($naam,0,45)),ENT_QUOTES). '</td><td>' .
                htmlentities(trim(substr($afstand,0,8)),ENT_QUOTES). '</td><td>' . 
                htmlentities(trim(substr($bericht,0,8)),ENT_QUOTES).'</td><td>' .
                htmlentities(trim(substr($snel,0,8)),ENT_QUOTES) . '</td></tr>');
        fclose($Bestand);

if($EenKeerAchterElkaar) { 
    $IpBestand = fopen($IPBestand,"a");
    fputs($IpBestand,"$REMOTE_ADDR|"); 
    fclose($IpBestand); 
}

}

echo(implode("",file($ShoutboxB)));

?>
<br>
<form method='post'>
Naam (bv. Henk B.):<br> <input type='text' name='naam' maxlength=45><br>
Afstand (bv. 534.123):<br> <input type='text' name='afstand' maxlength=8><br>
Tijd (bv. 12.34.12):<br> <input type='text' name='bericht' maxlength=8><br>
Snelheid (bv. 1123.451):<br> <input type='text' name='snel' maxlength=8>
<br><br><input type='submit' value='Toevoegen' name='toevoegen'>
</form>
Kasper, je bent een genie!! (voor ons althans...)

helemaal goed, mooi hoor....

Alleen.. nog één wens.. graag zouden wij de data boven het formuliertje hebben in plaats van eronder...

Dus onder de gegevens van de vlucht (bv lossingstijd) en boven het eerste invulveld...

Maak geen haast, kan ook zelf wel een beetje klooien totdat het werkt..
Zou er nog eens iemand zo vriendelijk willen zijn en naar dit script willen kijken?
We hebben nog 2 wensen (ja, we zijn veeleisend):

een voorbeeld is te zien op: http://www.steedsverder.nl/melding/melding.php

1. Graag zouden we de meldingen boven het formulier willen hebben en onder de lossingsgegevens.
2. Alleen veld 1 (naam) en veld 3 (tijd) moeten verplicht zijn om in te vullen, de andere 2 optioneel.
Pas je link even aan, hij is niet correct.

Not Found
The requested URL /medling/medling.php was not found on this server.

Edit:
1) Even in je script van plaats wisselen.
2) Controleren op correcte invoer.

Reageren