Christoph: MySQL Ausgabe doppelt

Hallo liebe Forumler,

ich habe da mal ein Problemchen...
Und zwar lasse ich Daten mir aus der Mysql Datenbank ausgeben, was auch klappt aber er gibt Sie mir leider doppelt aus, warum auch immer ;(
Hier mal mein Code:
<tr>
 <td>Kunde:</td>
 <td>
 <select name="kundennr" onchange="document.forms[0].submit();">
 <option value="0">Auswahl</option>
 <?
 # Alle Daten aus der Tabelle Kunden auslesen und per Kund_Name ordnen lassen
 $result2 = mysql_query("SELECT * FROM Kunden ORDER BY Kund_Name") or die(mysql_error());
 while ($row = mysql_fetch_row ($result2))
 {
  if ($kundennr == $row['0'] || $kundennr == $row['0'])
  {
   $kundenid = $row['0'];
   ?>
   <option value="<?echo $row[0]?>" selected><? echo $row['1']?></option>
   <?
  }
  else
  {
   ?>
   <option value="<?echo $row['0']?>"><? echo $row['1']?></option>
   <?
  }
 }
 ?>
 </select>
 </td>
</tr>
<?
if($kundennr!="0" && $kundennr!="")
{
 ?>
 <tr>
  <td>Netzwerk:</td>
  <td>
  <select name="netzwerknr" onchange="document.forms[0].submit();">
  <option value="0">Auswahl</option>
  <?
  $result4 = mysql_query("SELECT k.Kund_ID AS kid, n.Nw_IP AS nnip, n.Nw_ID AS nid, n.Nw_Kund_ID AS n_nid FROM Kunden AS k, Netzwerk AS n WHERE '$kundenid' = n.Nw_Kund_ID") or die(mysql_error());

while ($row2 = mysql_fetch_row ($result4))
  {
   if ($netzwerknr == $row2['0'])
   {
    ?>
    <option value="<?echo $row2['0']?>" selected><? echo $row2['1']?></option>
    <?
   }
   else
   {
    ?>
    <option value="<?echo $row2['0']?>"><? echo $row2['1']?></option>
    <?
   }
  }
  ?>
  </select>
  </td>
 </tr>

Also er holt sich die Kunden ganz normal aus der Kundentabelle raus. Nachdem man sich dort ein Kunde ausgesucht hat soll das Netzwerk des Kunden erscheinen. Das geht auch, nur die IP Adressen die das netzwerk anzeigen gibt er mir doppelt aus... Weiß einer Rat?

im html siehts dann so aus:
<tr>
 <td>Netzwerk:</td>
 <td>
 <select name="netzwerknr" onchange="document.forms[0].submit();">
 <option value="0">Auswahl</option>
 <option value="1" selected>192.17.23.253</option>
  <option value="2">192.17.23.253</option>
  <option value="1" selected>212.121.1212</option>
  <option value="2">212.121.1212</option>
 </select>
 </td>
</tr>

Vielen Dank für eure Hilfe

Grüße

cg

--
Ich bin ein spezialisz!
(Zitat von VENGA JO)
sh:) fo:) rl:° br:& ie:| mo:) va:) fl:) ss:| ls:< js:|
Die Erklärung zum Selfcode findest du hier: http://emmanuel.dammerer.at/selfcode.html
Einen Decoder für den Selfcode findest du hier: http://peter.in-berlin.de/projekte/selfcode
  1. Hi,

    must du mal mit "GROUP by ip" versuchen, wirst dort sicher
    die Ips doppelt in der DB haben ...

    Gruß

    1. Hi,

      must du mal mit "GROUP by ip" versuchen, wirst dort sicher
      die Ips doppelt in der DB haben ...

      Gruß

      Hi romy,

      nein die Ip&#180;s stehen ganz normal nur einmal drin. Das ist es nicht...

      Gruß cg

      --
      Ich bin ein spezialisz!
      (Zitat von VENGA JO)
      sh:) fo:) rl:° br:& ie:| mo:) va:) fl:) ss:| ls:< js:|
      Die Erklärung zum Selfcode findest du hier: http://emmanuel.dammerer.at/selfcode.html
      Einen Decoder für den Selfcode findest du hier: http://peter.in-berlin.de/projekte/selfcode
      1. Hi cg

        Hi romy,

        wenn Du mich schon ansprichst antworte ich gleich mal

        dein SQL-String könnte man etwas aufräumen
        SELECT k.Kund_ID AS kid,
         n.Nw_IP AS nnip,
         n.Nw_ID AS nid,
         n.Nw_Kund_ID AS n_nid
        FROM Kunden AS k, Netzwerk AS n
        WHERE '$kundenid' = n.Nw_Kund_ID

        Mit sicherheit liegen die doppelten Datensätze an dem Full Join den Du machst, um Genaueres zu sagen müsste ich die Datenstruktur kennen.

        Versuche also die Tabellen mit entsprechendem Operator zu verknüfpen, nämlich inner join oder Left join etc.

        SELECT k.Kund_ID AS kid,
         n.Nw_IP AS nnip,
         n.Nw_ID AS nid,
         n.Nw_Kund_ID AS n_nid
        FROM Kunden k INNER JOIN Netzwerk n
        ON n.Nw_kund_ID = [Name der gelichlautenden ID in der Kundentabelle]
        WHERE n.Nw_Kund_ID = '{$kundenid}'

        Bei Stringverknüpfen bitte die korrekte Syntax beachten
        Auf das ON-Statement kommt es an, sonst nimm er jeweils immer einmaldie Daten aus der einen Tabelle und dann nochmals aus der anderen, da er nicht weiss wie eer zusammenfassen soll.

        ciao
        romy

        1. hi romy, ja cool jetzt holt er alles so raus wie ichs will, jedoch wenn ich das jetzt auswähle die IP zeigt er mir noch was falsch an, bzw. er selected falsch:
          <tr>
          <td>Netzwerk:</td>
          <td>
          <select name="netzwerknr" onchange="document.forms[0].submit();">
          <option value="0">Auswahl</option>
           <option value="1" selected>192.17.23.253</option>
           <option value="1" selected>212.121.1212</option>
          </select>
          </td>
          </tr>

          Da mal die Kundentabelle:
          CREATE TABLE Kunden (
             Kund_ID int(10) NOT NULL auto_increment,
             Kund_Name varchar(200) NOT NULL,
             Kund_Strasse varchar(200) NOT NULL,
             Kund_Nr varchar(10) NOT NULL,
             Kund_PLZ varchar(10) NOT NULL,
             Kund_Ort varchar(200) NOT NULL,
             Kund_Land varchar(200) NOT NULL,
             Kund_Webseite varchar(200) NOT NULL,
             Kund_Knr int(10) DEFAULT '0' NOT NULL,
             PRIMARY KEY (Kund_ID),
             UNIQUE Kund_ID (Kund_ID)
          );

          und die Netzwerktabelle:
          CREATE TABLE Netzwerk (
             Nw_ID int(10) NOT NULL auto_increment,
             Nw_IP varchar(100) NOT NULL,
             Nw_DNS varchar(100) NOT NULL,
             Nw_Kund_ID int(10) DEFAULT '0' NOT NULL,
             Nw_Gateway varchar(100) NOT NULL,
             Nw_Subnet varchar(100) NOT NULL,
             Nw_Bemerkung text NOT NULL,
             Nw_SMTP varchar(100) NOT NULL,
             Nw_POP3 varchar(100) NOT NULL,
             Nw_Fernwartung text NOT NULL,
             PRIMARY KEY (Nw_ID),
             UNIQUE Nw_ID (Nw_ID)
          );
          habe deinen Rat angenommen und beim Netzwerk folgende Select geschrieben:

          $result4 = mysql_query("
          SELECT k.Kund_ID AS kid,
          n.Nw_IP AS nnip,
          n.Nw_ID AS nid,
          n.Nw_Kund_ID AS n_nid
          FROM Kunden k INNER JOIN Netzwerk n
          ON n.Nw_kund_ID = k.Kund_ID
          WHERE n.Nw_Kund_ID = '{$kundenid}'
          ") or die(mysql_error());

          while ($row2 = mysql_fetch_row ($result4))
          {
          if ($netzwerknr == $row2['0'])
          {
           ?>
           <option value="<?echo $row2['0']?>" selected><? echo $row2['1']?></option>
           <?
          }
          else
          {
           ?>
           <option value="<?echo $row2['0']?>"><? echo $row2['1']?></option>
           <?
          }
          }

          Grüße cg

          --
          Ich bin ein spezialisz!
          (Zitat von VENGA JO)
          sh:) fo:) rl:° br:& ie:| mo:) va:) fl:) ss:| ls:< js:|
          Die Erklärung zum Selfcode findest du hier: http://emmanuel.dammerer.at/selfcode.html
          Einen Decoder für den Selfcode findest du hier: http://peter.in-berlin.de/projekte/selfcode
          1. Hi cg

            ja cool jetzt holt er alles so raus wie ichs will, jedoch wenn ich das jetzt auswähle die IP zeigt er mir noch was falsch an, bzw. er selected falsch:

            inwiefern falsch, sorry, habe deinen Satz nicht verstanden

            davon abgesehen wundert es mich, dass DU row[0] so schreibst row['0'], Deine Zellen heissen doch nicht 0, sonder DU willst die Zelle 0.
            Bsp.
            Deine erste Spalte heisst IP und ist somit row['IP'] oder row[0]

            ciao
            romy

            1. Hi romy,

              keine Ahnung wie ich es am besten beschreiben soll :/
              Er holt mir ja die Daten raus und schreibt Sie mir in mein Auswahlfeld, und wenn ich jetzt da noch die IP auswähle soll er mir die die ausgewählte IP beibehalten also "selected" in der HTML Sprache gesagt. Aber er "selected" mir beide...

              vielleicht findest du ja nen Fehler :/

              http://nopaste.php-q.net/22507

              Grüße

              cg

              --
              Ich bin ein spezialisz!
              (Zitat von VENGA JO)
              sh:) fo:) rl:° br:& ie:| mo:) va:) fl:) ss:| ls:< js:|
              Die Erklärung zum Selfcode findest du hier: http://emmanuel.dammerer.at/selfcode.html
              Einen Decoder für den Selfcode findest du hier: http://peter.in-berlin.de/projekte/selfcode
              1. Hi

                jetzt da noch die IP auswähle soll er mir die die ausgewählte IP beibehalten also "selected" in der HTML Sprache gesagt. Aber er "selected" mir beide...

                <quote>
                while ($row2 = mysql_fetch_row ($result4))
                {
                if ($netzwerknr == $row2['0'])
                {
                 ?>
                 <option value="<?echo $row2['0']?>" selected><? echo $row2['1']?></option>
                 <?
                }
                else
                {
                 ?>
                 <option value="<?echo $row2['0']?>"><? echo $row2['1']?></option>
                 <?
                }
                }
                </quote>

                jetzt habe ich es verstanden.
                Es ist auch logisch, dass er beide "selectiert", da Dein row[0], was die ID ist, jedes mal auf 1 steht beim Vergleich.
                Das Problem liegt also in Deiner Datenbank, Du hast doppelte IDs.
                Jetzt stellt sich die Frage, wie die dort hinkommen obwohl Du auto_increment hast (aber übrigens kein 'unique').
                Überprüfe nochmals Deine Einträge und ändere Gegebenfalls die ID's, die müssen eindeutig sein.

                http://nopaste.php-q.net/22507

                hier kommt nur ne Error-Seite

                ciao
                romy