php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 24.05.2005, 13:51  
Gast
 
Beiträge: n/a
Standard

naja axo...
dann hastz du es jetzt eigentlich auf den punkt gebracht

es is einfach momentan die frage wie ich diesen spagetticode in functionen umwandle...
oder würdest du mir eher raten das ganze neu zu schreiben und somit von vornherein schon mit functionen arbeiten?

ich denke es ist schwieriger das umzuwandeln als das script neu zu verfassen und dann aber gleich richtig...
oder denkst du da anders?

ich bin auch grad dabei das ganze mal in funktionen zu packen....
 
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 24.05.2005, 14:52  
Gast
 
Beiträge: n/a
Standard

also ich hab diese functionen geschrieben...
könntet ihr das mal bewerten...
also a la du bist auf dem richtigen weg oder eher ned...


danke euch...

PHP-Code:
<?php
<?
class 
Reservierung {

    function 
get_time_an($abflugh,$abflugm)
    {
        
$time__an $ankunfth "." $ankunftm;
        
$time__ab $abflugh "." $abflugm;
        
$time 12.00;
        if(
$time__an $time)
        {
            
$time_an 0.5;
        }
        else
        {
            
$time_an 1;
        }
        return 
$time_an;
    }
    function 
get_time_an($ankunfth,$ankunftm)
    {
        if(
$time__ab $time)
        {
            
$time_ab 1;
        }
        else
        {
            
$time_ab 0.5;
        }
        return 
$time_ab;
    }
    
/* bis hier werden der 1. und der letzte Tag berechnet. wegen halb und ganztagsauslastung */
    
function get_dates($ankunfttag,$ankunftmonat,$ankunftjahr,$abflugtag,$abflugmonat,$abflugjahr)
    {
        
$ankunft mktime(0,0,0,$ankunftmonat,ankunfttag,ankunftjahr);
        
$abflug mktime(0,0,0,$abflugmonat,abflugtag,abflugjahr);
        
$abflugreal=$abflug;
        
$i=0;
        do
        {
            
$datum_array[$i]=$abflug;
            
$abflug+=86400;
            
$i=$i+1;
        } while(
$abflug <= $ankunft);
        
$ende=$datum_array[count($datum_array)-1];
        if(
$ende==$i)
        {
            return 
$datum_array;
        }
        else
        {
            return 
false;
        }
    }
    function 
get_id_by_date($datum_array)
    {
        @include (
'modules/dbs.php');
        foreach(
$datum_array as $key => $datumsangaben)                                /* < */
        
{
            
$date date("Y-m-d"$datumsangaben);
            
$res=@mysql_query("SELECT datum,id FROM datum WHERE datum = '$date'") OR die('Datenbank Offline');
            
$num=@mysql_num_rows($res);
            if(
$num!=1)
            {
                
$fehler_reservierungen['uncorrect_date'] = "<span>Ihre Datumsangaben waren nicht korrekt oder nach dem 31.12.2005</span>";
                return 
$fehler_reservierungen[uncorrect_date];
            }
            
$dsatz mysql_fetch_assoc($res) or die('keine Datensätze vorhanden');
            
$did[$key] = $dsatz['id'];
        }
        return 
$did;
    }
    function 
get_free_place($datum_array)
    {
        @include (
'modules/dbs.php');
        foreach(
$datum_array as $key => $datumsangaben)                                /* < */
        
{
            
$date date("Y-m-d"$datumsangaben);
            
$res=@mysql_query("SELECT datum,current_plaetze,max_plaetze FROM datum WHERE datum = '$date'") OR die('Datenbank Offline');
            
$num=@mysql_num_rows($res);
            if(
$num!=1)
            {
                
$fehler_reservierungen['uncorrect_date'] = "<span>Ihre Datumsangaben waren nicht korrekt oder nach dem 31.12.2005</span>";
                return 
$fehler_reservierungen[uncorrect_date];
            }
            
$dsatz mysql_fetch_assoc($res) or die('keine Datensätze vorhanden');
            if(
$datumsangaben==$abflugreal)
            {
                
$dsatz['current_plaetze'] = $dsatz['current_plaetze'] + $time_an;
            }
            if(
$datumsangaben==$ende)
            {
                
$dsatz['current_plaetze'] = $dsatz['current_plaetze'] + $time_ab;
            }
            if(
$datumsangaben!=$abflugreal AND $datumsangaben!=$ende)
            {
                
$dsatz['current_plaetze'] = $dsatz['current_plaetze'] + 1;
            }
            if(
$dsatz['current_plaetze']<=$dsatz['max_plaetze'])                /* < */
            
{
                
$curent $dsatz['current_plaetze'];
                if(
$datumsangaben==$abflugreal)
                {
                    
$currentp $curent $time_an;
                }
                if(
$datumsangaben==$ende)
                {
                    
$currentp $curent $time_ab;
                }
                if(
$datumsangaben!=$abflugreal AND $datumsangaben!=$ende)
                {
                    
$currentp $curent 1;
                }
                
$current[$date] = $currentp;
                return 
$current;
            }
            else
            {
                
$datum_no_place=$dsatz['datum'];
                
$no_place[$key] = $datum_no_place;
                return 
$no_place;
            }
        }
    }
    function 
save_place($current)
    {
        foreach(
$current as $date => $place_number)   /* < */
        
{
            
$sql="UPDATE datum SET current_plaetze = '".$place_number."' WHERE datum = '$date'";
            
$res=mysql_query($sql);
            
$num_1=mysql_affected_rows();
            if(
$num_1!=1)
            {
                echo 
"Platz von $datum konnte nicht aktualisiert werden
"
;
                
$no_datum[]=$datum;
            }
        }
        if(empty(
$no_datum))
        {
            return 
false;
        }
        else
        {
            return 
true;
        }
    }
    function 
save_res_to_kunde($datum_array,$did,$_SESSION)
    {
        
$tage=count($datum_array);

        
$datum implode("."$did);

        
$ende_time=mktime($_SESSION['anH'], $_SESSION['anM'], 0$_SESSION['ankunftmonat'], $_SESSION['ankunfttag'], $_SESSION['ankunftjahr']);
        
$abflug_time=mktime($_SESSION['abH'], $_SESSION['abM'], 0$_SESSION['abflugmonat'], $_SESSION['abflugtag'], $_SESSION['abflugjahr']);

        
$sql="INSERT INTO reservierungen(kunden_id, datum_id, ziel, dauer,";
        
$sql.=" besonderes, personen, kosten, time__an, time__ab, abflugnr,";
        
$sql.="ankunftflugnr, ankunfttag, abflugtag) values('".mysql_real_escape_string($id)."',";
        
$sql.=" '".mysql_real_escape_string($datum)."', '".mysql_real_escape_string($ziel)."',";
        
$sql.=" '".mysql_real_escape_string($tage)."', '".mysql_real_escape_string($besonderes)."',";
        
$sql.=" '".mysql_real_escape_string($personen)."', '".mysql_real_escape_string($kosten)."',";
        
$sql.=" '".mysql_real_escape_string($time__an)."', '".mysql_real_escape_string($time__ab)."',";
        
$sql.=" '".mysql_real_escape_string($abflugnr)."', '".mysql_real_escape_string($ankunftflugnr)."',";
        
$sql.=" '".mysql_real_escape_string($ende_time)."', '".mysql_real_escape_string($abflug_time)."')";
        
$res=mysql_query($sql);
        
$num_2=mysql_affected_rows();
        
$res_id mysql_insert_id();

        return 
$res_id;
    }
    function 
save_res_to_buchhaltung($res_id)
    {
        if(empty(
$buero_id))
        {
            
$buero_id=0000;
        }
        
$date time();
        
$sql="INSERT INTO buchhaltung(res_id, res_datum, reise_id) values('".mysql_real_escape_string($res_id)."', '".mysql_real_escape_string($date)."', '".mysql_real_escape_string($buero_id)."')";
        
$res=mysql_query($sql);
        
$num_3=mysql_affected_rows();
        if(
$num_3!=1)
        {
            echo 
"Fehler in der Buchaltung";
            
/* mail(); */
        
}
    }
}
?>
?>
 
