php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 24.10.2005, 09:58  
Gast
 
Beiträge: n/a
Standard

Vielen Dank für die Tipps. Ich werde sie mir gleich mal zu Gemüte führen ...

Ich habe noch eine Frage:
In meinem PHP Buch wird bei einem Formularfeld immer auf eine andere PHP Datei verwiesen. Ist dann meine Umsetzung, alles in eine Datei zu schrieben, sinnvoll?! Oder sollte das lieber getrennt sein?
Für den Fall, dass meine Lösung so ok ist: Ist die Verwenung von ID und isset auch sinnvoll? Oder kann man das noch "eleganter" lösen?

Daaaanke schonmal für Antwort und Hilfe!!
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 24.10.2005, 10:05  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Basti
Hallo.

Weiterhin unschön ist, dass du deinen Code nicht konsequent Einrückst und das HTML, das du ausgibst.

Und, eleganter geht es natürlich auch, aber dazu vielleicht an einem anderen Abend mehr...

Basti
Ja, die HTML ist noch nicht schön .. aber das soll erstmal seitens PHP funktionieren und auch "elegant" gelöst sein. Das Bunte drum rum, kommt später mal .. :wink:

Und Code einrücken?!? Wie mach ich das am besten?!
Ich bin Angänger und mache es eigentlich so, dass es mirgut gefällt und ich damit klarkomme.
 
Alt 24.10.2005, 10:18  
Gast
 
Beiträge: n/a
Standard

Ich nehm immer 4 leerstellen wenn was neues kommt also z.B. so:

PHP-Code:
<?php
    
echo "bla";
    if(
$hans == 2) {
        print 
'test is 2';
    }
    echo 
"usw...\n";

?>
also nach { (if, switch, for, etc.) welches hinter der function steht neue Zeile mit 4 leerstellen mehr als in der davor.

Ich hoff ich drück mich richtig aus

Zu deinem Code noch, du sprichst 2mal die Datenbank an. Einmal im If than und einmal im else teil. Wenn du es nur einmal vor dem If machst, dann vermeidest du redundanzen (wiederholungen) und somit wird der Quelltext wiederrum ein wenig übersichtlicher.

Ausserdem würde ich anstatt print "<input type='button'>" die ' und " anders rum schreiben. Also print '<input type="button">'. Aber ich glaub ist beides erlaubt.

______________________
edit
in deim Fall so

PHP-Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>

<?php   

    $db 
mysql_connect("localhost""root""") OR die ("Keine Verbindung zum Datenbankserver!");
    
mysql_select_db("museum") OR die ("Die Datenbank kann nicht angesprochen werden!");
 
    if(!isset(
$_GET['id'])){
        print 
"<h1>Welche User soll gelöscht werden?</h1>\n";
        print 
'<form action="deleteuser.php" method="post">

'
."\n";
        print 
'  <input type="hidden" name="id" value="true">'."\n";
        print 
"  Benutzername: 
\n"
;
        print 
'  <select name="login" size="1">'."\n";
        print 
"    <option selected>--------------</option>";

        
$anfrage  "SELECT 
                         Login
                     FROM 
                         benutzer;"
;            
        
$ergebnis mysql_query($anfrage) OR die ("Fehler bei der Datenbakabfrage!");
        
$anz mysql_num_rows($ergebnis);
        for(
$a=0;$a<$anz;$a++) {
            
$nn mysql_result($ergebnis$a);
            print 
"    <option>$nn</option>";
        }   
        
mysql_close($db); // braucht man glaub ich nicht wirklich

        
print "  </select></p>";
        print 
"



\n"
;
        print 
'  <input type="submit" value=" Absenden ">'."\n";
        print 
'  <input type="reset" value=" Abbrechen ">'."\n";
        print 
"</form>\n");
    } else {
        print 
"Test erfolgreich 
\n"
;

        
$s  "SELECT 
                   Login 
               FROM 
                   benutzer 
               WHERE 
                   Login 
               LIKE '"
$_POST['login'] ."';";
                   
        
$ergebnis mysql_query($s) OR die ("Fehler bei der Datenbakabfrage!\n");
        
$anz mysql_num_rows($ergebnis);
            
        print 
"Sicherheitscheck - Anzahl der gefunden Datens&auml;tze:\n";
        print 
$anz
             
        if (
$anz 1) {   
            
$anfrage "DELETE FROM 
                            benutzer
                        WHERE 
                            Login = '"
$_POST['login'] ."';"
            
$ergebnis=mysql_query($anfrage);
        } else {
            print 
"L&ouml;schen nicht m&ouml;glich\n" ;
        }   
        
mysql_close($db);
    }               
?>
</body>
</html>
Ich hoff ich hab alles geändert und keine Fehler eingebaut aber is ja nnur als Beispiel damit du es verstehst.

MFG
 
Alt 24.10.2005, 14:54  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Zitat:
Zitat von Gertrud
In meinem PHP Buch wird bei einem Formularfeld immer auf eine andere PHP Datei verwiesen. Ist dann meine Umsetzung, alles in eine Datei zu schrieben, sinnvoll?! Oder sollte das lieber getrennt sein?
In der Regel ist der erste Schritt fü besseren Code eben die Aufteilung von Code in verschiene Dateien. Beispiel:
  • alle Anfragen der Anwendung/Site gehen an index.php;
    Hier wird alles erledigt, was jeden Aufruf betrifft;
  • dort wird eine zentrale Konfigurations-Datei eingebunden - in deinem Fall würde die einfach die Datenbank-Verbindungsdaten enthalten;
  • In der index.php wird die Anfrage analysiert und z.B. eine Datei action/deluser.php oder action/show_deluser_fom.php (also die auszuführende Aktion) eingebunden.
  • Diese Action-Dateien analysieren die übergebenen Daten und führen die nötigen Aktionen aus, um a) zu entscheiden, welche "Seite", besser "View" der Benutzer ausgeliefert bekommen soll und b) alle Daten, die in diese Sicht gepackt werden müssen zusammenzustellen. Im einfachsten Fall schreibst du eben einfach alle Daten in ein Array und den Namen der Sicht in eine Variable.
  • Wieder zurück in der index.php (da dieser Mechanismus wieder bei jedem Seitenaufruf identisch ist) wird view/$view.php eingebunden, also z.B. view/deluser_form.php oder view/deluser_success.php.
  • Dort grifst du dann auf das Daten-Array zu.
  • Da es auch in den Views, wenn du jede als eigene HTML-Seite konzipierst viele Redundanzen gibt, beschränkst du das HTML, das in den View-Dateien ausgegeben wird auf z.B. den Inhalt eines DIV-Containers der später fertigen Seite und sorgst auch in der index.php dafür, dass das Drumherum, das bei allen Seiten gleich ist überall ausgegeben wird. Entweder mit einem header- und einem footer-Template oder mit einem Haupttemplate, dass dann an der richtigen Stelle ein require "view/$view.php"; ausführt. (Mit Template meine ich hier eine HTML-Seite mit eingebettetem PHP-Code)
Das ganze ist ohne Objeke natürlich nicht wirklich doll zu lösen, aber ich hab so auch schon erfolgreich eine Webanwendung umgesetzt und das ist in jedem Fall ein Schritt in Richtung eleganteres Design.

Zitat:
Für den Fall, dass meine Lösung so ok ist: Ist die Verwenung von ID und isset auch sinnvoll? Oder kann man das noch "eleganter" lösen?
Die Bezeichnung "ID" ist nicht gut getroffen. Ich verwende bei sowas, wenn überhaupt, "sent". Anstatt "true" würde ich auch eher eine 1 nehmen, da hier ja die Zeichenkette "true" ankommt, anstatt der boolsche Wert true.

Wenn du allerings im action-Attribut des Forulars die Aktion eindeutig definierst, kannst du einfach anhand dieses Wertes prüfen, welches Formular da ankommt. Die Daten selbst musst du ja eh noch prüfen.

Was das einrücken angeht, so benutze ich inzwischen immer Tabs. Wichtig ist letztlich, dass du dich auf ein einheitliches Bild festlegst - das für dich übersichtlich ist und auf allgemein Üblichem aufbaut. Schau dir dazu z.B. mal die Coding Conventions/Guidelines von PEAR oder coWIKI oder ... an.

Basti
Basti ist offline  
Alt 24.10.2005, 15:07  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Basti
Es ist Hacke wie Jose - allerdings würde ich mir die Klammern sparen.
Bis auf die angenehme Eigenschaft, dass echo mehrere Parameter aufnehmen kann.
Statt vielen, unnötigen Zeichenkettenverknüpfungen bei print('a'.'b'.'c'.'d'.'e'); benutze ich lieber echo 'a', 'b', 'c', 'd', 'e';

Andereseits kann man echo nicht wie print als Funktion "benutzen".
zB array_map('echo', $a); geht nicht , array_map('print', $a); dagegen schon.
edit: stimmt nicht mal. Auch mit print geht das nicht.
 
Alt 24.10.2005, 15:25  
Benutzer
 
Registriert seit: 10.09.2005
Beiträge: 67
N!cKY
N!cKY eine Nachricht über ICQ schicken
Standard

Zitat:
Zitat von Bruchpilot
Zitat:
Zitat von Basti
Es ist Hacke wie Jose - allerdings würde ich mir die Klammern sparen.
Bis auf die angenehme Eigenschaft, dass echo mehrere Parameter aufnehmen kann.
Statt vielen, unnötigen Zeichenkettenverknüpfungen bei print('a'.'b'.'c'.'d'.'e'); benutze ich lieber echo 'a', 'b', 'c', 'd', 'e';
was ist daran besser, ist doch egal ob man "." oder "," schreibt!
aber zB beim tenären operator gibts unterschiede:
isset($var) ? echo 'hallo' : echo 'nö'; // geht nicht
isset($var) ? print('hallo') : print('nö'); //geht
ok man kanns auch so machen:
echo isset($array) ? 'hallo' : 'nö'; //geht
einklich isses wurschd was man nimmt, ich benutz echo! glaub ich hab mal irgandwo gehört das das sogar schneller ist, aber weis nicht mehr genau!
N!cKY ist offline  
Alt 24.10.2005, 15:45  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Zitat:
Zitat von N!cKY
Zitat:
Zitat von Bruchpilot
Zitat:
Zitat von Basti
Es ist Hacke wie Jose - allerdings würde ich mir die Klammern sparen.
Bis auf die angenehme Eigenschaft, dass echo mehrere Parameter aufnehmen kann.
Statt vielen, unnötigen Zeichenkettenverknüpfungen bei print('a'.'b'.'c'.'d'.'e'); benutze ich lieber echo 'a', 'b', 'c', 'd', 'e';
was ist daran besser, ist doch egal ob man "." oder "," schreibt!
Na, mit dem Punkt-Operator muss jedesmal eine neue Zeichenkette aufgebaut werden und mit dem Komma, schmeißt du einfach eine nach dem anderen raus. (@"bruchpilot": Ich hab mich auf den Fall hier bezogen - natürlich gibts Fälle, wo es relevant ist, was man nimmt)

Zitat:
einklich isses wurschd was man nimmt, ich benutz echo! glaub ich hab mal irgandwo gehört das das sogar schneller ist, aber weis nicht mehr genau!
Das ist genauso albern, wie die Diskussion um single oder double quotes. Lediglich bei dem oben angesprochenen Punkt-Operator könnte das relevant werden. Aber auch nur in Verbindung mit seeehr langen Zeichenketten - und wer gibt überhaupt lange Zeichenketten mit echo aus?

Basti
Basti ist offline  
Alt 24.10.2005, 16:14  
Gast
 
Beiträge: n/a
Standard

also es gab mal nen Test, is auch irgendwo der Link hier im forum, wo getestet wurde was schneller ist.

1) echo ''
2) print('')
3) print ''

(glaub ich dass es die 3 Varianten waren)

und rauskam --> schnellste 1), dann 3) und dann 2). Aber das alles spielt sich im ms bereich ab also net wirklich tragisch was man nimmt.

Zitat:
echo() ist ein internes Sprachkonstrukt und gibt nichts zurück, print() ist eine Expression. Man kann print() also in Situationen benutzen, wo Expressions gefragt sind, z. B. $var ? print("...") : null;.

echo hat eine variable Argumentliste, dabei muss man aber auf die Klammern verzichten: echo $var1, $var2;. print() kann nur ein Argument haben und gibt immer 1 zurück.
Links:
http://www.drweb.de/php/php_schneller_gemacht.shtml
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Design und Code Trennen TeazY PHP Tipps 2008 29 21.05.2008 12:08
Nur bestimmten Html Code zulassen? litterauspirna PHP Tipps 2008 5 29.04.2008 12:30
einfacher Code zum Einbinden von "Inhaltsbereichen" MaxDittmann PHP-Fortgeschrittene 6 01.10.2007 15:54
Datei einfügen aus Ausgabepuffer, damit PHP Code funktionier NetLook PHP Tipps 2006 17 25.10.2006 15:09
FiFo macht Probs beim Css Code Matthiasnet HTML, Usability und Barrierefreiheit 10 18.08.2006 13:14
bb code in htm code wandeln janni PHP Tipps 2007 2 04.11.2005 22:36
[Erledigt] JS Code in PHP Code?? HTML, Usability und Barrierefreiheit 12 08.08.2005 15:45
[Erledigt] Lesbarkeit von Code Off-Topic Diskussionen 6 14.07.2005 14:48
code aus db mit eval replacen chief-thomson PHP Tipps 2005-2 4 08.07.2005 15:33
Fehler im Code, kann ihn nicht finden PHP Tipps 2005 9 16.05.2005 16:17
Bestätigungmail code? PHP Tipps 2005 7 16.05.2005 13:18
[Erledigt] BB Code entfernen PHP Tipps 2005 2 25.04.2005 15:20
[Erledigt] bb code innerhalb von bb code geht nicht PHP Tipps 2007 2 12.01.2005 17:29
Problem mit COde PHP Tipps 2004 5 28.08.2004 16:04


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:44 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.