Sandra: SUBMIT - PROBLEM

Hi

Mein Thread unten scheint etwas untergegangen zu sein.
Also ich möchte select-auswahl und den jeweiligen klick auf ein imagemap auswerten lassen.
Ich probiere schon seit gestern rum und bekomms einfach nicht hin.
Wenn mir jemand auf die Sprünge helfen könnte, wäre ich sehr dankbar.

sandra

Hier der Quelltext:
----------------------------------------------------------------
<? include "./include/config.inc.php3"; ?> <!-- Datenbankconnect -->
<html>
<head>
<title></title>

</head>

<body>

<?
if ( $firmengebiet1 != 0 )
{
$query="SELECT * FROM kontakt WHERE (firmengebiet1='$firmengebiet1' or firmengebiet2='$firmengebiet1' or firmengebiet3='$firmengebiet1' or firmengebiet4='$firmengebiet1' or firmengebiet5='$firmengebiet1')";
$result=mysql_db_query($dbname,$query,$conn) or die(mysql_error());
while($date=mysql_fetch_array($result))
{
$code= 1;
$name= $date[name];
$ort= $date[ort];
$plz= $date[plz];
$firmengebiet= $date[firmengebiet];
$strasse= $date[strasse];
$bemerkungen1= $date[bemerkungen1];
$bemerkungen2= $date[bemerkungen2];
$url= $date[url];

echo ("Name: $name<br>");
echo ("Strasse: $strasse<br>");
echo ("PLZ: $plz<br>");
echo ("Ort: $ort<br>");
echo ("Bemerkungen: $bemerkungen1<br>");
echo ("Bemerkungen: $bemerkungen2<br>");
echo ("Firmengebiet: $firmengebiet<br>");
echo ("URL: $url<br>");
}

}
if ($code != 1)
{
echo ("Keinen Eintrag gefunden!");
}
}
elseif ($plz1 != "")
{
$query="SELECT * FROM kontakt WHERE plz LIKE '$plz1%'";
$result=mysql_db_query($dbname,$query,$conn) or die(mysql_error());
while($date=mysql_fetch_array($result))
{
$code= 1;
$name= $date[name];
$ort= $date[ort];
$plz= $date[plz];
$Firmengebiet= $date[firmengebiet];
$strasse= $date[strasse];
$bemerkungen1= $date[bemerkungen1];
$bemerkungen2= $date[bemerkungen2];
$url= $date[url];

echo ("Name: $name<br>");
echo ("Strasse: $strasse<br>");
echo ("PLZ: $plz<br>");
echo ("Ort: $ort<br>");
echo ("Bemerkungen: $bemerkungen1<br>");
echo ("Bemerkungen: $bemerkungen2<br>");
echo ("Firmengebiet: $firmengebiet<br>");
echo ("URL: $url<br>");
}
if ($code != 1)
{
echo ("Keinen Eintrag gefunden!");
}
}
?>

<p>datenabfrage</p>
<form name="ergebnis" method="post" action="test1.php">
  <p> <br>
      <br>
    Firmengebiet
    <select name="firmengebiet1" id="firmengebiet1">
      <OPTION value="0" selected>Bitte auswählen...</OPTION>
      <OPTION value="0001">Gaststätten</OPTION>
      <OPTION value="0002">Elektrobetriebe</OPTION>
      <OPTION value="0003">Dachdecker</OPTION>
      <OPTION value="0004">Tierzüchter</OPTION>
      <OPTION value="0005">Bäcker</OPTION>
    </select>
    <br><br>

<IMG NAME='de10' SRC='images/de.gif' WIDTH='491' HEIGHT='698' BORDER='0' USEMAP='#de1'>
<MAP NAME='de1'>

<AREA SHAPE='rect' COORDS='454,617,469,632' HREF='test1.php?plz1=80' ALT='PLZ 80...'>
<AREA SHAPE='rect' COORDS='472,617,487,631' HREF='test1.php?plz1=81' ALT='PLZ 81...'>
<AREA SHAPE='rect' COORDS='103,77,121,92' HREF='test1.php?plz1=20' ALT='PLZ 20...'>
 ... 99 Stück ...
 </MAP>
  </form>

