PHP-Adressbuch

#0
05.10.2005, 16:43
Member

Beiträge: 328
#1 Hi Leute!

Ich erstelle gerade ein Adressbuch für meine Seite auf www.han-g.de.vu(Bitte wenn, dann mit Firefox, unter IE gibt es nämlich Formatierungsprobleme.)

Das Adressbuch ist nun schon vielen Entwicklungsstadien(mithilfe von FipsTheThief von www.tutorials.de, ein danke an dieser Stelle) durchlaufen, jedoch gibt es immer noch Probleme.

Nun greif ich doch auf meine HomeBoard Proteucs zurück und hoffe hier auf Hilfe (...obwohl es hier ja eigentlich ein Security-board und kein Website-Developer-Board ist, ich weiß....)

Hier erst mal das Skript:

PHP Code


<?php
<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 == "") &amp;&amp; ($nachname == "") &amp;&amp; ($adresse == "") &amp;&amp; ($phone == "") &amp;&amp; ($mobile == "") &amp;&amp; ($email == "") &amp;&amp; ($msn == "") &amp;&amp; ($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($datei255); 
       } 
       
fclose($datei);
       
$saved explode("|##|" $saved); 
       for(
$i $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>
?>

Mein Problem ist nun, dass die Einträge nicht alphabetisch sortiert werden, sondern der neue Eintrag wird einfach an den letzten Eintrag rangeschrieben, obwohl da

PHP Code


<?php
sort
($adressen);
?>

steht...

Mfg J!M!
Seitenanfang Seitenende
05.10.2005, 16:59
Member
Avatar Xeper

Beiträge: 5291
#2

Code

<?php
<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
Hmm 2x PHP clause geöffnet?
Ich schreibe übrigens immer nur in PHP also auch den HTML code per echo.

Code

$vorname =  $HTTP_POST_VARS['vorname']; 
$HTTP_POST_VARS[] ist depricated, dafür gibt es die superglobals $_GET und $_POST

Code

<?php
sort($adressen);
?>
Eventuell möchtest du rsort() benutzen?

Code

$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>'.''|##|';
Würde ich noch ein bisschen leserlicher formatieren zb. wie:

Code

$new = '<tr>'."\n";
$new .= '<td>'.$vorname.'</td>'."\n";
...
Sonst wird der ausgegebene HTML code meistens sehr sehr ekelhaft.
__________
E-Mail: therion at ninth-art dot de
IRC: megatherion @ Freenode
Seitenanfang Seitenende
05.10.2005, 17:12
Member

Themenstarter

Beiträge: 328
#3 Hi!
Mittlerweile gibt es wieder eine kleine Änderung.

Das Skript sieht nun so aus:

PHP Code


<?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'];

// SECTION : Schreiben

if($submit)
{
    if((
$vorname == "") &amp;&amp; ($nachname == "") &amp;&amp; ($adresse == "") &amp;&amp; ($phone == "") &amp;&amp; ($mobile == "") &amp;&amp; ($email == "") &amp;&amp; ($msn == "") &amp;&amp; ($icq == ""))
    {
    echo 
"<b>Fehlgeschlagen! Bitte alle Felder ausfüllen!</b>";
    }
    else
    {
       
$new "";
       
$adressen = array();
       
$saved "";
       
$dateiname "abook.txt";

       
$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>'
.'|##|';

      
$dt fopen($dateiname"r");

      while (!
feof($dt)){
        
$saved.= fgets($dt255);
      }
      
fclose($dt);

      
$saved explode("|##|" $saved);
      for(
$i $i count($saved) ; $i++)
        {
           
array_push($adressen $saved[$i]);
        }
      
array_push($adressen$new);
      
sort($adressen);
      
$eintrag join("|##|" $adressen);
      
      
$dt fopen($dateiname"w");
      
fwrite($dt,$eintrag);
      
fclose($dt);
    }
// Schreiben Ende
?>

Jetzt klappt (fast) alles: Die Einträge werden sortiert. Mein Problem ist jetzt jedoch, dass oben die Trennzeichen (string glue) mit angezeigt werden, was nicht sehr gut aussieht. Und was mich überhaupt sehr wundert: Diese trennzeichen sind doch nur intern für die Arrays oder? Warum werden sie dann angezeigt?

Mfg J!M!
Seitenanfang Seitenende
05.10.2005, 23:45
Member
Avatar Gool

Beiträge: 4730
#4

PHP Code


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

Sollte da nicht lieber ein || statt eines && stehen? Denn so wird doch nur geprüft, ob alle Felder leer sind. Mit der ODER-Anweisung sollte dann rausgefiltert werden, ob alle Felder gefüllt sind.

Welche Trennzeichen meinst Du? "|##|"?

Btw wäre hier MySQl eine deutlich einfachere Lösung ;)
__________
Dies ist eine Signatur! Persönlicher Service: Du kommst aus Berlin? Dann melde Dich per PN bei mir, evtl. können wir einen Termin vereinbaren.
Der Grabsteinschubser
Seitenanfang Seitenende
06.10.2005, 12:30
Member
Avatar Xeper

Beiträge: 5291
#5 stimmt Managor hat recht, da sollen || und nicht nur && - oder beides aber dann muss man die if clause verschachteln (kommt ja drauf an was man genau als benötigt ansieht und was optional sein soll).
Ich hätte hier eigentlich auch zu mySQL geraten aber vermutlich wäre das für J!M! ein zu großer Aufwand - oder?
__________
E-Mail: therion at ninth-art dot de
IRC: megatherion @ Freenode
Seitenanfang Seitenende
07.10.2005, 12:35
Member

Themenstarter

Beiträge: 328
#6 das mit dem && ist schon richtig...

denn dann meldet das skript nur ein fehler wenn ALLE felder nicht ausgefüllt sind.. ich meine die Daten wären dann frei zugänglich und man will ja nicht dass jeder gleich seine adressen ansehen kann. so gebe ich ihnen die möglichkeit, das auszulassen was sie nicht bekannt geben wollen.

übrigens hat sich das mit dem Trennzeichen |##| schon erledigt. das skript ist jetzt voll funktionisfähig.

was die datenbank betrifft:

Zitat

Ich hätte hier eigentlich auch zu mySQL geraten aber vermutlich wäre das für J!M! ein zu großer Aufwand - oder?
da hat xeper voll ins schwarze getroffen...

denn,
1. habe ich meine webspace auf funpic, und da gibt es immer so viele probleme mit der datenbank...(was ich bei herstellen der gästebücher gemerkt habe: verbindungsprobleme, zugriffsprobleme etc.)
2.kenne ich mich mit SQL nicht so gut aus... fast gar nicht...

Mfg J!M!

P.S.: Falls ihr interesse habt, dann ich das funktionsfähige Adressbuch Skript mal ins Board stellen....
Seitenanfang Seitenende
07.10.2005, 22:07
Member

Themenstarter

Beiträge: 328
#7 S'il vous plaît....

PHP Code


<?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'];

// SECTION : Schreiben

if($submit)
{
    if((
$vorname == "") &amp;&amp; ($nachname == "") &amp;&amp; ($adresse == "") &amp;&amp; ($phone == "") &amp;&amp; ($mobile == "") &amp;&amp; ($email == "") &amp;&amp; ($msn == "") &amp;&amp; ($icq == ""))
    {
    echo 
"<b>Fehlgeschlagen! Bitte alle Felder ausfüllen!</b>";
    }
    else
    {
       
$new "";
       
$adressen = array();
       
$saved "";
       
$dateiname "abook.txt";

       
$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>'
.'|##|';
      
htmlentities($new);
      
$dt fopen($dateiname"r");

      while (!
feof($dt)){
        
$saved.= fgets($dt255);
      }
      
fclose($dt);

      
$saved explode("|##|" $saved);
      for(
$i $i count($saved) ; $i++)
        {
           
array_push($adressen $saved[$i]);
        }
      
array_push($adressen$new);
      
sort($adressen);
      
$eintrag join("|##|" $adressen);
      
      
$dt fopen($dateiname"w");
      
fwrite($dt,$eintrag);
      
fclose($dt);
    }
// Schreiben Ende
?>
Klick <a href="/new_add.htm">hier</a> um deine Daten einzutragen. Hiermit weise ich daraufhin, dass jeder falsche Eintrag sofort entfernt wird.
<br>
<br>
<br>
<table border="5px">
     <tr>
     <td width="120px">Vorname</td>
     <td width="120px">Nachname</td>
     <td width="120px">Adresse</td>
     <td width="120px">Telefon</td>
     <td width="120px">Handy</td>
     <td width="120px">e-Mail</td>
     <td width="120px">MSN</td>
     <td width="120px">ICQ</td>
     </tr>

<?php
/**
SECTION : Ausgabe nur die Ausgabe und nicht mehr ;)
**/
$text "";
  
$dateiname ="abook.txt";
  
$datei fopen($dateiname "r");
  while(!
feof($datei)){
    
$text .= fgets($datei 255);
  }
  
  
$text explode("|##|" $text);
  for(
$i $i count($text) ; $i++){
      echo 
$text[$i];
  } 
/**
SECTION : Ausgabe Ende
**/
?>
</table>
?>

Seitenanfang Seitenende
Um auf dieses Thema zu ANTWORTEN
bitte erst » hier kostenlos registrieren!!

Folgende Themen könnten Dich auch interessieren: