Webmaster Forum Logo Part 1 Webmaster Forum Logo Part 2
Webmaster Forum Logo Part 3
     
 
  :: Anmeldung

Benutzername:

Registrierung...

Passwort:

Passwort vergessen?

angemeldet bleiben


  
  :: Umfrage
Welche sozialen Netzwerke benutzt du regelmäßig?

 Facebook
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 73%
 keines
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 22%
 Google+
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 19%
 Twitter
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 11%
 Xing
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 schülerVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 5%
 meinVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 studiVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 MySpace
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%
 LinkedIn
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%

 ges. 392 Stimmen
 
  :: Buttons

Valid XHTML 1.0 Transitional

Dabei seit: 08.12.2002

Beiträge: 1 220

 

1 Zum Seitenanfang

Mittwoch, 3. November 2004, 09:42

mySQL und eine AND Bedingung

Also ich habe eine mySQL abfrage:

PHP-Quelltext

1
2
3
4
5
6
7
8
9
$ipt ="172.16.16.5";
$bqt ="BQ2257K03015";
$abfrage "SELECT ip, bq FROM `hosts` where ip=$ipt AND  bq=$bqt";
$ergebnis mysql_query($abfrage);
while($row mysql_fetch_object($ergebnis))
{
    $iph[] = $row->ip;
    $bqh[] = $row->bq;
}


Und der gibt mir immer folgende Fehlermeldung:

Zitat


Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /pfad/zu/der/datei.php on line 33


Wo ist da der Fehler langsam weiß ich nicht mehr weiter oder hab ich das ganz falsch aufgebaut???

Greetz

MaxTPayne

Edit: Ohne die WHERE Bedingung funktioniert es.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »maxtpayne« (3. November 2004, 09:43)

 

Crush

Kaiser

Dabei seit: 22.09.2002

Beiträge: 1 095

 

2 Zum Seitenanfang

Mittwoch, 3. November 2004, 09:55

hi,
versuchs mal so:

PHP-Quelltext

1
$abfrage "SELECT ip, bq FROM hosts where ip='".$ipt."' AND  bq='".$bqt."'";



ansonsten, ist da auch wirklich ein eintrag drin, der diese beiden werten beinhaltet? :)

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Crush« (3. November 2004, 09:56)

 

Dabei seit: 08.12.2002

Beiträge: 1 220

 

3 Zum Seitenanfang

Mittwoch, 3. November 2004, 09:56

ja hab das auch schon nachgekuckt und über phpmyadmin sql befehl gemacht. Das hat funktioniert nur halt mit php nicht :(

Ich teste das mal ebend.

Greetz

MaxTPayne

Edit: Fehler ist schonmal weg thx :)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »maxtpayne« (3. November 2004, 09:57)

 

Shurakai

Foren Gott

Dabei seit: 05.02.2003

Beiträge: 2 181

 

4 Zum Seitenanfang

Mittwoch, 3. November 2004, 10:02

wenn was nicht funktioniert bei SQL-Abfragen, bitte immer echo mysql_error(); benutzen und das was da ausgegeben wird direkt hier mitposten. danke.
 

Alfons_G

Routinier

Dabei seit: 26.04.2003

Beiträge: 486

 

5 Zum Seitenanfang

Mittwoch, 3. November 2004, 11:01

Zusätzlich kann man auch die fertig zusammengebaute SQL-Abfrage per echo ausgeben und nach phpMyAdmin kopieren und dann schauen, was rauskommt.

Alfons
 

Dabei seit: 29.02.2004

Beiträge: 544

 

6 Zum Seitenanfang

Mittwoch, 3. November 2004, 11:09

benutz doch einfach mal phpMyAdmin und schau, wie der das AND aufbaut ;)
“Mögen eure Klingen scharf bleiben!”

Keinesfalls hier klicken!
 

NiBurhe

Kaiser

Dabei seit: 07.04.2003

Beiträge: 1 292

 

7 Zum Seitenanfang

Mittwoch, 3. November 2004, 14:03

Also ich würde einfach mal vermuten er hat keine Einträge gefunden!

mach mal unter $ergebnis = ...

PHP-Quelltext

1
echo "Anzahl der Datensätze: ".mysql_num_rows($ergebnis);

wenn er dir da null ausgibt hat er keine Datensätze für diese Bedingung gefunden und es ist kein Wunder, das er den Fehler ausgibt.

MfG
NiBurhe
 

Dabei seit: 08.12.2002

Beiträge: 1 220

 

8 Zum Seitenanfang

Mittwoch, 3. November 2004, 14:22

Also der Fehler ist weg. Nun leider findet er nichts obwohl mindestens ein Datensatz übereinstimmt von den ca 1000 Stück. Denn das ist mein eigener und den hab ich per phpMyAdmin überprüft und ist auch alles gleich wodran liegt das?
Ich poste mal den ganzen Quelltext:

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<html>
<head>
<title>Hier kommt noch ein Titel hin</title>
</head>
<body>
<?php
    $host ="localhost";
    $benutzername ="root";
    $pw ="aasEda211 ;)";
    $namedb ="atv";
    // Connecting zur Datenbank
    mysql_connect($host,$benutzername,$pw) or die ("Die Daten stimmen nicht");
    // Daten hohlen
    mysql_select_db($namedb) or die ("Die Datenbank existiert nicht");
    
    $abfrage "SELECT bqn, ipn, namen FROM `netzmdb`";
    $ergebnis mysql_query($abfrage);
    while($row mysql_fetch_object($ergebnis)) 
    {
        $bqn[] = $row->bqn;
        $ipn[] = $row->ipn;
        $namen[] = $row->namen;
    }
    echo'<table width="600">';
     echo"<tr>";
      echo"<td>netzmdb</td>";
      echo"<td>hosts</td>";
     echo"</tr>";
    
    $maxi count($bqn)-1;
    for($i=0$i<=$maxi$i++)
    {
        $abfrage "SELECT iph, bqh FROM  `hosts` WHERE iph='".$ipn[$i]."'  AND  bqh='".$bqn[$i]."'";
        $ergebnis mysql_query($abfrage);
        echo "Anzahl der Datensätze: ".mysql_num_rows($ergebnis); 
        while($row mysql_fetch_object($ergebnis))
        {
            $iph[] = $row->iph;
            $bqh[] = $row->bqh;
        }
        $maxe count($iph)-1;
        for($e=0$e<=$maxe$e++)
        {
            echo"<tr>";
             echo"<td>$bqn[$i] | $ipn[$i]</td>";
             echo"<td>$e $iph[$e] |  $bqh[$e]</td>";
            echo"<tr>";
        }
    }
     echo"</tr>";
    echo"</table>";
?>
</body>
</html>


Ich hab das Script ein wenig schon umgeschrieben nunja nur leider funktioniert das immernoch nicht so wie ich das haben will :(.

Wer eine bessere Idee hat wie ich das lösen kann gerne her :). Vieleicht als Hintergrundinformation:

Ich habe zwei Tabellen:
*netzmdb
*hosts

in der netzmdb sind folgende Spalten:
* bqn
* ipn
* namen
in der hosts sind folgende Spalten:
*iph
*bqh

Nun möchte ich beide Tabellen miteinander vergleichen und dann in einer Zeile immer ausgeben. Sprich ich nimm den ersten Eintrag von der netzmdb und kucke ob es so einen oder mehrere in der hosts gibt. Wenn übereinstimmungen gefunden sind sollen die dann in einer anderen Spalte ausgebeben werden. in etwa so:

netzmdb hosts
erster eiintrag | dazu passende(r) bqh und iph eintrag/einträge

und das halt mit allen Datensätzen.

Besten dank das ihr mir schon etwas weitergehohlfen habt :)

Greetz

MaxTPayne

Edit:

wenn ich bei $maxe = count ... die minus 1 wegmach bekomm ich schonmal die die netzmdb einträge angezeigt.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »maxtpayne« (3. November 2004, 14:30)

 

Shurakai

Foren Gott

Dabei seit: 05.02.2003

Beiträge: 2 181

 

9 Zum Seitenanfang

Mittwoch, 3. November 2004, 14:43

Zitat

Original von Shurakai
wenn was nicht funktioniert bei SQL-Abfragen, bitte immer echo mysql_error(); benutzen und das was da ausgegeben wird direkt hier mitposten. danke.


Sehe ich immernoch nicht bei dir.

Ansonsten nach ganz oben im Script schreiben:

error_reporting(E_ALL);
 

NiBurhe

Kaiser

Dabei seit: 07.04.2003

Beiträge: 1 292

 

10 Zum Seitenanfang

Mittwoch, 3. November 2004, 14:43

PHP-Quelltext

1
2
3
4
5
6
while($row mysql_fetch_object($ergebnis)) 
    {
        $bqn[] = $row->bqn;
        $ipn[] = $row->ipn;
        $namen[] = $row->namen;
    }

Du willst ja damit beabsichtigen, das er dir aus alles Daten einen array macht, aber so wie ich das sehe setzt er doch jedesmal wenn er die schleife durchläuft $bgn[]auf $row->bqn und fügt nichts hinzu, d.h. du hast am ende nur den letzten Datensatz in dem array, glaube ich zumindest ;). Probier das mal so

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
while($row mysql_fetch_object($ergebnis)) 
    {

         if($bqn != "")
         {
             $bqn .= ",";
          }

         if($ipn != "")
         {
             $ipn .= ",";
          }

         if($namen != "")
         {
             $namen .= ",";
          }

        $bqn .= $row->bqn;
        $ipn .= $row->ipn;
        $namen .= $row->namen;
    }

   $bqn explode("," $bqn);
   $ipn explode(","$ipn);
   $name explode(",",$name);

So hast du am ende alle Werte in den Array, auch wenn es nicht schön ist.

Oder probier mal mysql_fetch_array

MfG
NiBurhe
 

Dabei seit: 08.12.2002

Beiträge: 1 220

 

11 Zum Seitenanfang

Mittwoch, 3. November 2004, 15:53

@NiBurhe das mach ich immer so und funktioniert bis jetzt eigentlich auch immer :). Denn beim ersten select werden auch alle Daten geladen in dem Array nur irgendwie zickt der bei zweiten rum mit der bedingung :(

@shura gaaaaaaaanz viele nullen gibt er mir aus hat das was zu bedeuten?

Greetz

MaxTPayne

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »maxtpayne« (4. November 2004, 07:37)

 

Dabei seit: 08.12.2002

Beiträge: 1 220

 

12 Zum Seitenanfang

Donnerstag, 4. November 2004, 08:32

so wenn ich jetzt error_reporting mach kommt diese Fehlermeldung:

Notice: Undefined variable: iph in /opt/lampp/htdocs/atv/vergleichen.php on line 51

So sieht mein Script jetzt aus:

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<html>
<head>
<title>Hier kommt noch ein Titel hin</title>
</head>
<body>
<?php
    error_reporting(E_ALL); 
    $host ="localhost";
    $benutzername ="root";
    $pw ="aasEda211 ;)";
    $namedb ="atv";
    // Connecting zur Datenbank
    mysql_connect($host,$benutzername,$pw) or die ("Die Daten stimmen nicht");
    // Daten hohlen
    mysql_select_db($namedb) or die ("Die Datenbank existiert nicht");
    
    $abfrage "SELECT bqn, ipn, namen FROM `netzmdb`";
    $ergebnis mysql_query($abfrage);
    echo mysql_errno();
    echo "<br><br>";
    echo mysql_error();
    while($row mysql_fetch_object($ergebnis))
    {
        $bqn[] = $row->bqn;
        $ipn[] = $row->ipn;
        $namen[] = $row->namen;
    }
    echo'<table width="600">';
     echo"<tr>";
      echo'<td width="300">netzmdb</td>';
      echo'<td width="300">hosts</td>';
     echo"</tr>";
    
    $maxi count($bqn)-1;
    for($i=0$i<=$maxi$i++)
    {
        $abfrage "SELECT iph, bqh FROM  `hosts` WHERE iph='".$ipn[$i]."'  AND  bqh='".$bqn[$i]."'";
        $ergebnis mysql_query($abfrage);
        echo"<br><br>";
        echo mysql_errno();
        echo "<br><br>";
        echo mysql_error();
        while($row mysql_fetch_object($ergebnis))
        {
            $iph[] = $row->iph;
            $bqh[] = $row->bqh;
        }
        echo mysql_error();
        $maxe count($iph)-1;
        for($e=0$e<=$maxe$e++)
        {
            echo"<tr>";
             echo"<td>$bqn[$i] | $ipn[$i]</td>";
             echo"<td>$e $iph[$e] |  $bqh[$e]</td>";
            echo"<tr>";
        }
    }
     echo"</tr>";
    echo"</table>";
?>
</body>
</html>
 

heinervdm

Technik-Admin

Dabei seit: 02.10.2002

Beiträge: 3 772

 

13 Zum Seitenanfang

Donnerstag, 4. November 2004, 11:09

Dann hat er keinen Datensatz gefunden...
denn das Array iph exisiert noch nicht...
Über mich: www.heinervdm.de
Persönlich Mitteilungen an mich bitte als PN (nicht Email) hier im Forum. ICQ und Skype bitte nur in Notfällen.
 

Dabei seit: 08.12.2002

Beiträge: 1 220

 

14 Zum Seitenanfang

Donnerstag, 4. November 2004, 11:20

ich hab jetzt, glaube ich, den Fehler gefunden :)

Ich importiere die beiden Tabellen ja aus jeweils einer *.csv Datei. und die ist so aufgebaut:
feld;feld;feld

Nun die importfunktion die ich geschrieben hat funktioniert zu 100% wenn man feld;feld;feld; macht. Vieleicht liegt es dann daran das beim einfügen soviele Leerzeichen noch dazueingefügt werden bis die maximale Zeichenanzahl pro Feld erreicht ist.

Denn wenn ich fünf Testdatensätze einfüge funktioniert das auch einwandfrei. Die Datensätze sind alle durcheinander etc und nicht alle gleich und er macht genau das was er machen soll :). Ich denke da ich bei der netzmdk csv ja noch namen hab das da dann die restlichen Leerzeichen reingenommen werden und da die hosts nur aus iph und bqh hat dann halt die bqh die unnötigen Leerzeichen.

Greetz

MaxTPayne

Lösung:

Also das Problem war wirklich die csv Datei :/. Die hatte am ende kein ; und das Importscript hat dann soviele Zeichen import bis die maximale Zeichen zahl erreicht war. Deswegen konnte auch nie eine übereinstimmung gefunden werden :))))

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »maxtpayne« (4. November 2004, 11:58)