PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP Adressbuch


J!M!
04.10.2005, 00:50:25
Hi Leute!

Ich arbeite gerade an einem Adressbuch für meine Website (hier (www.han-g.de.vu)) .
An dem Skript habe ich nun schon vieles geändert. Nun stehe ich vor meinem letzten Problem, das ich wirklich nicht merhr lösen kann.

Hier das Skript:
<?php
$vorname = $HTTP_POST_VARS['vorname'];
$nachname = $HTTP_POST_VARS['nachname'];
$adresse = $HTTP_POST_VARS['adresse'];
$phone = $HTTP_POST_VARS['phone'];
$mobile = $HTTP_POST_VARS['mobile'];
$email = $HTTP_POST_VARS['email'];
$msn = $HTTP_POST_VARS['msn'];
$icq = $HTTP_POST_VARS['icq'];



if($submit)

{
if(($vorname == "") && ($nachname == "") && ($adresse == "") && ($phone == "") && ($mobile == "") && ($email == "") && ($msn == "") && ($icq == ""))
echo "<b>Fehlgeschlagen! Bitte alle Felder ausfüllen!</b>";

else
{

// Variable X wird auf null gesetzt
$x = 0;
$new = "";
$adressen = array();
$saved = "";
$dateiname = "abook.txt";
$datei = fopen($dateiname, "r");
$new = '
<table>
<tr>
<td>'.$vorname.'<td>
<td>'.$nachname.'</td>
<td>'.$adresse.'</td>
<td>'.$phone.'</td>
<td>'.$mobile.'</td>
<td>'.$email.'</td>
<td>'.$msn.'</td>
<td>'.$icq.'</td>
</table><br>'.''|##|';

htmlentities($new);

$datei = fopen("abook.txt", "a");
fwrite($datei, "$new");
fclose($datei);

$datei = fopen($dateiname, "r");
while (!feof($datei)) {
$saved.= fgets($datei, 255);
}
fclose($datei);
$saved = explode("|##|" , $saved);
for($i = 0 ; $i < count($saved) ; $i++)
{
array_push($adressen , $saved[$i]);
}


$eintrag = array_push($adressen, $vorname, $nachname, $adresse, $phone, $mobile, $email, $msn, $icq) ;
// neuer eintrag ist quasi das was du im Mailform da angegeben hast
$eintrag = asort($adressen);
$eintrag = join (" " , $adressen);


$datei=fopen("abook.txt", "w");
fwrite($datei, "$eintrag");

fclose($datei);
}
}

$dateiname = "abook.txt";
$datei = fopen($dateiname, "r");
fpassthru($datei);

?>

Das Problem ist jetzt, dass ich nur einen Zeilenumbruch vorgegeben habe, es aber dann mehr als zwei gemacht werden.

Das Adressbuch findet ihr auf hier (http://hang.ha.funpic.de/book.htm). Um etwas einzutragen klcik http://hang.ha.funpic.de/new_add.htm (http://hang.funpic.de/new_add.htm).

Mfg J!M!

vestine
04.10.2005, 22:06:47
probier's als erstes mal mit nem abschließenden </tr> ;)

J!M!
05.10.2005, 14:06:34
Mittlerweile hat sich einiges geändert...
Das Format-Problem habe ich nun nicht mehr.
Mein Skript sieht jetzt so aus:
<table>
<tr>
<td>Vorname</td>
<td>Nachname</td>
<td>Adresse</td>
<td>Telefon</td>
<td>Handy</td>
<td>e-Mail</td>
<td>MSN</td>
<td>ICQ</td>
</tr>
<?php
$vorname = $HTTP_POST_VARS['vorname'];
$nachname = $HTTP_POST_VARS['nachname'];
$adresse = $HTTP_POST_VARS['adresse'];
$phone = $HTTP_POST_VARS['phone'];
$mobile = $HTTP_POST_VARS['mobile'];
$email = $HTTP_POST_VARS['email'];
$msn = $HTTP_POST_VARS['msn'];
$icq = $HTTP_POST_VARS['icq'];



if($submit)

{
if(($vorname == "") && ($nachname == "") && ($adresse == "") && ($phone == "") && ($mobile == "") && ($email == "") && ($msn == "") && ($icq == ""))
echo "<b>Fehlgeschlagen! Bitte alle Felder ausfüllen!</b>";

else
{

// Variable X wird auf null gesetzt
$x = 0;
$new = "";
$adressen = array();
$saved = "";
$dateiname = "abook.txt";
$datei = fopen($dateiname, "r");
$new = '

<tr>
<td>'.$vorname.'</td>
<td>'.$nachname.'</td>
<td>'.$adresse.'</td>
<td>'.$phone.'</td>
<td>'.$mobile.'</td>
<td>'.$email.'</td>
<td>'.$msn.'</td>
<td>'.$icq.'</td>
</tr>
<br>'.''|##|';

htmlentities($new);

$datei = fopen("abook.txt", "a");
fwrite($datei, "$new");
fclose($datei);

$datei = fopen($dateiname, "r");
while (!feof($datei)) {
$saved.= fgets($datei, 255);
}
fclose($datei);
$saved = explode("|##|" , $saved);
for($i = 0 ; $i < count($saved) ; $i++)
{
array_push($adressen , $saved[$i]);
}

// neuer eintrag ist quasi das was du im Mailform da angegeben hast
sort($adressen);
$eintrag = join (" " , $adressen);


$datei=fopen("abook.txt", "w");
fwrite($datei, "$eintrag");

fclose($datei);
}
}

$dateiname = "abook.txt";
$datei = fopen($dateiname, "r");
fpassthru($datei);

?>

</table>

Dafür habe ich jetzt das Problem, dass die Einträge nicht mehr alphabetisch sortiert werden, sondern einfach an den letzten Eintrag rangehängt wird.

Hoffe auf Hilfe!

Mfg J!M!

sysop
05.10.2005, 20:15:13
$datei = fopen("abook.txt", "a");

damit hängst du die daten nur an eine bestehende datei an. wenn du alles sortiert haben möchtest musst du jedes mal die komplette datei in ein array einlesen, den neuen eintrag hinzufügen, das ganze array sortieren und dann DAS GANZE ARRAY schreiben.

eigentlich ist das aber egal, warum sortierst du die ausgabe nicht ?