Beiträge von willi356

    Also Hidden Inputs reingesetzt, und wenn ich wie ich hoffe den Gedanken richtig weiterverfolge möchtest du eine if Abfrage machen, die dann das eine oder das andere Formular anzeigt. Richtig?


    Wenn ich das richtig interpretiere, dann der Hinweis, es müssen immer beide Formulare angezeigt werden.


    1. Formular steht für folgenden Sachverhalt:
    Normalerweise würde man ein Menü machen mit links, würde für anz, suc, bea, neu, sic_bea, sic_neu, loe einen eigene Webseite machen, und darin dann wiederrum das jetzige 2. Formular benutzen um die Daten eingeben zu können.


    Da ich es aber möglichst kompakt halten möchte, will ich über das erste Formular einen status ermitteln indem $_SESSION['status'] umgesetzte wird.
    Dann wird in der status benutzt um zu sagen
    if
    $_SESSION['status'] = anz -> 2. Formular = Anzeige Bild
    elseif
    $_SESSION['status'] = bea -> 2. Formular = Bearbeitungs Bild
    elseif
    $_SESSION['status'] = suc -> 2. Formular = Suchmaske


    usw.


    Damit hätte ich eine kompakte Struktur mit Auswahlmöglichkeit innerhalb einer Webseite.
    Kann es auch daran liegen, das meine Entwicklungsumgebung XAMPP ist, und diese das nicht kann, und ein Webserver es richtig machen würde?




    + Apache 2.4.17
    + MariaDB 10.1.10
    + PHP 5.6.19 (VC11 X86 32bit thread safe) + PEAR
    + phpMyAdmin 4.5.1
    + OpenSSL 1.0.2d
    + ADOdb 518a
    + Mercury Mail Transport System v4.62 (nicht in der Portable Version)
    + FileZilla FTP Server 0.9.41 (nicht in der Portable Version)
    + Webalizer 2.23-04 (nicht in der Portable Version)
    + Strawberry Perl 5.16.1.1 Portable
    + Tomcat 7.0.56
    + XAMPP Control Panel Version 3.2.2 von hackattack142 (Ein großes Danke Schön!)

    @cotton


    Also bin deine Anmerkungen durchgegangen!
    bei <img> einen value und ein name zu vergeben ist natürlich Blödsinn. Ist geändert! Danke
    Aber du möchtest bei jedem Input (IMAGE) allso einen anderen name vergeben! OK dann erhälst du die Möglichkeit 6 verschiedene $_POST['...'] zu erhalten.
    Nämlich:
    $_POST['anz'] mit dem Wert "anz" wenn der Input geklickt wird.
    $_POST['suc'] mit dem Wert "suc" wenn der Input geklickt wird.
    $_POST['bea'] mit dem Wert "bea" wenn der Input geklickt wird.
    $_POST['neu'] mit dem Wert "neu" wenn der Input geklickt wird.
    $_POST['sic_bea'] mit dem Wert "sic_bea" wenn der Input geklickt wird.
    $_POST['sic_neu'] mit dem Wert "sic_neu" wenn der Input geklickt wird.
    $_POST['loe'] mit dem Wert "loe" wenn der Input geklickt wird.


    Dann muss ich auch 7 $_POST[''] abfragen ob ein Wert enthalten ist.
    Da kam mir die Idee die Input Felder alle status zu nennen, da sowieso immer nur eines geklickt wird. Danach wird die Seite neu aufgebaut, da ja Formular mit action="".
    Somit erhalte ich dann nur ein $_POST['status'], wobei die Variable die Werte anz, suc, bea, neu, sic_bea, sic_neu, loe annehmen kann. Somit brauch dann auch nur eine Variable zu prüfen, nämlich $_POST['status'] und mach es mir dadurch einfacher.


    Spricht Programmiertechnisch da was gegen?



    Die Bemerkungen zum textarea: Vielen Dank! Sind schon geändert.



    Als INFO-> nach den Änderungen hat sich nix getan. Seite wird immer noch nach auslösen des 2.Fomulars (also durch Inputfelder mit type text) auf Anzeige umgeschaltet.


    Gibt es eine Möglichkeit das anders zu Programmieren?


    Der Upload ist leider zu klein, sonst hätte ich ein Screenvideo gemacht und hochgeladen, dann kann man das Verhalten besser sehen.

    @cotton:


    Hab mal kopiert, und so gut es geht in Form zu bringen. War alles beim kopieren an einem Stück geschrieben. Hoffe findest dich zurecht.




    Hab rumprobiert, mal das eine Form weg, mal das andere. Dann klappt alles. Wenn ich allerdings beide Forms hintereinander schreibe, dann geht gar nix mehr. Bei Chrom Browser noch die Schaltung von anz auf neu usw. Im Firefox geht gar nix mehr.
    Du fragtest ob das mit den Input=image funktioniert, weil ähnlich wie Submit Button. Kann dir sagen, das klappt einwandfrei. Nur halt wenn nur ein Form da ist.

    @cotton: Erst mal danke für die hilfreichen Tipps.


    Angenommen und schon eingebaut. Man lernt nie aus.


    Ich das Problem nochmals versuchen zu Verdeutlichen:


    1. Form:
    Schaltbuttons für anz, suc, bea, neu, sic, loe


    2. Form:
    Formular für Eingabe der Daten.


    Obwohl die beiden Formulare hintereinander stehen, und mit </form> jeweils abgeschlossen sind, und beide auch unterschiedliche Namensbezeichnungen haben, beeinflussen Sie sich anscheinend gegenseitig.


    Wenn ich im 2, Formular Daten eingebe, dann und abschließe mit Return oder klick auf den obigen 'Status' Button, dann weis die Seite nicht von welchem Feld der Neuaufbau der Seite gestartet wurde, und findet in den Formularen als erstes Eingabefeld den Button für die Änderung auf ANSICHT. Damit wechselt die Seite dann immer automatisch auf ANSICHT und die Eingaben sind verloren.


    Test halber habe ich das erste Formular entfernt, und habe dann im zweiten Formular die Daten eingegeben. Ich habe den Wert des Arrays $_SESSION['status'] fest auf 'neu' gesetzt, damit ich nicht wieder die Ansicht bekomme. Und dann funktioniert die Dateneingabe. Die Werte bleiben durch das Attribut value im Eingabefeld erhalten.


    Nur wie bekomme ich es weg, dass sich die beiden Formulare beeinflussen?

    Na dann mal wie von Basi gefordert der Code!




    UNd damit man es ganz versteht auch noch die Funktion status_detail






    Wie im oberen Code zu sehen, folgen zwei Form -tag aufeinander. Wenn ich es so laufen lasse, kann ich zwar Daten in die Inputfelder eingeben, aber sie werden bei Wiederaufruf de Seite nicht wieder angezeigt, obwohl bei Ausgabe des $_POST die Variablen gefüllt sind.


    Desweiteren: Beende ich die Eingabe eines Inputfeldes mit <RETURN> dann wird der Status auf Anzeige gesetzt. So weit ich es schon ermittelt habe, wird das erste Inputfeld des ersten Formulars angesprochen, und das ist der Schaltbutton mit dem der Status (so nenne ich es) auf Anzeige gesetzt wird.(damit schalte ich zwischen ANZEIGEN, SUCHEN, BEARBEITEN, NEU, SICHERN und LÖSCHEN hin und her; Diese Buttons sind Eingabefelder type= image, und da sie in einem Formular sind, rufen Sie die Seite neu auf, und ändern bei klick die $_SESSION['status'] auf anz(ANZEIGEN), suc(SUCHEN), bea(BEARBEITEN), neu(NEU - ANLGE), sic(SICHERN), loe(LÖSCHEN) .




    So und das ist mein Problem



    Habe noch zwei Screens angefügt:
    1. Oben die Statusbuttons (blau/grün/grau/rot) und darunter die Eingabefelder als Beispiel.
    2. Nach der Eingabe mit <RETURN> seht ihr das Ergebnis. Der Status ist auf Anzeigen gewechselt. Die Eingabeseite ist weg, aber das Array $_POST enthält den Wert der Eingabe im Feld Stichwort.

    Hallo zusammen,


    ich habe zwei Formulare hintereinander auf einer Seite. Im zweiten Formular habe ich Input Felder vom Typ Text.
    Wenn ich eine Eingabe ins Inputfeld mache, und es mit einem Klick auf die Wiederholungstaste der Webseite machen sind die Feldinhalte futsch!.
    Wenn ich die Eingabe mit Return abschließe, weiß die Seite wohl nicht was Sie machen soll, und nimmt sich das erste Inputfeld was es findet, hier aus dem ersten Formular, und setzt mir den Inhalt der Seite um, und die Eingaben sind futsch.


    Hat einer eine Idee, wie man das umgehen kann? ;( ;( ;(

    Das geht auch über CSS!




    Nur hierbei musst du dann wissen wo auf deiner Webseite die Box ist! Denn wenn du #test einrichtest, ist Sie zuerst nicht zu sehen, nur wenn du mit der Maus drüber fährst!

    Hallo zusammen,


    eigentlich ist es ein Probleme von Formtags und der Benutzung mehrerer Eingabeelemente innerhalb von Formularen.
    Also Grund-Webseite ist aufgebaut und ich verwende innerhalb des ersten Formulars auf der Seite mehrere <input type="image">. Bilddatei ist angehangen. Die blauen / roten / grauen / grünen Icons sind gemeint.


    Ein klick auf einen dieser Button bewirkt, das die $_SESSION['status'] umgesetzt wird , damit ein neuer Teilabschnitt gewählt wird (Anz, suc, bea, neu, sic, loe), und gleichzeitig, je nach klick dann auch die Buttons des entsprechenden Abschnittes geändert wird. -> Auf der Seite anz (Anzeigen, müssen die einzelnen Buttons andere funkionalität bekomen, und die Farbe ändert sich. Grün= aktuelle Seite -> z.B. anz ( Anzeigen), blau= ist möglich dort hin zu wechseln, grau = keine Möglichkeit hinzuwecheseln, rot= gleiche wie blau, mit der Signalfarbe, dass Änderungen an der Datenbank vorgenommen werden (speichern, löschen).
    Also ist dies nix anderes als ein hoch flexibles Menü! Wenn hier keine Lösung gefunden wird, muss ich auch überlegen, dies über eine Menüsteuerung hinzubekommen.



    Das erste Formular wird abgeschlossen </form. Danach folgt ein Zweites Formular, in dem dann die eigentliche Dateneingabe erfolgt.


    Viel Erklärung, und jetzt kommen wir zum Problem: Es funktioniert nicht. Die Buttons werden dargestellt, die Seite wird auch aufgerufen (man sieht das zucken der Seite), aber die Buttons ändern sich nicht, noch werden sie geändert, noch wird ein anderer Seitenabschnitt aufgerufen. Also kein Wechsel von anz (Anzeige) zu bea (Bearbeiten).
    Ich vermute dass es an den zwei Formularen liegt, denn wenn ich das zweite entferne, dann funktioniert es.



    :cursing: ALSO UM MAL MEINER PANIK BEI DIESER SACHE EIN WENIG AUSDRUCK ZU VERLEIHEN: HHHIIIIIIIILLLLLLFFFFFEEE ! :cursing:




    Volständigkeitshalber noch die Funktion status_details:

    Hallo,


    Ich will/muss zwei Formulare in einer Seite benutzen!


    Also


    <form method="POST">
    ... html code ...
    </form>


    <form method="POST">
    ... html code ...
    </form>


    Gibt es da was zu beachten? Muss man den verschiedenen Formularen verschiedene Namen geben, oder sonst irgendwas zu beachten?

    MEIN GOTT!!!


    WIE BLIND KANN MAN BEIM PROGRAMMIEREN EIGENTLICH WERDEN!!!
    Soviel Dummheit gehört bestraft . 8|


    Dank dir Cotton!




    Stolpere gerade über dein '...nicht empfehle...'
    Warum?



    die Echo's geben einmal ein kleines Icon aus. Dann werden noch die Bedingungen ausgegeben, wie die REGEX erfüllt werden können.
    Ansonsten werden halt nur die Prüfungsergebnisse in die Variable gepackt.
    Ist das generell ein Problem, welche Schwierigkeiten können auftauchen?

    Code aus der Seite in der die Funktion aufgerufen wird:


    PHP
    echo    "<tr>";    
                echo        "<td class="feldname">"    ."Benutzer Nr.: "."</td>";
                echo        "<td class="feldinhalt">"  .clearstring($_SESSION['st_bn_nr'])."</td>";
                echo        "".$pruefung['pr_nr'] = pr_nr(clearstring($_SESSION['st_bn_nr'])).""; 
                echo    "</tr>";


    Code der Funktion:


    Ausgabe sieht dann so aus wie im letzten Bild.


    Und die Ausgabe auf dem Bildschirm von "RichtigFalschRichtigFalsch" usw. soll nicht sein.

    Hallo Cotton,



    ne nutzte doch einen Editor: Brackets.
    Habe das mit Wolf schon durchgekaut. Liegt nicht an dem Brackets, oder an meinem Windows, oder, oder, oder...
    Wolf hat von mir diverse Dateien bekommen und ist am Suchen (hoffe ich zumindest).



    UNd jetzt zu oben:


    Die Ausgabe in Array habe ich gelöst. Aber durch den return $pr wird mir der Wert immer ausgegeben, also aufs Bild geschrieben. Also immer richtig oder falsch auf den Bildschirm ausgegeben.
    Wenn ich jetzt 6 x verschiedenen Felder Prüfe, stehen dort auch 6 mal richtig oder falsch hintereinander.



    Wie kann ich das unterbinden?
    Han in anderen Foren was davon gelesen die Variable in der Funktion als globale variable zu verwenden! Wäre das was?

    Also eigentlich funktioniert alles, nur nicht so, wie ich es will:


    PHP
    function pr_bennr($inhalt){  if ($inhalt ==="") { echo"<td><img src="../standard/icon/gelbes_ausruf.png"></td>";                         $pr = 'falsch';}  else { $ausdruck="/[[0-9]{5}[^(a-zA-ZäöüÄÖÜ<>#!*+")]*/";  if   (preg_match($ausdruck, $inhalt)== false)  { echo"<td><img src="../standard/icon/rotes_kreuz.png"></td></tr>";  echo"<tr><td></td><td class="red">- 5-stellig</br>- nur Zahlen</td>";  $pr = 'falsch';}  else { echo"<td><img src="../standard/icon/gruener_haken.png"></td>";  $pr = 'richtig';}  }    $inhalt="";    return($pruefung);    }


    Für die Darstellung des PHP kann ich nix, neine ich schreibe das nicht alles in eine Zeile, Wolf untersucht dieses Phänomen schon, noch keine Lösung in Sicht.






    Die Ausgabe ist die '1' die links unten neben dem Kasten steht.
    Wie kann ich die Ausgabe von dem return unterdrücken?




    Aber irgendwie habe ich im Moment einen Balken vor dem Hirn.

    REGEX 'en


    Ich will überprüfen ob in einer Eingabe nur folgende Zeichen verwendet werden:
    - Kleinbuchstaben
    - Großbuchstaben
    - Sonderzeichen !, #, %



    und habe nun folgendes mal geschrieben:
    "/[0-9a-zA-Z\#\!\%]/"


    Aber dies überprüft nur auf das erste eingegebene Zeichen. Nun hab ich mich auch im Internet umgeschaut und hab ne Erweiterung gefunden:


    "/[0-9a-zA-Z\#\!\%]*/"


    Soll bezwecken, dass er jede Stelle der Zeichenkette überprüft, ob Sie aus den oben angegebenen Zeichen besteht.
    Funktioniert aber nicht.



    Mein Problem im Moment:


    Ich habe Inputfelder (beziehe mich hier aber nur auf eins).
    Gelesen habe ich im Internet, dass ich bei einem Inputfeld über das Attribut name="" bestimmen kann, die Daten direkt in ein Array gespeichert werden können.
    Dazu sieht der Aufbau dann so aus:


    <input type="text" name="input[] method="POST"">


    So damit würde wenn ich jetzt über eine Schleife mehrere input-Felder aufbaue der Ausgabewert für die Felder folgender massen sein:


    input Feld 1 => $_POST['input['1']']
    input Feld 2 => $_POST['input['2']']
    input Feld 3 => $_POST['input['3']']
    usw.


    Soweit richtig?


    Wenn ja dann weiter:
    Aus einer Datenbank hole ich mir Daten:


    $sql_datenbank="SELECT
    `pos`,
    FROM
    `wcm_person`
    WHERE
    `seite` = 'vorstand'
    order by pos ";
    $datensatz=mysqli_query($mysqli, $sql_datenbank);

    Diese Daten lasse ich mir in einer Schleife ausgeben, und gleichzeitig werden die inputfelder erzeugt:


    while($reihe=mysqli_fetch_assoc($datensatz))
    {
    Ausgabe Datenbankinhalte (siehe anefügtes Bild!)
    echo"<input type=\"text\" name=\"pos['$pos']\" class=\"feldinhalt\" value=\"".$_POST['pos[$pos]']."\">";

    }
    Ich möchte erreichen, dass nicht nur die inputfelder direkt den richtigen Arraynamen über das Attribut name bekommen, sondern beim Auslesen der Daten aus der Datenbank lese ich auch das Feld 'pos' aus. Dieses soll jetzt als Index dienen im Inputfeld 'name'.


    Also ungefäht so (und hier komme ich einfach nicht weiter):


    <input name="input['$pos']" >
    oder
    <input name="[input] [pos]>
    oder
    <input name="[input] [$pos]>
    oder
    <input name="[$input] [$pos]>




    Hab schon etliche Seiten durchforstet, aber nix gefunden wie hier die Formatierung sein muss, damit ich im nachhinein dann auch wieder innerhalb der Schleife die Daten in die Datenbank zurückschreiben kann. Denn hier sehe ich das nächste Problem:


    $sql_person = " UPDATE `wcm_person`
    SET
    `pos` = '{$_POST['pos[$pos]']}', (wie muss hier dann die Formatierung sein?
    WHERE
    'seite' = 'vorstand'
    AND
    'pos' = '$pos'";
    mysqli_query($mysqli, $sql_person);




    ###########################################################################################################
    Erst mal Danke cottton.
    Soweit verstanden. Muss Also $_POST['pos']['pos'] heißen.

    Dazu noch ne Frage: das zweite ['pos'] kann das auch ['$pos'] sein? Denn ich möchte ja nicht nur ein dreidimensionales Array aufbauen, sondern der zweite Indize soll ja vorbelegt sein - halt mit der jeweiligen Positionsnummer die mit der Positionsnummer aus der Datenbank gleich ist?




    Damit aber noch nicht genug meiner Unkenntnis:
    Bei einem Input Feld kann ich dann auch direkt den Namen des dreidimensionalen Arrays dort im Attribut name= "" hinterlegen?
    Sähe das dann in etwa so aus:?
    <input name="['$pos'] ['pos']>





    Also hab den Input dann mal so gestaltet:
    echo"<td><input type=\"text\" name=\"{['$pos']['pos']}\" class=\"feldinhalt\" value=\"".$_POST['$pos']['pos']."\"></td>";



    Bekomme auch keine Fehlermeldung und der Index ['$pos'] stimmt jetzt auch überein mit der Position aus der Datenbank.
    Aber speichern tut er noch nicht.
    Dort ist dann immer eine 1 im Feld. Also $_POST['$pos'][pos] ist immer mit einer 1 gefüllt. Und da steig ich noch nicht hinter warum das so ist.
    Abgesehen davon das er die Werte damit nicht in die Datenbank bringt:

    $sql_person = " UPDATE `wcm_person`
    SET
    `pos` = '{$_POST['$pos']['pos']}',
    `titel` = '{$_POST['titel']}',
    `bild` = '{$_FILES['datei']['name']}',
    `name` = '{$_POST['name']}'
    WHERE
    'seite' = 'vorstand'
    AND
    'pos' = '$pos'


    ";
    mysqli_query($mysqli, $sql_person);

    Hallo,


    also mizt den untenstehenden Zeilen definiere ich doch eigentlich das Array $reihe[] schon mit den Indizes [Vorname] und [Name], oder?


    PHP
    $reihe['Vorname'] = empty($_POST['st_bn_vorname'])?$reihe['Vorname']:$_POST['st_bn_vorname'];$reihe['Name'] = empty($_POST['st_bn_name'])?$reihe['Name']:$_POST['st_bn_name'];



    Warum bekomme ich dann folgende Warnungen:

    Code
    Notice: Undefined variable: reihe in D:\Webseiten\SchuetzengesellschaftHubertus\app\benutzer_detail.php on line 330
    Notice: Undefined index: Name in D:\Webseiten\SchuetzengesellschaftHubertus\app\benutzer_detail.php on line 331

    OK, kommt:


    habe jetzt bestimmt 10 mal versucht den Quellcode mit Zeilenformatierung hierher zu kopieren, doch die Leerstellen am Anfang werden einfach gelöscht, sorry!
    Also, gestern habe ich da noch was geändert, aber funkt noch nicht:



    PHP
    <?php
    while($reihe=mysqli_fetch_assoc($datensatz)) 	{                echo"<section id="person">";	// ############################ // #####   Eingabe Bild   ##### // Kontrolle, ob Dateityp zulässig ist $dateitypen = array("image/png", "image/jpeg", "image/gif"); if ( ! in_array( $_FILES['reihe']['type'] , $dateitypen ))	{                            echo "<p>Dateitype ist NICHT zugelassen</p>";                        } else  {                            move_uploaded_file ($_FILES['reihe']['tmp_name'],'images/vorstand/'.$_FILES['reihe']['name']); 	    echo "<img src="images/vorstand/".$_FILES['reihe']['name']."" height="250px" width="188px" class="bild"></br>"; 	 $vorstand1=clearstring($_FILES['reihe']['name']);                            echo"<p>Dateiname: ".$vorstand1."</p>";                        } 
    echo"<form name="uploadformular" enctype="multipart/form-data" action="vorstand_TEST.php" method="post" >"; echo"<img src="images/vorstand/".clearstring($reihe['bild'])."" height="250px" width="188px" class="bild" >"; echo"<input type="file" name="datei[pos]" size="60" maxlength="255" class="submit_button"></br>"; echo"<input type="Submit" name="submit" value="Datei hochladen / speichern" class="submit_button"></br>";                echo"</form>";
    ?>


    [size=10]
    <section> und <table> dienen nur der Ordnung, und der Ansprache über CSS.
    Sinn und zweck: Es sollen Daten aus der Datenbank abgerufen werden. Diese Sollen durch einen While Schleife laufen, und ausgegeben werden.
    Gleichzeitig sollen aber auch die Input Felder und der Dateiupload für jeden Datensatz aufgebaut werden.


    Mein Gedankliches Problem: Baue ich die INPUT Felder durch ne Whileschleife auf, muss jedes Inputfeld eine eigene Bezeichnung in name="" bekommen, damit ich Sie dann über $POST wieder separate ansprechen und dann die geänderten Daten durch SQL="Update ... in die Datenbank schreiben kann. Da die Daten in der Datenbank über die 'pos' -Felder eindeutig werden, wollte ich dieses Feld 'pos' aus Datenbank für den index des INPUT Feldes nehmen. Dann wäre das Inputfeld direkt über die pos nr mit dem Datenbankfeld verbunden.


    Unter der Überschrift #### Eigabe Dateiname #### gebe ich nur den Dateinamen des Bildes aus. Die Eingabe des Dateinamen geschieht automatisch beim Upload der Bilddatei.


    Die Datenbankfelder sind aufgebaut:


    1 id
    2 seite (hiermit möchte ich nur selektieren können, in welcher Seite ich die Datensätze verwenden möchte. Also werden aus verschiedenen Sieten Daten in einer Tabelle gesichert.)
    3. pos (Feld damit ich die Ausgabenreihefolge festlegen kann; Über die id geht es nicht, da in dieser Tabelle gleiche Daten aus anderen Seiten gespeichert werden. Zudem wird es möglich sein die Datensätze zu löschen und neu anzulegen. Dann stimmt die Reihenfolge der id ohnehin nicht mehr.)
    4. titel
    5. bild (Dateiname)
    6. Name (Name der Person


    So jetzt sind alle Geheimnisse gelüftet.


    Habe den Quelltext jetzt mal gekürzt. Jetzt steht oben nur noch, wo es mir darauf ankommt. Und ich habe die Echo's so weit gekürzt, wie ich konnte, damit ich den Code noch verstehe. Besser so cottton?