PHP 2 Tabellen "gegenprüfen"!

bytewizard

Newbie
Registriert
Juni 2009
Beiträge
5
Ich habe 2 Tabellen von denen sich der Benutzer einen Fußballnamen über Listenfelder auswählen kann, zum Beispiel "FC Buxtehude"!

Der Name besteht aus dem Vereinskürzel "FC" welches aus einer Tabelle "geholt" wird und aus dem Stadtnamen "Buxtehude" welcher aus einer anderen Tabelle kommt!

Nachdem also der User seinen Fußballnamen eingestellt hat wird mit Klick überprüft, ob der Name noch verfügbar ist!

Ich hätte das gerne Folgendermaßen: Wenn der User im ersten Listenfeld "FC" ausgewählt hat, werden ihm, automatisch, bei den Stadtnamen nur noch die freien Namen angezeigt!

Wie mache ich das?
 
naja entweder du schickst das formular nachdem du das erste listenfeld ausgewählt hast ab, mit onclick="submit();" oder du benutzt ajax um das ganze ohne refresh der seite zu machen.

und in php oder welche serverseitige sprache du einsetzt kannst du dann einfach die freien stadtnamen herausfinden
 
ajax ist eigentlich nur ein überbegriff, funktioniert so dass du mit javascript einen http request an deine php datei schickst und etwas zurückbekommst, und dann kannst du im javascript deine website verändern.

ich würde dir hier jquery empfehlen, weil du dir dann sehr viel code ersparen kannst.
http://docs.jquery.com/Ajax
auf dieser seite findest du eigentlich alles was du wissen musst. du kannst im request dann auch angeben ob du die variablen mit get oder post an php übergibst usw.

lies dich einfach mal ein in das thema ;)
 
Naja da ich nix genaueres weiß über deine Tabellen würde ich die gewählten stadtnamen einfach mit mysql_query("UPDATE blabla SET active='1'");
updaten wenn jemand sie wählt.
Und dann mit
$select = mysql_query("SELECT * FROM blabla WHERE active='0'");
DIe Teile holen die inaktiv sind.

MfG
 
dazu würde er aber ein zusätzliches flag in der tabelle benötigen, er kann ja auch "select * from tabelle where vereinskuerzel = '$_GET[irgendwas]'"

oder er muss anders joinen, kommt halt auf seine tabellen an, aber die möglichkeit mit dem flag würde ich ihm eher abraten...
 
So sieht das im Moment aus:

Code:
$tpl->define_dynamic("members_row", "tmpl_row");
			$result	= mysql_query("SELECT * FROM $table_kuerzel order by VereinsKurz ASC");
			while ($stadt = mysql_fetch_array($result))
			{
				
				$tpl->assign(array(
					ROW_VEREINSNUMR		=> $stadt["VereinsNumr"],
					ROW_VEREINSKURZ		=> $stadt["VereinsKurz"]
				));

				$tpl->parse(MITGLIEDER, ".members_row");
			}


			$tpl->define_dynamic("members_row2", "tmpl_row");

			$result	= mysql_query("SELECT * FROM $table_stadt order by StadtNam ASC");
			while ($stadt = mysql_fetch_array($result))
			{
				
				$tpl->assign(array(
					ROW_STADTNUMR		=> $stadt["StadtNumr"],
					ROW_STADTNAM		=> $stadt["StadtNam"]
				));

				$tpl->parse(MITGLIEDER2, ".members_row2");


Und nun?
 
Zuletzt bearbeitet:
hatte jetz leider keine zeit mir lange dein script anzuschauen, aber ich würde es einfach so machen, dass er sich erstmal sein kürzel (zB FC) auswählt!
nun klickt er auf einen button wie zB "Prüfen"
nun werden ihm wieder in einem dropdown-menü die ganzen freien angezeigt!
hoff ich hab dein problem jetz auf die schnell verstanden...

PHP:
echo '<html>
    <form action="test.php" method="post">
    <fieldset>
        <legend>Bitte Daten eingeben<br/></legend>
          <table border="0" cellpadding="0" cellspacing="4">
          <tr>
      <td align="right">Kürzel:</td>
      <td><label><input type="text" name="kuerzel" size="90" /></label></td>
          </tr>

//natürlich auch gerne mit Dropdownmenü

      <td align="right"></td>
        <td><br/><input type="submit" name="formaction" value="Absenden" /></td>
          </tr>
          </table>
    </fieldset>
</form>
</html>';

//nachdem nun das kürzel eingeben wurde wird folgendes gemacht

$connection=mysql_connect( $mysqlhost, $mysqluser, $mysqlpwd);

mysql_select_db( $mysqldb, $connection);

if ($_POST['formaction'] == 'Absenden') {

/*Hier das ganze gelubber wo er dann in der Tabelle nach den noch verfügebaren namen sucht und diese als dropdownmenü anzeigt!*/

hoffe ich konnte helfen
 
@Destruction: Klingt interessant, mit dem "Active"-setzen.. aber wie?

@te one: Klar, aber, ich verstehe das nicht ganz. Ich habe ja schon 2 Listenfelder (Auswahlmenüs) wo die ganzen Kürzel und Städte drin sind. Jedoch: nun möchte ich, daß er nicht erst die Kombination prüft, wenn ich auf "Abschicken" klicke, sondern, sobald ich FC (als Beispiel) wähle, im zweiten Listenfeld nur noch die da sind, die noch frei sind! ;)
 
hierfür benutzt du das am ende meines scriptes!
PHP:
if ($_POST['formaction'] == 'Absenden') {
...
}

dafür machst du oben im formular nur ein eingabefeld für das kürzel!
und in diesen if-teil den ich hier grad nochmal geschrieben hab, machst du dann ein eingabefeld für die Stadt!

Somit wird dieses eingabefeld (stadt) bzw das dropdownmenü erst angezeigt wenn er ein kürzel gewählt hat, und auf Abschicken geklickt hat!

oben im formular muss dann als ziel einfach der dateiname stehen, den dieses script hat! so schickt er dann des $_POST['formaction'] an sich selbst!

Wie das funktioniert ohne dass der user nach der eingabe des kürzel einen button drücke musst weiß ich jetz auf anhib nicht, abba is auch net soooo schwer!
 
Ja das geht eben nicht nur mit PHP sondern du brauchst AJAX oder nur Javascript...
 
sicher geht es auch nur mit php (ok und ganz wenig javascript, eigentlich nur die "submit();" methode von form)...anscheinend hat keiner meine ersten beiden beiträge gelesen, schade eigentlich, da steht doch eh alles drinn...

gut, da ich heut mal mehr zeit hab, hab ich dir das beispiel vorprogrammiert:
PHP:
<?php

/* 
So zur Erklärung, es is ein beispiel dass dir nur zeigen soll wie du die selectboxen abhängig voneinander befüllst.
ich hab jetzt auf datenbankverbindung usw verichtet und ich hoffe dass du das richtig interpretiern kannst.
Es ist die lösung ohne ajax
*/

// das sollten jetzt eigentlich daten aus der datenbank sein...
$data = array(
    "a"    => array("a1", "a2", "a3"),
    "b"    => array("b1", "b2", "b3"),
    "c"    => array("c1", "c2", "c3"),
    "d"    => array("d1", "d2", "d3")
);

########

if (sizeof($_POST) > 0) {
    if ($_POST['submitbutton']) { // ganz wichtig, überprüfen ob der submitbutton gedrückt wurde!!
        // hier werden die daten aus dem formular dann gespeichert usw!
        echo("formular gespeichert");
        exit;
    } else if ($_POST['erstes']) { // hier wurde nur das select feld geändert und es wurde ein wert außer  "---" ausgewählt
        // zweites feld füllen:
        foreach ($data[$_POST['erstes']] as $key) {
            $zweites .= "<option value='$key'>$key</option>";
        }
    }
}

// erstes feld füllen:
foreach ($data as $key => $value) {
    $erstes .= "<option value='$key'";
    $erstes .= ($_POST['erstes'] == $key) ? "selected" : ""; // kurz-if, wir müssen ja das was gesetzt wurde wieder setzen
    $erstes .= ">$key</option>";
}

?>

<html>
    <head>
    <!-- den lass ich jetzt weg, du weißt eh was hier reinkommt -->
    </head>
    
    <body>
        <form action="?" method="post">
            <table>
                <tr>
                    <td><label>Erstes Selectfeld:</label></td>
                    <td><select name="erstes" size="1" onchange="submit();"><option value="0">---</option><?php echo($erstes); ?></select></td>
                </tr>
            
                <tr>
                    <td><label>Zweites Selectfeld:</label></td>
                    <td><select name="zweites" size="1"><option value="0">---</option><?php echo($zweites); ?></select></td>
                </tr>
                
                <tr>
                    <td>&nbsp;</td>
                    <td><input type="submit" name="submitbutton"/></td>
                </tr>
            </table>
        </form>
    </body>
</html>
 
Zuletzt bearbeitet:
Zurück
Oben