Beiträge von willi356

    Ne das wars nicht.


    Also In der ersten Seite wird ein $_GET['status_cockpit'] mit einem Wert gefüllt. $_GET ist eine Superglobale.
    Auf der Seite die danach aufgerufen wird, wird der Inhalt der Super globalen $_GET['status_cockpit'] abgefragt und verwendet.
    Danach möchte ich den zugewiesenen Wert in der Varibalen $_GET['status_cockpit'] wieder lösche, oder besser noch die ganze Superglobale $_GET['status_cockpit'] löschen, so als wenn Sie nicht da ist. also den Urzusatnd wieder herstellen.


    Doch wenn ich es mit $_GET['status_cockpit']=empty; oder destroy $_GET['status_cockpit']; dann wird nur die 'lokale' $_GET['status_cockpit'] gelöscht / geleert, und nicht die Superglobale $_GET['status_cockpit'].


    Und noch schlimmer: Bei Neuaufruf der Seite wird die Lokale $_GET['status_cockpit'] durch die Superglobale $_GET['status_cockpit'] wieder gefüllt.


    Kann mir da jemand weiterhelfen?

    Wenn du hinter einem Link sowas findest, wird die $_GET['title'] globale Variable gefüllt mit dem was hinter dem '=' steht. also hier :Main_Page.


    Die Variable kannst du dann weiterverwenden.


    Also kurz: <Link>?$Variablenname=WERT -> $_GET['$Variablenname] = WERT

    Hallo zusammen,


    Ich möchte den Inhalt einer Super Globalen Variable löschen.
    Dabei geht es nicht mit unset, da dann nur die lokale Variable gelöscht wird.


    PHP
    echo $_GET['status_cockpit'];    
    if ($_GET['status_cockpit']=="cockpit_neu"){$status="neu";$_GET['status_cockpit']= empty;} 
    echo $_GET['status_cockpit'];



    $_GET['status_cockpit'] wird durch einen Link auf einer anderen Seite gesetzt.
    Doch wenn diese Passage durchlaufen ist, dann ist $status gesetzt auf "neu", und dann muss die $_GET['status_cockpit'] wieder gelöscht werden, da Sie sonst immer wieder $status auf "neu" setzt.



    Also dann erweitern wir das hier mal:
    Ja hab Sie schon gelöscht:
    $_GET['status_cockpit']='' oder $_GET['status_cockpit']=empty oder destroy $_GET['status_cockpit'].
    Alles funktioniert. Aber leider wird nur die lokale Variable gelöscht. Beim Wiederaufruf der Seite wird die lokale Variable wieder durch die Glogabe Variable $_GET['status_cockpit'] 'gefüllt!
    So das suche ich zu verhindern, in dem ich einen Weg suche die Globale Variable zu löschen.



    cottton



    Workaround gefunden:
    Einfach die Abfrage an eine (Hidden-) Variable gehangen, und jetzt wird nur ausgelöst, wenn beide Variablen true liefern.


    Nicht desto trotz hätte ich gerne gewusst, wie man eine Globale Variable löscht. Also so, das beim erneuten Aufruf der Seite Sie hintenrum nicht wieder gefüllt wird, da man die lokale gelöscht hat, aber nicht die globale.

    HEY !!!



    ES KLAPPT.
    Mann muss ja php.net nur mal richtig lesen!!!!!!
    Hatte in dem Befehl:

    PHP
    imagejpeg($bild_neu, null, 100)


    vergessen den Zielpfad der Datei anzugeben.


    Muss also so, oder so ähnlich aussehen:


    PHP
    imagejpeg($bild_neu, $dateipfad.$_FILES['datei']['name'], 100)




    cottton:


    Ja hab im Netz verschiedene Ansätze gesehen.
    Alle betrachten immer das Seitenverhältnis des Bildes getrennt.
    Hat mich gestört. Weil:
    Die Ratio (Seitenverhältnis) ergibt sich aus Höhe durch Breite.



    Bild 150 px X 100px (portrait)
    Höhe_alt = 150 px
    Höhe_neu = 100 px
    Ratio = 150:100 = 1.5


    Bild2 100px X 150px (landscape)
    Höhe_alt = 100px
    Breite_alt = 150px
    Ratio = 100:150 = 0.66666


    Wird das Bild neu berechnet sagen wir mal auf die Hälfte der Höhe wird jeweils die gleiche Berechnung für die Breite durchgeführt:
    Höhe_neu = Höhe_alt : Ratio
    Breite_neu = Breite_alt : Ratio


    Dies liegt in der Mathemathik begründet: Teile ich durch einen Wert unter 1 wird das Ergebnis größer!
    Also brauch ich diese Unterscheidung zwischen Portrait und Landscape gar nicht zu machen, um die neuen Höhen und Breiten zu ermitteln. Ich bekomme auch so die richtigen Werte.


    Und wie ein Freund ( fast 20 Jahre Erfahrung in Webdesign) von mir immer sagt: Weniger ist mehr in der Programmierung! Und ich denke mir mal Axel Pratzner und Cottton werden jetzt sagen: Solange es übersichtlich bleibt!

    Hallo zusammen,


    Dann auf ein Neues:


    Bin seit geraumer Zeit dran eine Funktion zu schreiben, die "alles in einem macht":




    Bin gerade an einem JPG Bildformat am testen, um den resize hinzubekommen. Also, das Bild wird kontrolliert auf: - Ist der Bildinhalt ein Bild, - Ist die Dateiendung JPG, PNG oder GIF - ISt die Dateigröße nicht zu gross - ist überhaupt eine Datei ausgewählt worden.
    Alles das funktioniert soweit auch. Aber der resize der funktioniert noch nicht.
    Warum ?!?!?!?!?! keine Ahnung.



    Der Pfad der Bilder wird in $pfad in die Funktion reingegeben.
    Die Endungen über $endungen
    Und die gewünschte Bildhöhe über $bildhoehe.

    Also interessant, aber denke mal nicht dass ich das alles verstanden habe.
    Eher gesagt, back to the basics of PHP, und den Angstschreck verstecken.
    Aber damit beschäftigen, werde ich mich sicherlich noch.
    Nur im Moment keine Zeit.


    Aber ich denke mal nicht, das du das alles mal eben runter geleiert hast. Scheinst wohl irgendwas mit Auto's zu tun zu haben!?!?!

    Hallo zusammen,


    kann mir dabei jemand mal Grundsätzlich weiterhelfen?
    Klar kann hier kein Kurs für EXCEPTIONS sein.
    Aber Tipps, wo man sowas mal vernünftig nachlesen kann, die hat doch sicherlich jemand!


    Und mit vernünftig meine ich verständlich im Sinne von Anfänger, und nicht das in dieser Quelle absolute Profi's ihr Fachgeplänkel um die Ohren hauen!


    Wissen soll sich darüber aufbauen, und dann verfestigen, und dann will ich dahin kommen, beim Fachgeplänkel zu verstehen um was es sich da handelt.

    Und weiter geht es in dem Thema.


    die erste Prüfung die ich in der Funtkion zum Bildupload mache, ist zu prüfen, ob da wirklich ein Bild kommt:


    PHP
    $data = file_get_contents($_FILES['datei']['tmp_name']);
    $img = imagecreatefromstring($data);
    $isValidImage = ($img !== false);
    imagedestroy($img);
    if($isValidImage)    {        $result = move_uploaded_file($_FILES['datei']['tmp_name'], $pfad.$_FILES['datei']['name']);    }


    Funktioniert auch so weit.
    Doch die Gegenprobe - man probiert mal eine nicht Bilddatei hochzuladen - erzeugt Fehlermeldungen:


    Warning: imagecreatefromstring(): Empty string or invalid image in ....




    Meine Frage ist nach Durchstöbern von mehreren Foren und dem www unter Zuhilfenahme meines Freundes Google:


    Wie fange ich diese Fehlermeldung ab. Also wenn du kein Bild bist, was da hochgeladen wird (vom Inhalt her) dann ....

    Bilder upload bzw. nachher auch generell Datei Upload besteht im Grunde doch nur aus zwei Zeilen:


    PHP
    <input type="file" name="datei" size="60">


    und


    PHP
    move_uploaded_file ($_FILES['datei']['tmp_name'],'../uploadpfad')


    Alles andere was man hier im Forum gepostet wurde, dient der Sicherheit und dem Schutz der Webseite, richtig?
    #cottton : Habe deinen Sicherheitspost gelesen, und auch verstanden, aber weil ich jetzt daraus eine Funktion programmieren will, will ich sicher gehen, dass ich das Grundgerüst verstanden habe.

    Also so ähnlich hatte ich es auch:



    PHP
    if ($_POST['form_submitted'] == "daten_details")    
        {
            $ueberschrift = !empty($_POST['ueberschrift'])?$_POST['ueberschrift']:'';    
            $text = !empty($_POST['text'])?$_POST['text']:''; 
        }


    Hierbei hatte ich nur noch daran gedacht, das die Daten nur geändert werden, wen Sie aus der zweiten Form kommen!



    PHP
    echo"<tr><td><h4>Überschrift:</h4></td></tr>";    
        echo"<tr><td><input type="text" name="ueberschrift" class="feldinhalt" value="".clearstring($ueberschrift)."" ></td></tr>";


    Aber wenn ich dann auf den Button Sichern aus dem ersten Form klicke, löschen sich die Inhalte.

    Hallo zusammen!


    @ cotton: Du kennst die Hintergründe meiner Anfrage am Besten!


    Also: Ich habe meine Seite so aufgebaut, das ich zwei Formulare hintereinander habe.
    Im ersten Formular sind Eingabefelder als Bilder, durch die der Seiteninhalt gesteuert wird. (Es wird immer wieder die Selbe Seite aufgerufen, aber je nach dem welcher Button geklickt wurde, wird ein anderer Seiteninhalt angezeigt.
    In dem zweiten Formular sind dann wiederum Tabellen mit Eingabefelder ($_POST) hinterlegt.
    Habe ich alle Daten eingegeben, muss zum speichern ein Button aus der ersten Form geklickt werden.


    Und da hab ich ein Problem: Die Variablen sind bis vor dem klicken auf den speichern Button alle gefüllt. Klicke ich den Button, sind alle Variablen zum speichern alle leer, und nix kommt beim SQL - Befehl an. Wobei ich getestet habe, dass der SQL funktioniert.


    Kennt jemand eine Lösung dahingehend, dass die Variablen Werte nicht immer beim Neuaufbau wieder gelöscht werden, ohne über die $_SESSION zu gehen?

    Naja, aber das ist dem Browser/User ja egal.
    Wenn Du den Nutzer fragst, wird er es als Seite bezeichnen.


    Verwechsle nicht Script/Datei mit Seite =)

    Stimmt schon, die sollte man nicht verwechseln.
    Aber der User weiß ja auch nicht, das die Seite neu aufgerufen wird, wenn er die Eingabe abschließt mit Return oder klick auf den Button. Somit ist auch nicht jedem klar, das er vom Prinzip her eine neu Seite aufruft, wenn er auf einen der Statusbuttons klickt.

    Damit würdest Du wieder HTML und PHP/Daten mischen.
    Besser wäre mehrere Funktionen wie zB

    Also damit sagst du ja das man für solche Dinge wie Lesen aus der Datenbank, schreiben in die Datenbank, Ändern der Daten in der Datenbank Funktionen schreiben sollte, um es sich leichter zu machen.
    Du gehst nur noch weiter, das du zweckgebundene Funtkionen dafür schreiben möchtest. Also zu einem bestimmten Anlass einen Funktion.


    Habe ich hoffentlich soweit richtig verstanden!


    Mein Gedanke ist aber eine universelle Funktion z.B. fürs Lesen aus der Datenbank zu schreiben, damit ich mich nicht mehr um die äußere Form kümmern muss.


    Der SQL für eine Abfrage sieht so aus:



    SELECT
    `...`,
    `...`,


    FROM
    `...`
    WHERE
    ...


    Wenn ich jetzt anstatt der '...' jeweils ein Array reinsetze, damit ich dann von außen über Arrays Werte in die Funktion eingebe, dann bräuchte ich mich nicht mehr um die äußere Form zu kümmern:
    fuktion DB_lesen ($datenblattfelder, $datenblatt, $datenselektion)
    {
    SELECT
    foreach $datenblattfelder


    FROM
    $datentabelle


    WHERE
    foreach $datenselektor


    where $datenselektion is ....}


    Die Array's in der Webseite werden dann so gefüllt:


    $datenblattfelder = feld1
    $datenblattfelder.= feld2
    $datenblattfelder.= feld3

    $Datentabelle = tabellenblatt

    $datenselektion = selektor1
    $datenselektion = selektor2
    $datenselektion = selektor3

    Und dann die Funktion aufgerufen:


    DB_lesen($datenblattfelder, $datentabelle, $datenselektor )

    So in etwa fürs grobe Verständnis.

    Somit wäre diese Lesefunktion aus der DB universell und ich bräuchte mich nur noch die Arrays in der Webseite zu füllen, um dann die Funktion auszuführen. Damit hätte ich durch die Füllung der Arrays, jede Situation und Anforderung abgefangen die du durch mehrere Funktionen abfangen möchtest.Und ich bräuchte fürs Lesen nur einen Funktion, fürs schreiben nur einen Funktion und fürs Ändern nur eine Funktion!


    An deinem Vorschlag, der sicher richtig und gut ist, stört mich einfach, dass es praktisch bei jedem auslesen aus der Datenbank eine andere Anforderung gibt.
    Und man weis nie, ob sich diese Anforderung an einer anderer Stelle noch mal ergibt (also lohnt sich jetzt dafür eine Funktion oder nicht?).

    Jetzt aber mal ne andere Frage:


    Ich überlege ob es sich lohnt die Datenbankansprache für Daten lesen, Daten speichern, Daten Änderungen speichern je eine Funktion zu bauen, damit ich die äußere Form jeweils schon in der Funktion stehen habe, und dann die Werte für die einzelnen Bestandteile über Array's dann in die Funktion gebe.


    Lohnt sich das?

    zB die Leiste oben mit den Buttons (was ja denke ich die Nav ist) einbauen und als Content lässt Du nur den Namen ausgeben.


    Also, wenn du von Nav spricht, hast du sicher recht.
    Aber das besondere dieses Nav ist ja, das ich innerhalb einer Seite bleibe.
    Ein 'normales' Nav ruft ja andere Seiten auf. Diese nicht. Es bleibt innerhalb der selben Seite, und sorgt doch für andere Ansichten. Somit brauche ich dann nicht immer sieben php Seiten zu bearbeiten, und verbrauche somit auch nicht soviel Platz beim Provider. (Obwohl der Platz beim Provider ist heute wohl eher kein Problem mehr.)

    Hey,


    was macht denn da die funktion status_detail(); ?


    Stef

    Die Funktion status_detail gibt die Icons aus! Sonst nix. Die Icons sind aber Inputfelder mit der die Variable $_POST['statsu'] gefüllt wird, und über die dann den angezeigten Inhalt der Seite Schaltet.


    Die Funktion status_detail ist weiter oben aber auch abgebildet!

    Hi cottton:


    Also erstmal hast du mich auf eine tolle Idee gebracht:
    Deine Beschreibung von oben stimmt soweit.
    So da ich jetzt weis, von welcher Form die Eingabe kommt, habe ich das umsetzen der $_SESSION['status'] nur erlaubt, wenn die Eingabe aus dem ersten Form kommt.




    bei if($_POST['form_submitted']=="status" ) wird dies geschaltet. Das fuktioniert jetzt soweit auch schon.
    ABER!!!!:
    Wenn ich es jetzt so lasse, wird die Eingabemaske wieder aufgerufen, und die schon eingegebenen Daten bleiben auch stehen.



    ALSO: KLASSE! GENAU SO WOLLTE ICH'S JA HABEN.


    ABER die Buttons wechseln jetzt noch auf die von der Ansichtsseite.


    Also Seite die angezeigt wird ist die von NEU. Aber die Buttons die Angezeigt werden sind die von ANZ.
    Muss noch suchen warum Sie wechseln, aber dann sollte es eigentlich hinhauen.



    Und du siehst, werden die If Anweisungen komplizierter und verschachtelt, schreibe ich Sie ausführlich in mehrere Zeilen, sonst findet sich ja da keiner mehr zurecht.

    cottton


    Soweit habe ich die Schaltung verstanden. Nur etwas ist mir nicht klar:
    Soll die <form>
    1. innerhlab des if und elseif stehen?
    2. außerhalb des if und elseif stehen? (also die <form> umklammert das if und elseif)?
    3. Soll die if und elseif vor den <form> stehen um die Weiterverarbeitung zu steuern -> also Ansicht der Daten, oder speichern der Daten, oder löschen der Daten?


    Im Falle 3. ist kar, ich stelle die Bedingung voran, und lasse die Daten anzeigen, löschen, speichern.
    Bei Fall 1. und 2. bin ich mir noch nicht so sicher wie es damit weitergeht, und wie ich damit was genau steuern kann.


    also die Kürzel der variablen gebe ich dir recht sind grundsätzlich unübersichtlich, zumindest wenn man die Kürzel nicht kennt. Ich habe mir für die Datenbank da praktisch nur eine Eselsbrücke gebaut. tm steht wie du richtig erkannt hast für Termine. Also werden Sie in der Datenbank auf dem Tabellenblatt Termine gespeichert. So haben Variablen für Kunden das Kürzel kd_xxxxx und kontakte kt_xxxxx und so weiter und so weiter. ich hätte die Namen für die Variablen auch ausschreiben können, stimmt schon, aber man ist ja faul.... Und ich geb dir recht, damit muss man sich ne ganze Menge merken.


    Bin auch deiner Meinung was die Übersichtlichkeit der Programmierung angeht. Doch mit der Zeit kann man das auch lesen, wenn es sich um relativ einfache Sachen handelt, wie oben beschrieben. So halte ich dies was oben steht eigentlich einzeilig, sollte der 1. Teil in der If Bedingung allerdings komplexer werden, so folge ich schon jetzt deinem Rat. Natürlich auch, wenn es im 2. Teil der If Bedingung komplexer wird.


    Allerdings was ich von jetzt an bedingungslos übernehmen werde, ist die $_POST etc. in eine ausgeschriebene Variable zu übernehmen wie in deinem Beispiel gezeigt. Egal ob die Variable aus einem $_POST kommt, oder aus einer Datenbank, so werde ich ab jetzt Sie immer in eine klar lesbare Variable übergeben.



    ZUM SCHUSEL-FEHLER: Kann sein, kann nicht sein, habe jetzt alles in ein Form gepackt, und es funktioniert alles !!!. ich darf nur die Eingabe der Felder nicht mit <RETURN> abschließen, dann wechselt er wieder die Ansicht auf anz, und ich bin wieder in de Ansicht der Seite.
    Hallo cottton,



    So reagiert die Programmierung, wenn ich alles in eine <form> setze.
    hab jetzt noch mal eine Screen Serie hochgeladen um die Reaktion der Seite aufzuzeigen:


    1. Startbild -> Status ist auf Anzeige. Button ANZ ist grün


    2. Auf Button 'neu' geklickt, Button NEU ist jetzt grün, ANZ ist blau. Habe die Daten eingegeben, aber noch nix geklickt.


    3. Habe auf den Button 'NEU' geklickt. Die $_POST sind gefüllt. Ich bin immer noch auf der Seite 'NEU' (Button ''NEU' ist grün).


    4. Ausgangszustand: Bin auf Seite NEU geklickt. Button 'NEU' ist grün. Die Daten sind eingegeben habe aber noch nicht <RETURN> gedrückt.


    5. <RETURN> ist gedrückt, $_POST sind gefüllt, aber ich bin jetzt auf der Ansicht. (Button anz ist grün, Button neu ist blau)



    Ein Freund meint, durch das auslösen des Formulars durch <RETURN> weiß der Browser / Apache nicht aus welchem Formular die Eingaben kommen, und reagiert dann bei dem ersten INPUT-Feld an dem er vorbeikommt, und setzt damit die $_SESSION['status'] auf 'anz'. denn dies ist das erste Inputfeld, an dem er er im Ablauf vorbei kommt.
    Also da sich keiner mehr zu diesem Thema äußert, denke ich mal das ich da wieder mal alleine durch muß.


    Schade eigentlich.