mysql/php formular

  • geschlossen
  • MySQL

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • mysql/php formular

    moin!
    ich suche nach einer möglichkeit, in einem formular eine <select> box mit mehreren options in verbindung mit einer mysql datenbank so zu gestalten, dass immer wenn ein wert angeklickt und in die datenbank eingetragen wurde, dieser nicht mehr im formular zu verfügung steht.

    ich habe einen etwas, wie ich denke, umständlichen lösungsansatz, den ich nicht mehr verwenden möchte(, der zudem auch "nur" php verwendet):
    ich habe innerhalb des <select> tags einfach .txt-dateien includet, die jeweils eine <option> enthalten. danach wird in einer großen if-abfrage die angewählte <option> abgefragt und in die entsprechend zugehörige .txt-datei einfach ein \\ eingefügt, was zur folge hat, dass diese <option> von nun an nicht mehr im formular vorhanden ist.

    gibt es eine einfachere lösung, die vielleicht mit mysql arbeitet. sie sollte nicht allzu kompliziert sein...
    mfg pHaRyNx
  • Ich weiß ja nicht genau wie Deine DB-Tabelle ausschaut, aber wenn Du für jeden Eintrag einen Flag gesetzt hast, dann kannst Du doch einfach abfragen ob der Flag gesetzt ist oder nicht (if isset etc.)!?

    Ansonsten mußt Du Dein Problem besser beschreiben oder mal sagen wo man es sich anschauen kann.

    Gruß

    Testmaster
  • dann lass das formular auch einfach aus der datenbank auslesen ;)
    Wennst nicht genau weißt wie schreib mich mal an, nur jetzt ist es zu spät ^^

    auf jedenfall würd ich das menü aus der db auslesen lassen oder halt vor jedem optiopn ne if machenob der eintrag schon vorhanden is.

    Ansonsten wenn du es so willst, kannst du doch auch machen das man in dem Menü gleich 3 oder 4 sachen auswählen kann und die werden dann zusammen in die DB eingetragen, wäre doch einfacher oder ?

    Wie gesagt morgen kann ich dir auch genau erklären wie, jetzt will ich aber fernsehn ^^

    bis denne
    Falk
  • Also ich hab mal meine alte Version hochgeladen... hxxp://pharynx.ph.funpic.de/fsb/z1.php
    ^^sind jetzt ein paar fehler zu sehen, weil ich nicht alles hochgeladen habe...

    Ansonsten wäre es nett, wenn jemand ein kleines bsp. posten könntet, da ich momentan nicht genau weiss, wie genau die Abfrage erfolgen soll...

    pHaRyNx
  • Bitte poste noch Deine Tabellenstruktur. Wenn Du für jeden Platz eine Spalte hast ist es ganz einfach. Ansonsten mußt Du einen Array durchsuchen, aber wie gesagt, dazu müßte man die Tabelle sehen aus der die Daten geholt werden.
    Soll in dem Formular dann Checkboxen verwendet werden? Platz 13-37?
  • ich hab noch keine tabelle angelegt, weil ich noch nicht ganz fertig bin mit dem script...ich habe jedoch vor, dass die platznummer in einer seperaten spalte gespeichert werden soll:

    script schrieb:

    $eintrag = "INSERT INTO anmeldung
    (name, nick, strasse, ort, tel, email, platz, ip)
    VALUES
    ('$name', '$nick', '$street', '$ort', '$telefon', '$email', '$platz', '$remote')";

    ...ich werde keine checkboxen extra benötigen. es sollen aber nur eine bestimmte anzahl von plätzen (z.b. 1-100) von anfang an zur verfügung stehen.
  • thx erstmal! ist wesentlich kürzer als meine variante!
    <?
    $conn = mysql_connect("localhost","Falk","PASSWORT");
    mysql_select_db("fsb");

    for($x=1;$x<=100;$x++)
    {
    $query = mysql_query("SELECT * FROM anmeldung where platz = ".$x."");
    if(mysql_num_rows($query) == 1)
    { }
    else
    echo "<option value=\"".$x."\">".$x."</option>";
    }

    ?>

    ich habe noch ein paar fragen zu dem syntax/ablauf der for-schleife:
    - echo "<option value=\"".$x."\">".$x."</option>"
    wieso ist hier der "." vor und nach der variable $x zu finden?
    -"if(mysql_num_rows($query) == 1)"
    was genau macht der befehl? logisch müsste er so viel heißen wie "wenn .$x. vorhanden ("1"), dann nichts ("{}") machen. oder?
    gibt es irgendwo eine liste mit solchen mysql-abfragen?
    mfg pHaRyNx
  • von ner liste weiß ich nix aber ich versuche es mal zu erklären ;)

    bei echo "<option value=\"".$x."\">".$x."</option>"

    \"".$x."\"

    so, mit anführungszeichen oben wird hier ja das echo eingeleitet, \" dient nur dazu das später im quelltext auchanführungszeichen sind denn mit dem slash kann man sonerzeichen ausgeben. Das Anfphrungszeichen was direkt dannach kommt beendet eigentlich die echo ausgabe, also das hier: \" ".$x."\"
    dann müsste ein simikolon ; folgen, oder aber man erweitert die ausgabe in dem man mit dem punkt etwas an diese anweisung dran hängt, in diesem fall eine Variable, man kann so aber auch funktionen etc. anbringen.
    Also .$x. bedeutet häng an die echo ausgabe die variable $x dran und an die variable $x häng wieder eine ausgabe dran, deshalb ist hinter $x auch noch ein punkt.

    Den Punkt kann man auch bei variablen zuweisungen benutzten:

    PHP-Quellcode

    1. $test1 = "Hallo ";
    2. $test2 = $test1."Welt";
    3. // oder
    4. $x = "Hallo ";
    5. $x .= "Welt";


    beides würde als augabe "Hallo welt" verursachen ^^
    durch den pubnkt wird die aktuelle anweisung einfach verlängert....
    naja zumindest kann man es so ausdrücken ich hoffe das war irgendwie verständlich ^^

    und if(mysql_num_rows($query) == 1)

    macht im endeffekt das was du oben gesagt hast.
    Er zählt wie oft der es im feld platz die nummer $x gibt und wenn es sieeinmal gibt dann macht er nix, besser wäre vlt. if(mysql_num_rows($query) >= 1) denn wenn durch einen fehler ne zahl 2mal eingetragen wird würde es da nen fehler geben ^^

    so hoffe jetzt is alles klar ^^"

    Falk
  • ^^ja, danke für die erklärung.
    habe nun aber noch ein kleineres problem:
    wie kann ich einen bestimmten wert aus einer tb spalte auslesen, um diesen dann z.b. um 1 zu erhöhen?
  • oO" h**p://tut.php-q.net/mysql.html <-also das tut sollte jeder schonma durchgemacht haben ;)

    PHP-Quellcode

    1. <?php
    2. error_reporting(E_ALL);
    3. include 'inc/config.php';
    4. // Konfigurationsdatei laden
    5. @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die(mysql_error());
    6. mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());
    7. $sql = "SELECT
    8. Titel
    9. FROM
    10. News
    11. WHERE
    12. tb = 'genau die';";
    13. $result = mysql_query($sql) OR die(mysql_error());
    14. if(mysql_num_rows($result)) { // gucken ob was im Query drinsteckt
    15. $row = mysql_fetch_assoc($result);
    16. $sql = "UPDATE
    17. News
    18. SET
    19. Title = ".$row['Title']+1."
    20. WHERE
    21. tb = 'genau die';";
    22. mysql_query($sql) OR die(mysql_error());
    23. }
    24. ?>
    Alles anzeigen
  • ja oder halt hier nachfragen ^^
    aber das du jetzt mit konstanten ankommst hilft ihm glaube ich nich besonders ;)

    also vorweg nich darüber wundern ^^
    @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS)

    zu deiner frage kannst du mach wenn du weißt du willst nur einen wert haben mysql_fetch_row nehmen ^^
    dann muss man nicht zwangsweise mit nem array arbeiten, ansonsten würde ich guggen ob du es nicht auch mal mit mysql_fetch_object versucht weil OOp is einfac geil XD
    auch wenn ich bei mysql abfragen auch liebder mysql_fetch_assoc nehmen würde, dennoch für eine ausgabe brauchst du nur mysql_fetch_row

    und das updaten is noch leichter:

    PHP-Quellcode

    1. mysql_query("UPDATE test_table SET testfeld = testfeld+1 where testfeld2 = 1);

    Falk

    edit:
    okay dann wird es aber nicht ausgelesen...

    und wenn du immer ein feld (z.B. zur nummerierung oder ID) um einen erhören willst versuchs mit PRIMARY_KEY und AUTO_INCREMENT
  • Falk schrieb:

    ja oder halt hier nachfragen ^^
    aber das du jetzt mit konstanten ankommst hilft ihm glaube ich nich besonders ;)

    also vorweg nich darüber wundern ^^
    @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS)


    Na ich wollt gleich mal was aus dem TUT nehmen xD
    ->Da sieht man gleich ob ers denn auch gelesen hat xD

    Aber bist du dir sicher, dass das funktioniert oO"
    mysql_query("UPDATE test_table SET testfeld = testfeld+1 where testfeld2 = 1);
    Ich mein ich hab mal ein Prob mit nem Counter gehabt und das hat alles nur gehackt, weil ich testfeld = testfeld+1 geschrieben hab.
    Also als ichs geändert hab und das vorher erst ausgelesen hatte hat sich das Prob in Luft aufgelöst...
  • also bei klappt es super, aber deine variante is ja auch nich schlecht vorallem wenn er es ja eh auslesen will, nur das man dabei eben 2 mal den server ansprechen muss ;)

    wie auch immer
    ich glaube wir kommen vom thema ab und auf ne woche speerung hab ich kein bock ^^

    wie gesagt sonst muss man halt auch einfach auto_increment nehmen ;)

    Falk
  • ich muss BloodVortex recht geben, bei mir hat deine methode irgendwie nicht geklappt...
    nun was anderes:
    Parse error: syntax error, unexpected '"' in f:\wamp\www\connect1.php on line 19

    entspricht folgender zeile:

    zeile 19 schrieb:

    $update = "UPDATE raidlist SET zahl = ".$row['Title']+1." WHERE name=\"$dname\" and gegner=\"$gegner\" and koord=\"$koord\" and typ=\"$ttyp\"";

    ^^aghrr, was ist da falsch? wenn ich title durch den spaltennamen (zeile) ersetzt, kommt das gleiche...
    mfg pHaRyNx
  • hmm.... probier mal die \" durch Hochkommatars zu ersetzen (' <-die viecher)
    das kanns aber nicht sein... hmm...^^"

    poste mal 2 Zeilen oben und unten mehr. manchmal liegt es nicht genau an der Zeile die Angegeben wird.

    Gruß
    BloodVortex
  • if(mysql_num_rows($squery))
    {
    $row = mysql_fetch_assoc($squery);

    $update = "UPDATE raidlist SET zahl = ".$row['Title']+1." WHERE name=\"$dname\" and gegner=\"$gegner\" and koord=\"$koord\" and typ=\"$ttyp\"";
    mysql_query($update) or die(mysql_error());
    }

    ^^ist deinem bsp entnommen und etwas umgeändert.
    mfg pHaRyNx
  • ich weiß, wo der Fehler liegt ;)
    Es muss heißen:

    PHP-Quellcode

    1. $update = "UPDATE raidlist SET zahl = ".($row['Title']+1)." WHERE name=\"$dname\" and gegner=\"$gegner\" and koord=\"$koord\" and typ=\"$ttyp\"";

    ->Sry das ichs im beispiel falsch gemacht hatte ^^"
  • ^^ist ok. ich musste jedoch 'Title' durch den Spaltennamen 'zahl' erstetzen. jetzt klappt es !!!
    danke an euch zwei (BloodVortex und Falk), ihr habt mir sehr geholfen.
    :danke:
    mfg pHaRyNx