Ankündigung

Einklappen
Keine Ankündigung bisher.

If-Schleife wenn Variable=2 UND ...ich hab keine Ahnung...

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • If-Schleife wenn Variable=2 UND ...ich hab keine Ahnung...

    Soooo,
    erst mal sorry, wenn's hier nicht hingehört ... ich schätze ich überschneide damit ne ganze Menge Bereiche nun, aber da auch PHP dabei ist, hab ich mir diesen ausgesucht - ansonsten pls verschieben

    Nun aber zum Problem:

    Erstmal grob das, was schon klappt:
    Ich habe nen HTML-TPL, dass sich unter anderem auf ne PHP-Datei zur Verarbeitung des Inhalts bezieht. Als wäre das nicht schon schwer genug, spielt ne MySQL-DB auch noch ne Rolle
    Es geht darum, dass ich auf dem TPL (html) unter anderem ne Tabelle habe. Diese zeigt nun Daten aus einer DB an, das ganze funktioniert auch. Unter dieser Tabelle hat man die Möglichkeit, etwas einzutragen, was dann via php-Abarbeitung in die DB eingetragen wird. Auch das ist hübsch
    Jetzt hat man beim eintragen auch eine Auswahl-selection mit 5 Optionen.

    Code:
        <td width="40%"><select name="fraktion" value="1">
    <option>1</option>
    <option>2<option>
    <option>3<option>
    <option>4</option>
    </select></td>
    Jede Auswahl wird nun mitunter über den Button 'Einsenden' in die DB geschrieben und nacher in der Tabelle (Spalte 'fraktion')ausgezählt.
    Die Anzahl der eintelnen Werte hab ich in den php-Variablen
    Code:
    $anzahl_eins
    $anzahl_zwei
    $anzahl_drei
    $anzahl_vier
    Auch diese wird mit via eval-Befehl in die TPL übergeben, sodass ich es anzeigen lassen kann.

    Nun ist es aber so, dass ich die Einschreibungen auf ne gewisse Anzahl von gleichen Werten in 'fraktion' limitieren will, und dass eine Fehlermeldung kommen soll, wenn man sich versucht, mit einem Wert in der Auswahl einzuschreiben, der schon so-und-so-oft in der Tabelle existiert.

    ich dachte da an sowas wie
    Code:
    if(isset(_POST['action']) =="neu" AND ($_POST['action'] !="plan"){
    if($anzahl_eins == 2 AND  ########### ){
    $fehler = $fehler."Bitte wähle eine andere Option, es sind genug mit der Zahl 1 eingetragen"
    }
    }
    "neu" und "plan" sind 2 unterschiedliche Buttons auf der Seite. Mit dem 'neu-Button' trägt man sich in die Tabelle ein....
    In diesem Beispiel ist die Auswahl 1 halt schon 2x in der Tabelle zu sehen, und eben auch in der DB 2 mal vorhanden

    Mein Problem ist nun, dass ich nicht weiß, wie ich die ########## ersetzen soll. Hier soll die Bedingung rein, dass die Auswahl auf <option>1</option> steht....
    Soll heißen, wenn schon 2x die Auswahl "1" in der DB vorhanden ist und man sich nun versucht, nochmals mit dem Auswahlfeld auf 1 stehend einzutragen, kommt die Fehlermeldung....

    Das Ganze soll übrigens für alle 4 Auswahlmöglichkeiten geschehen, halt immer mit anderer Zahl im Fehler-Text....

    die Fehler werden hier übrigens via
    Code:
    if($fehler !=""){
    echo"<SCRIPT>
    alert('$fehler');
    </SCRIPT>";
    }
    ausgegeben...

    Ich hoffe einer von euch hat ne Ahnung, was ich will und weiß auch, wie es geht?!?!

  • #2
    Zitat von Hangasilly Beitrag anzeigen
    Auch diese wird mit via eval-Befehl in die TPL übergeben, sodass ich es anzeigen lassen kann.
    Was auch immer Du mit eval machst, entferne es wieder aus Deinem Code. Den Spruch "Eval is evil" gibst nicht umsonst. Mir ist auch nach 13 Jahren PHP noch keine Notwendigkeit untergekommen in der eval gebraucht werden würde.

    Zitat von Hangasilly Beitrag anzeigen
    PHP-Code:
    if(isset(_POST['action']) =="neu" AND ($_POST['action'] !="plan"){ 
    Was soll das sein? Bitte überlege Dir doch erstmal ob Dein Code überhaupt Sinn macht bevor Du diesen postest. Wenn Dir das nicht klar ist, lern Grundlagen. Das zu vermitteln ist nicht die Aufgabe dieses Forums.

    Zitat von Hangasilly Beitrag anzeigen
    Mein Problem ist nun, dass ich nicht weiß, wie ich die ########## ersetzen soll. Hier soll die Bedingung rein, dass die Auswahl auf <option>1</option> steht....
    Soll heißen, wenn schon 2x die Auswahl "1" in der DB vorhanden ist und man sich nun versucht, nochmals mit dem Auswahlfeld auf 1 stehend einzutragen, kommt die Fehlermeldung....
    Also ersetzt Du es genau mit dem was Du beschreibst. Du beantwortest Dir die Frage doch gleich selbst. Schreib Dir ne funktion die genau das Prüft und zurückgibt und nutze diese in Deinem Code den Du vorher reparieren solltest.

    PS: Es gibt keine if-Schleifen! => http://www.if-schleife.de/
    PHP-Manual ¡ mysql_* ist veraltet ¡ Debugging: Finde DEINE Fehler selbst ¡ Passwort-Hashing ¡ Prepared Statements

    Kommentar


    • #3
      Info zu eval() noch - Doku:

      Kepp the following Quote in mind:

      If eval() is the answer, you're almost certainly asking the
      wrong question. -- Rasmus Lerdorf, BDFL of PHP
      http://php.net/manual/de/function.eval.php#44008

      (Rasmus Lerdorf ist der Erfinder von PHP.)
      The string "()()" is not palindrom but the String "())(" is.

      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
      PHP.de Wissenssammlung | Kein Support per PN

      Kommentar


      • #4
        Schaue dir mal das folgende Beispiel an und versuche daraus zu lernen.

        PHP-Code:
        <?php
        $aus_der_DB 
        = [1=>1020];

        $fraktion 1;
        $message null;
        $options = array('options'=>array('default'=>1'min_range'=>1'max_range'=>4));
        $fraktion filter_input(INPUT_GET'fraktion'FILTER_VALIDATE_INT$options);

        if ( isset(
        $_GET['submit']) ) {    
            
        $message 'Es kann nichts in der DB geändert oder hinzugefügt werden.';
            if (
        $aus_der_DB[$fraktion] == 0){
                
        $message 'Eintrag in DB kann vorgenommen werden.';
            }
            if (
        $aus_der_DB[$fraktion] == 1){
                
        $message 'Änderung in DB kann vorgenommen werden.';
            }
        }    

        ?>

        <!DOCTYPE html>
        <html>
        <head>
            <meta charset="UTF-8">
            <title>Select Test</title>
        </head>
        <body>
        <p><?=$fraktion;?> ist <?=$aus_der_DB[$fraktion];?> mal vorhanden</p>
        <p><?=$message;?></p>
        <form>
            <label for="fraktion">Auswahl:</label>
            <select id="fraktion" name="fraktion" >
            <option value="1" selected>Wert 1</option>
            <option value="2">Wert 2</option>
            <option value="3">Wert 3</option>
            <option value="4">Wert 4</option>
            </select>  
            <input type="submit" name="submit">
        </form>
        </body>
        </html>

        Kommentar


        • #5
          Zitat von protestix Beitrag anzeigen
          HTML-Code:
          <select id="fraktion" name="fraktion" value="<?=$fraktion;?>">
          Das ist kein gültiges HTML! select kennt kein value attribut.

          PHP-Manual ¡ mysql_* ist veraltet ¡ Debugging: Finde DEINE Fehler selbst ¡ Passwort-Hashing ¡ Prepared Statements

          Kommentar


          • #6
            Danke für den Hinweis. Ich hab`s korrigiert.

            Kommentar


            • #7
              Zitat von Ulfikado Beitrag anzeigen

              Was auch immer Du mit eval machst, entferne es wieder aus Deinem Code. Den Spruch "Eval is evil" gibst nicht umsonst. Mir ist auch nach 13 Jahren PHP noch keine Notwendigkeit untergekommen in der eval gebraucht werden würde.



              Was soll das sein? Bitte überlege Dir doch erstmal ob Dein Code überhaupt Sinn macht bevor Du diesen postest. Wenn Dir das nicht klar ist, lern Grundlagen. Das zu vermitteln ist nicht die Aufgabe dieses Forums.



              Also ersetzt Du es genau mit dem was Du beschreibst. Du beantwortest Dir die Frage doch gleich selbst. Schreib Dir ne funktion die genau das Prüft und zurückgibt und nutze diese in Deinem Code den Du vorher reparieren solltest.

              PS: Es gibt keine if-Schleifen! => http://www.if-schleife.de/

              also zu plan und neu - sind 2 Buttons, "neu" trägt ein neuen Namen mit der Auswahloption ein, "plan" trägt einen anderen eintrag in einer anderen DB ein... das macht Sinn für mich und funktioniert auch...
              mit eval sende ich die Variablen aus der PHP zum TPL...hab das mal irgendwann halt so gelernt.... wüsste nun erstmal keinen anderen weg... du? - bin ja aufgeschlossen für alles neue


              weiterhin is das komplette script etwas komlexer, ich hab gestern nur versucht, dass aussem kopf zu posten, weil ich kein Zugriff darauf hatte...
              Ich hab da ausserdem noch ein Timer, ne 2. Tabelle und etliche anderen abfragen drin ...

              es ging mit mit der Frage eigentlich nur rein um den zusatz in der IF-Abfrage, wie ich den aufbaue... eben was ich oben geschrieben habe... 'Wenn schon 2x "1" in DB, dann Message, sonst eintragen"
              Ich weiß nicht ganz, wie ich das scripten soll...

              Das Script von protestix sieht zwar ganz interessant aus... ich versuch mir davon mal was abzuleiten..


              Kommentar

              Lädt...
              X