Alt 24.05.2005, 15:17  
Gast
 
Beiträge: n/a
Standard

is euch der Code zu lang?

oder zu unkommentiert?
 
Alt 24.05.2005, 15:53  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

so grad lecker pizza gegessen :P

naja mal ein paar sachen die auf anhieb bemängeln würde

-> include innerhalb einer methode einer klasse
-> viele viele @'s
-> ich dachte du wolltest ne mysql-klasse benutzen? ich seh überall nur mysql_query ohne mysql_error

PHP-Code:
 if(empty($buero_id)) 
woher soll die kommen ? doch nicht etwa von register_globals = on ausgegangen? weil der methode wird sie nicht übergeben.

PHP-Code:
function save_res_to_kunde($datum_array,$did,$_SESSION
öhm angst? ein parameter der die das $_SESSION array ÜBERSCHREIBT ?

bissel übersicht bei den querys z.B.: (hab ich grad aus nem anderen thread genommen)
[php]
$sql = sprintf("
INSERT INTO
benutzerverwaltung_alex
(
Name,
Vorname,
Adresse,
PLZ,
Ort,
Geburtsdatum,
Mailadresse,
Benutzername,
Passwort
)
VALUES
(
'%s',
'%s',
'%s',
'%s',
'%s',
'%s',
'%s',
'%s',
MD5('%s')
)",
$_POST['Name'],
$_POST['Vorname'],
$_POST['Adresse'],
$_POST['PLZ'],
$_POST['Ort'],
$_POST['Jahr'].','.$_POST['Monat'].','.$_POST['Tag'],
$_POST['Mailadresse'],
$_POST['Benutzername'],
$_POST['Passwort']
);
[/b]

das mals fürs erste :P

und kommentierung fehlt auch :P ich bevorzuge die phpdoc-kommentare:
schau dir mal ne PEAR-klasse an :P
oder smarty
.....
das nenne ich einfach praktisches kommentieren, besonders weil man eben ne doku drauß erzeugen.

mfg
robo47
robo47 ist offline  
Alt 24.05.2005, 16:10  
Gast
 
Beiträge: n/a
Standard

also buero_id kommt aus dem vorhergegangen formular und wird geprüft ob es in der DB vorhanden ist.....
// Erstmal guten appetit nachträglich
dann wird die buero_id von S_POST['$buero_id'] in $buero_id umgewandelt....
was natürlich noch geändert wird da das von der "alten" Version der Website is...
ich will ja ne neue, gute Version schreiben...
also wird das garantiert aktualisiert...
zu den mysql querys....
ich hab die noch ned geschreieben....
ich bin froh das ich die funktionen so schnell so hinbekommen hab...
geht ja momentan mal blos ums prinzip


Das mit dem $_SESSION:
da wird das SESSION array übergeben um den timestamp zu erzeugen...
komm auch ursprünglich von nem $_POST ins $_SESSION array....

die kommentierung bekommste natürlich noch..


also ich werd erst morgen wieder rankommen....
hab grad nen fetten streit mit meiner freundin hinter mir und da somit auch in absehbarer Zeit schluss is brauch ich heut erstma n zock abend


also danke dir derweilen und wenn du morgen mal zeit hast machen wir hier weiter...

danke robo und axo bis morsche...

MfG

Julied
 
Alt 24.05.2005, 16:35  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

Zitat:
Das mit dem $_SESSION:
da wird das SESSION array übergeben um den timestamp zu erzeugen...
komm auch ursprünglich von nem $_POST ins $_SESSION array....
nix da, superglobals nicht als parameter nehem, übergeben ja, aber nciht als parameter in einer funktion.
robo47 ist offline  
Alt 24.05.2005, 22:49  
axo
Erfahrener Benutzer
 
Registriert seit: 24.12.2004
Beiträge: 1.814
axo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

naja, du hast teilweise viel zu viele zeilen code drin.

beispiel:
PHP-Code:
<?php
// alt:
   
function get_time_an($abflugh,$abflugm)
   {
      
$time__an $ankunfth "." $ankunftm;
      
$time__ab $abflugh "." $abflugm;
      
$time 12.00;
      if(
$time__an $time)
      {
         
$time_an 0.5;
      }
      else
      {
         
$time_an 1;
      }
      return 
$time_an;
   } 

// neu
function get_time_an($abflugh,$abflugm) {
      
$time__an $ankunfth "." $ankunftm;
      
$time 12.00;
      return ((
$time__an $time) ? 0.5 1.0);
   }

// oder:
// alt:
 
if(empty($no_datum))
      {
         return 
false;
      }
      else
      {
         return 
true;
      } 
// neu: 
return (!empty($no_datum));
?>
darüberhinaus hast du mit diesem zusammenkopieren und zusammenfassen eine menge von logischen fehlern entweder 'aufgedeckt' oder erst eingeführt, weswegen ich ja bereits gesagt habe, dass sowas nicht auf die schnelle geht.
immer nur ein einziges if-else-konstrukt oder eine schleife zu einer funktion zusammenfassen, dann testen, und wenn alles wie vorher läuft, weitermachen.
mit zu hastigem arbeiten macht man alles schneller kaputt als man denkt, z.b. hast du bei den meisten sachen gar nicht darauf geachtet, ob du alle variablen, die du brauchst, ordentlich in die funktion gepackt hast.

und ja - kommentare müssen sein. nicht innerhab der funktionen/methoden, sondern eine beschreibung der eingabe/ausgabeparameter, WAS die funktion tut, aber nicht WIE sie es tut, was sie zurückgibt, was sie sonst noch benötigt (dass sie z.b. sessionvariablen verwendet ) etc.

für programmier-anfänger gilt erstmal: 40% des codes sind kommentare. und wenn durch viel erfahrung und den entwickelten sauberen programmierstil die semantik eines programms auch ohne kommentare transparent ist, kann man sich erlauben, offensichtliches nicht mehr als kommentar anzugeben.

also: das ganze viel viel langsamer angehen, sonst wird's nichts gscheids.
axo ist offline  
Alt 25.05.2005, 09:46  
Gast
 
Beiträge: n/a
Standard

mal ein fettes danke an dich axo....
3. Punkte die bei deinem Beitrag perfekt für mich waren...

1. Die Beispiele waren klar und deutlich...ich habs angeschaut und sofort verstanden...danke
2. Der "Erklärungstext" is so gut geschrieben, das ich ihn nur einmal lesen musste, sofort gewusst hab was du meinst und somit wohl durch langsameres vorgehen schneller bin..... danke
3. Machst du mir Mut...das brauch ich momentan...muss ich gestehn.... danke!!!!
 
 


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
Zugriff auf Objekte anderer Klassen nieselfriem PHP Tipps 2007 7 14.05.2007 12:48
Klassen Fatal Error PHP Tipps 2005-2 3 19.10.2005 15:31

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
$dsatz[\geburtsdatum\]

Alle Zeitangaben in WEZ +2. Es ist jetzt 10:40 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.