</body>
</html>
------------------------------------------------------------------

  1. Hi,

    Mein Thread unten scheint etwas untergegangen zu sein.

    Vordrängelei und Forenspamming sind immer ein guter Weg, sich unbeliebt zu machen.

    cu,
    Andreas

    --
    Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
    http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/
    1. Vordrängelei und Forenspamming sind immer ein guter Weg, sich unbeliebt zu machen.

      ICH WOLLTE MICH NICHT UNBELIEBT MACHEN, SONDERN ICH HAB HILFE GESUCHT !!!

      BESTEN DANK
      SANDRA

      1. Holladiewaldfee,

        ICH WOLLTE MICH NICHT UNBELIEBT MACHEN, SONDERN ICH HAB HILFE GESUCHT !!!

        Das tun fast alle hier, die einen neuen Thread aufmachen.
        Wenn jemand eine Antwort auf Dein Problem weiß, so wird er auf Deine Frage antworten, ungeachtet dessen, wie weit unten sie im Forum steht.

        Leider gibt es aber immer mehr Leute, die meinen, durch eine Wiederholung ihrer Frage eine schnellere Antwort zu erreichen. Damit wirst Du aber genau das Gegenteil erreichen, zumindest in diesem Forum. Hab also Geduld.

        Im Übrigen klemmt Deine Shift-Taste ;)

        Ciao,

        Harry

        --
          Intelligenz ist nicht zwingend etwas positives.
          Man weiß erst, was man hatte, wenn man es verloren hat.
        1. Hab also Geduld.

          OK.
          Ich hab jetzt Gedult und die Schifttaste funzt auch wieder :)

          Sandra

          1. Hi Sandra,

            Hab also Geduld.

            OK.
            Ich hab jetzt Gedult und die Schifttaste funzt auch wieder :)

            in der Zwischenzeit kannst Du meine Maschine trainieren!
            [pref:t=52628&m=290396]
            Du scheinst dafür präsdinier....aeh...gut geeignet. :-))

            Gruß
            Reiner

            1. Hi,

              Ich hab jetzt Gedult und die Schifttaste funzt auch wieder :)
              in der Zwischenzeit kannst Du meine Maschine trainieren!
              [pref:t=52628&m=290396]
              Du scheinst dafür präsdinier....aeh...gut geeignet. :-))

              ROTLF!!!

              [X] Vote als *g* zum Wochenende

              wunderwarzenschwein

              --
              ss:} zu:$ ls:} fo:| de:] va:) ch:? sh:( n4:# rl:? br:> js:| ie:( fl:{ mo:)
  2. Holladiewaldfee,

    Hier der Quelltext:

    Und hier mal ein paar allgemeine Anmerkungen:

    $name= $date[name];

    Besser: $name = $date['name'];
    Darüberhinaus ist $date ein ungünstiger Name für eine Variable, weil PHP eine Funktion date() besitzt.

    <IMG NAME='de10' SRC='images/de.gif' WIDTH='491' HEIGHT='698' BORDER='0' USEMAP='#de1'>

    Du solltest auch hier Anführungszeichen verwenden und keine Hochkomma.

    Ciao,

    Harry

    --
      Intelligenz ist nicht zwingend etwas positives.
      Man weiß erst, was man hatte, wenn man es verloren hat.
    1. Hallo,

      <IMG NAME='de10' SRC='images/de.gif' WIDTH='491' HEIGHT='698' BORDER='0' USEMAP='#de1'>

      Du solltest auch hier Anführungszeichen verwenden und keine Hochkomma.

      <MODUS type="nitpick">
      Das ['] ist ein einfaches Anfuehrungszeichen (single quote mark),
         auch Apostroph genannt.
      Das ["] ein doppeltes Anfuehrungszeichen (double quote mark).

      OK, es gibt das uralte Geruecht, dass man (in Attributen)
      keine einfachen Anfuehrungzeichen verwenden duerfe, weil
      gewisse Browser nicht damit klarkaemen.

      Aber: In SGML im allgemeinen und in HTML im speziellen sind
      ausdruecklich beide Varianten erlaubt.
      HTML 2.0 (1995!):
      http://www.w3.org/MarkUp/html-spec/html-spec_3.html#SEC3.2.4
      HTML 4.01 (1999):
      http://www.w3.org/TR/REC-html40/intro/sgmltut.html#h-3.2.2

      Also, ich wage zu bezweifeln, dass heute noch Browser in der
      freien Wildbahn sind, die nicht einmal in diesem Punkt mit
      HTML 2.0 kompatibel sind. ;-)

      Ganz, ganz schlecht ist es, das Zeichen [`] zu verwenden (backtick).
      Oder die "typographischen" Anfuehrungszeichen, die manche
      "schlauen" Editoren/Textverarbeitungen automatisch verwenden.
      </MODUS>

      mfg
      Thomas

    2. Hallo Harry,

      Darüberhinaus ist $date ein ungünstiger Name für eine Variable, weil PHP eine Funktion date() besitzt.

      Warum? Ich sehe da keine Relevanz. Der Namensraum von Variablen hat in PHP - im Gegensatz zu z.B. C - nichts mit dem Namensraum von Funktionen zu tun; dies erkennt man alleine schon an der Tatsache, dass Funktionen case-insensitive behandelt werden, Variablen aber case-sensitive.

      Viele Grüße,
      Christian

  3. Also ich möchte select-auswahl und den jeweiligen klick auf ein imagemap auswerten lassen.
    Ich probiere schon seit gestern rum und bekomms einfach nicht hin.

    Nachdem Du ja bereits einen obligatorischen Tritt in den Hintern bekommen hast, trete ich nochmal nach und frage Dich, wieviel Information die Fehlerbeschreibung "es geht nicht" Deiner Meinung nach wohl enthält:

    [ ] gar keine
      [ ] überhaupt keine

    Ganz allgemein: Wenn Du um Hilfe bittest, dann sorge dafür, daß Du es Deinem Gegenüber so einfach wie möglich machst. Je schneller und genauer die Aufgabenstellung zu erkennen ist, desto mehr Chancen hast Du, eine Antwort zu erhalten, schlicht und ergreifend, weil es zwar eine Menge Leute gibt, die gerne helfen, aber die wenigsten davon haben Lust, sich erst eine Stunde lang in die Materie einzuarbeiten.

    Für die Aussage "geht nicht" und das Absetzen von zweieinhalb Seiten Code trifft das leider nicht zu, auch wenn man Dir zu Gute halten kann, daß Du im Gegensatz zu anderen wenigstens an den Code gedacht hast.

    Großen Frust kannst Du außerdem vermeiden, indem Du von vornherein klarstellst, was Du bereits versucht hast. Es nur wenig deprimierenderes für einen Helfer als nach einem halbstündigen Erklärungsversuch ein mehr oder weniger patziges "das weiß ich schon längst" vom Fragenden vor den Latz geknallt zu bekommen.

    Auch dazu wäre kritisieren, daß Du gerne auf Deinen alten Thread hättest hinweisen können. Wenn Du schon befürchtest, daß er untergegangen sein könnte, warum erwartest Du dann von Deinem potentiellen "Retter", daß er sich erst von Hand durch das große, böse Forum wühlen muß, um die Vorgeschichte zu kennen.

    Um das ganze Thema nicht allzu sehr zu strapazieren: Wie Du ja bereits gemerkt hast, bewegst Du Dich sehr dicht an einer Grenze, die hier im Forum schon häufig zu hitzigen Diskussionen geführt hat, und zwar zwischen Fragenden und denjenigen, denen salopp gesagt ohne Nachzudenken hingerotzte Fragen nur noch auf den Keks gehen - nicht, daß das mit dem "hingerotzt" jetzt 1:1 auf Dich zutreffen würde, aber ein wenig mehr "Nachdenken", dass heißt Mühe, kannst Du gerne wagen.

    Zum Problem:

    <form name="ergebnis" method="post" action="test1.php">
        Firmengebiet
        <select name="firmengebiet1" id="firmengebiet1">
          <OPTION value="0" selected>Bitte auswählen...</OPTION>
          <OPTION value="0001">Gaststätten</OPTION>

    [..]

    </select>

    <IMG NAME='de10' SRC='images/de.gif' WIDTH='491' HEIGHT='698' BORDER='0' USEMAP='#de1'>
    <MAP NAME='de1'>

    <AREA SHAPE='rect' COORDS='454,617,469,632' HREF='test1.php?plz1=80' ALT='PLZ 80...'>
    ... 99 Stück ...
    </MAP>
      </form>

    Soweit ich das überblicke, möchtest Du, daß das Formular mit den <area>s abgesendet wird.
    Das Problem an der Geschichte ist, daß <area> und <form> eigentlich nicht füreinander gedacht sind. Mit dem href-Attribut von <area> wirst Du deshalb nichts werden, denn entweder folgst Du einem Verweis (<area>) oder Du schickst ein Formular ab (<form>), beides gleichzeitig geht nicht.

    Es sollte aber möglich sein, dort statt des href ein onClick-Ereignis zu benutzen, welches eine Javascript-Funktion aufruft, die im Formular ein <input>-Feld auf die entsprechende Postleitzahl setzt und anschließend das Formular absendet, in etwa so:

    <form ...
      <input type="text" name="plz" maxlength="2" ...
      ...
      </form>
      <area onclick="plzwahl(80);" ...

    ..sowie:

    function plzwahl(plz)
        {
         document.forms["ergebnis"].plz.value=plz;
         document.forms.submit();
        }

    (aus dem Handgelenk geschüttelt, eventuelle Fehler bitte ich zu entschuldigen)

    Fügst Du noch ein normalen <input type="submit"> hinzu, hätte diese Vorgehensweise außerdem den nicht zu unterschätzenden Vorteil, daß man Deine Seite auch ohne Javascript benutzen kann und Benutzer ohne grafischen Browser sie besser bedienen können (eine <area>-Grafik hat ohne Grafik nicht sonderlich viel Bedeutung).
    Entscheidest Du Dich gegen diese Zugangserleichterung (was ich nicht hoffe), kannst Du statt <input type="text"> natürlich auch <input type="hidden"> benutzen.

    Beachte bitte, daß Du in jedem Fall die übergebenen Postleitzahl auf Plausibilität prüfst. Gibt der Benutzer etwas Unsinniges ein (z.B. "blabla" oder "123456789"), solltest Du ihn auf diesen Umstand explizit hinweisen anstatt einfach ein plattes "es wurde nichts gefunden" auszuspucken.

    Weiterhin hast Du in Deinem PHP-Code schwerwiegende Fehler gemacht:

    1.:

    $query="SELECT * FROM kontakt WHERE plz LIKE '$plz1%'";

    Bitte übernehme NIE NIE NIE NIE Daten, die von draußen kommen, ohne weitere Prüfung einfach so in die interne Verarbeitung. Es braucht für plz nur ein Anführungszeichen und schon kann man Deine obige SQL-Anweisung aushebeln. Hier ist es nicht so schlimm, aber wäre es beispielsweise eine Passwortprüfung:

    SELECT * FROM nutzer WHERE passwort='$passwort'

    braucht man als Passwort nur

    ' or ''='

    einzutippen und erhält Zugang:

    SELECT * FROM nutzer WHERE passwort='' or ''=''

    Mache Dich also bitte DRINGENST mit der Funktion mysql_escape_string() vertraut.

    2.:

    echo ("Name: $name<br>");

    Nicht minder gefährlich. Mal abgesehend davon, daß Du möglicherweise ungültigen HTML-Code produzierst, sobald in $name beispielsweise ein deutscher Umlaut erscheint - an anderer Stelle wie zum Beispiel einem Gästebuch derart blauäugig gedankenlos eingesetzt, ermöglichst Du Außenstehenden, beliebigen HTML-Code, und damit auch CSS, Javascript oder Verweise auf Dialer, in Deine Seiten einzubauen.

    Mache Dich bitte weiterhin mit der Funktion htmlentities() vertraut:

    echo ("Name: ".htmlentities($name)."<br>");

    Gruß,
      soenk.e

    1. Also danke erstmal an alle die auf die eigentliche Frage geantwortet haben und die Ohrfeigen nehme ich mal so hin, denn ich hab sie ja verdient.
      Jetzt weiss ich aber erstmal was funktionieren könnte und was nicht.
      Ich werde mir jetzt die Zeit nehmen und mal alle Vorschläge durchprobieren.
      Ich hab leider noch nicht so viel Erfahrung in PHP und Javascript, deshalb auch besten Dank für die Empfehlungen, was ich mir dringend anzusehen habe. Das ist eine gute Ebene zu lernen finde ich, da man Hilfe und Praxis in einem hat.
      Sorry nochmal an alle, falls ich einen schlechten Eindruck erweckt habe.

      Sandra