Haumis wbb hilfe 
Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite
Galerie Datenbank Zum Portal

Startseite| Das Board| wbb2| wbblite| Wo finde ich was| Veränderungen| Grafik-Bereich-WBB2| Boardspiele| Vorstellungen| Allgemeines| Trainingscenter|
Haumis wbb hilfe » ...:::Trainingscenter-wbb2:::... » php » DB-Abfrage mit mehr als einem Ergebnis mit VerbundDB » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen DB-Abfrage mit mehr als einem Ergebnis mit VerbundDB
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Hangasilly Hangasilly ist männlich

[meine Galerie]


Dabei seit: 29.06.2012
Beiträge: 188
Herkunft: NRW
Postid: 17041
DB-Abfrage mit mehr als einem Ergebnis mit VerbundDB Beitrag Nr.: 1     Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hey, ich hab da mal ncohmal ne kleine Problematik, die es zu lösen gilt.... - vllt habt ihr ja ne Idee?!? :)

Es geht um ein Script, das auf 2 DB-Tables zugreifen soll. In einer Tabelle steht der Deutsche Name, der gesucht wird, hier hole ich mir dann den Namen (den Suchbegriff + Platzhalter) und die ID raus.
Nur greif ich die ID auf, und suche damit in meiner 2. Tabelle nach der Disply-ID, welche ich dann auch auslese.

Mein Code sieht so aus:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
$item_tbl_search = "SELECT * FROM  item_template_locale WHERE Name LIKE '"."%".$itembezeich."%"."' "; 

$item_tbl_search_out = mysql_query($item_tbl_search);
while ($ds = mysql_fetch_object($item_tbl_search_out)) {
		$id = $ds->ID;
		$itemname = $ds->Name;
		
	eval ("\$itemsearchout .= "".$tpl->get("itemsearch_out")."";"); 
	}

//ItemID-Suche in ID-Tabelle
$item_tbl_id_search = "SELECT * FROM  item_template WHERE entry LIKE '".$id."' "; 

$item_tbl_id_search_out = mysql_query($item_tbl_id_search);
while ($ds = mysql_fetch_object($item_tbl_id_search_out)) {
		$disply_id = $ds->displayid;
		
		eval ("\$itemsearchout .= "".$tpl->get("itemsearch_out")."";"); 
	}



Hier holt er mir nun alle zu dem Suchbegriff passenden Namen aus der ersten Tabelle und listet diese auf - was ja auch so gewollt ist, leider übergibt er aber nur die letzte ID, die er findet und darum zeigt er mir später in miner Tabelle in der 'Namen'-Spalte zwar alle Sachen an, in der 'ID'-Spalte wird aber nur die letzte Zeile gefüllt. Das ist natürlich blöd.

Wie krieg ich die IDs aus der ersten Tabelle also in ein Array verpackt, und dieses dann aus der 2. Tabelle komplett ausgelesen, sodass ich für jeden Eintrag "$itemname" in meiner Ausgabetabelle auch die dazu passende dispalyID aus der 2. Tabelle bekomme (oder geht das überhaupt mim Array?!?)

__________________

13.06.2019 20:39 Hangasilly ist offline E-Mail an Hangasilly senden Homepage von Hangasilly Beiträge von Hangasilly suchenNehmen Sie Hangasilly in Ihre Freundesliste auf
haumi haumi ist männlich
Boardbetreiber

images/avatars/avatar-214.jpg
[meine Galerie]


Dabei seit: 06.06.2009
Beiträge: 3.315
Herkunft: NRW
Postid: 17042
Beitrag Nr.: 2     Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich kann das jetzt nicht nachvollziehen.

Versuche aber mal bei
$disply_id = $ds->displayid;
einen Punkt vor das Gleichheitszeichen zu setzen.
das soll denn so aussehen:
$disply_id .= $ds->displayid;

Ansonsten muss ich mir das mal im Testboard aufbauen.

LG
haumi

__________________
Gelassen das hinnehmen, was nicht zu ändern ist,
engagiert angehen was man gestalten kann.

14.06.2019 15:56 haumi ist offline E-Mail an haumi senden Homepage von haumi Beiträge von haumi suchenNehmen Sie haumi in Ihre Freundesliste auf
Hangasilly Hangasilly ist männlich

[meine Galerie]


Dabei seit: 29.06.2012
Beiträge: 188
Herkunft: NRW
Postid: 17043
Themenstarter Thema begonnen von Hangasilly
Beitrag Nr.: 3     Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hey,

so ich bin mal dazu gekommen das auszuprobieren, klappt aber leider nicht...

zum nachvollziehen hier mal das komplette script:
die PHP:
code:
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:
<?php

$filename="item_search.php";
require("global.php");
require("acp/lib/class_parse.php");



//IF Suche
if(isset($_POST['action']) == "itemsearch"){
$itembezeich = $_POST[Itemname];

$itemsuche=1;

//Itemsuche in Tabelle
$item_tbl_search = "SELECT * FROM  item_template_locale WHERE Name LIKE '"."%".$itembezeich."%"."' "; 

$item_tbl_search_out = mysql_query($item_tbl_search);
while ($ds = mysql_fetch_object($item_tbl_search_out)) {
		$id = $ds->ID;
		$itemnameDE = $ds->Name;
		
//		eval ("\$itemsearchout .= "".$tpl->get("itemsearch_out")."";"); 
	}

//ItemID-Suche in ID-Tabelle
$item_tbl_id_search = "SELECT * FROM  item_template WHERE entry LIKE '".$id."' "; 

$item_tbl_id_search_out = mysql_query($item_tbl_id_search);
while ($ds = mysql_fetch_object($item_tbl_id_search_out)) {
		$disply_id.=$ds->displayid;
		$itemname = $itemnameDE;
		eval ("\$itemsearchout .= "".$tpl->get("itemsearch_out")."";"); 
	}


}else{
$itemsuche=0;
$itembezeich = "suchst du nix";
}



if($fehler !="") {
	echo "<SCRIPT>
	alert('$fehler');
	</SCRIPT>";
}

eval("\$tpl->output("".$tpl->get("itemsearch")."");");

?>




die 1. tpl >> itemserach<<:
code:
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:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
<?xml version="1.0" encoding="{$lang->items['LANG_GLOBAL_ENCODING']}"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="{$lang->items['LANG_GLOBAL_DIRECTION']}" lang="{$lang->items['LANG_GLOBAL_LANGCODE']}" xml:lang="{$lang->items['LANG_GLOBAL_LANGCODE']}">
<head>
<title>$master_board_name | {$lang->items['LANG_FAQ_FAQ']}</title>
$headinclude
</head>

<body>
$header
<table cellpadding="{$style['tableincellpadding']}" cellspacing="{$style['tableincellspacing']}" border="{$style['tableinborder']}" style="width:{$style['tableinwidth']}" class="tableinborder">
<tr>
<td class="tablea"><table cellpadding="0" cellspacing="0" border="0" style="width:100%">
<tr class="tablea_fc">
<td align="left"><span class="smallfont"><b><a href="index.php{$SID_ARG_1ST}">$master_board_name</a> &raquo;
Corelith Item-Suche&nbsp;&nbsp;&nbsp; </b></span></td>
<td align="right"><span class="smallfont"><b>$usercbar</b></span></td>
</tr>
</table></td>
</tr>
</table><br />
<table cellpadding="{$style['tableincellpadding']}" cellspacing="{$style['tableincellspacing']}" border="{$style['tableinborder']}" style="width:{$style['tableinwidth']}" class="tableinborder">

<td align="center" class="tablecat" colspan="1"><span class="normalfont"><font color="00b3fe" size=4><u>Corelith Item-ID-Suche</u><font></span></td>


<tr align="left">
<td class="tableb" style="width:100%"><span class="normalfont">
<center>
<br>
<br>
Hier könnt ihr den Namen eines Items des Corelith-Servers angeben, um die ID des betreffenden Items herauszufinden.<br>
<br>
<form accept-charset="UTF-8" method="POST" action="item_search.php">
<input type="hidden" name="action" value="itemsearch">

<table border=1 bordercolordark=#00b3fe bordercolorlight=#ffffff width="40%">
  <tr>
    <th width="15%"><font size="2">Item-Name:</font></th>
<td width="25%" align="center"><input type="text" placeholder="Item" name="Itemname" size="25"></td>
  </tr>
</table>
<br>
<input type="submit" value="Suchen" name="itemsearch">
<br><br>
</form>
$itemsuche<br>
test<br>
$itembezeich<br><br>

<if($itemsuche=="1")><then>
<center>Deine Suche ergabe folgende Funde:</center><br /><br />
<table border=1 bordercolordark=#00b3fe bordercolorlight=#ffffff width="40%">
<tr>
<colgroup width="300" height="60" span="">
<!-- <th><b><font size="3">Listennummer</font></b></th> -->
<th><b><font size="3">Item</font></b></th>
<th><b><font size="3">ID</font></b></th>
</colgroup>
</tr>
$itemsearchout
</table>
<br />

</then></if><br /><br />

</center>
</span></td>
</tr>
</table>
$footer
</body>
</html>



und die 2. TPL >>itemserach_out<<:
code:
1:
2:
3:
4:
5:
 <tr>
<!--    <td width="18%" align="center">$id</td>  -->
    <td width="18%" align="center">$itemname</td>
    <td width="17%" align="center">$disply_id</td>
  </tr>



__________________

19.06.2019 01:41 Hangasilly ist offline E-Mail an Hangasilly senden Homepage von Hangasilly Beiträge von Hangasilly suchenNehmen Sie Hangasilly in Ihre Freundesliste auf
haumi haumi ist männlich
Boardbetreiber

images/avatars/avatar-214.jpg
[meine Galerie]


Dabei seit: 06.06.2009
Beiträge: 3.315
Herkunft: NRW
Postid: 17045
Beitrag Nr.: 4     Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Versuche mal

code:
1:
2:
3:
4:
5:
6:
$item_tbl_search = "SELECT * FROM  item_template_locale WHERE Name LIKE '"."%".$itembezeich."%"."' ";

$item_tbl_search_out = mysql_query($item_tbl_search);
while ($ds = mysql_fetch_object($item_tbl_search_out)) {
        $id = $ds->ID;
        $itemname = $ds->Name;


durch
code:
1:
2:
3:
4:
5:
6:
7:
8:
$stmt = $dbi->prepare("SELECT ID, Name FROM  item_template_locale WHERE Name LIKE '"."%".$itembezeich."%"."'");
            $stmt->execute();
            $stmt->bind_result($ID, $Name );

                    while($stmt->fetch()) {

                     $id = $ID;
                    $itemname = $Name;


zu ersetzen.
wird dann denn immer noch nur das letze Ergebnis angezeigt,
dann ersetze mal
code:
1:
2:
$id = $ID;                    
$itemname = $Name;


durch
code:
1:
2:
$id .= $ID
$itemname .= $Name;



ersetze in der global.php
die Zeile:
code:
1:
$db = new db($sqlhost, $sqluser, $sqlpassword, $sqldb, $phpversion);


durch:
code:
1:
2:
$dbi=mysqli_connect("$sqlhost",$sqluser,$sqlpassword,$sqldb);    // prozedualer Zugriff
$db = new db($sqlhost, $sqluser, $sqlpassword, $sqldb, $phpversion);  // objektorientierter Zugriff



LG
haumi

__________________
Gelassen das hinnehmen, was nicht zu ändern ist,
engagiert angehen was man gestalten kann.

24.06.2019 16:12 haumi ist offline E-Mail an haumi senden Homepage von haumi Beiträge von haumi suchenNehmen Sie haumi in Ihre Freundesliste auf
Hangasilly Hangasilly ist männlich

[meine Galerie]


Dabei seit: 29.06.2012
Beiträge: 188
Herkunft: NRW
Postid: 17046
Themenstarter Thema begonnen von Hangasilly
Beitrag Nr.: 5     Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hey,
erstmal Danke für die Mühe! Allerdings:

mit dem "Punkt" :
code:
1:
2:
$id .= $ID;
$itemname .= $Name;



zeigt er mir garnix mehr an nach der Suche als Ergebnis.
Ohne die Änderung mit dem "Punkt" zeigt er keine Itemnamen mehr an und NURNOCH die letzte ID, die er findet...

Klappt also leider noch nicht so ganz nun^^

__________________

26.06.2019 09:11 Hangasilly ist offline E-Mail an Hangasilly senden Homepage von Hangasilly Beiträge von Hangasilly suchenNehmen Sie Hangasilly in Ihre Freundesliste auf
haumi haumi ist männlich
Boardbetreiber

images/avatars/avatar-214.jpg
[meine Galerie]


Dabei seit: 06.06.2009
Beiträge: 3.315
Herkunft: NRW
Postid: 17047
Beitrag Nr.: 6     Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich habe jetzt mal folgenden Code genommen!
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
<?php

require('./global.php');
 $neu = array();
 $stmt = $dbi->prepare("SELECT id_fragen , desc_frage FROM bb1_burg_fragen ORDER BY id_fragen ASC ");
$stmt->execute();
$stmt->bind_result($id_fragen , $desc_frage );
                    while($stmt->fetch()) {
echo $id_fragen;
echo $desc_frage;
echo "<br>";
}
?>


und habe folgendes Ergebnis bekommen (es ist nur ein Ausschnitt!)


Vielleicht hilft dir das weiter?

LG
haumi

__________________
Gelassen das hinnehmen, was nicht zu ändern ist,
engagiert angehen was man gestalten kann.

26.06.2019 15:39 haumi ist offline E-Mail an haumi senden Homepage von haumi Beiträge von haumi suchenNehmen Sie haumi in Ihre Freundesliste auf
Hangasilly Hangasilly ist männlich

[meine Galerie]


Dabei seit: 29.06.2012
Beiträge: 188
Herkunft: NRW
Postid: 17048
Themenstarter Thema begonnen von Hangasilly
Beitrag Nr.: 7     Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hmmmmm..

Du holst die Daten da alle aus 1 DB, das geht ja ohne Weiteres... Mein Problem is die Verbindug:

Alles was nach dem Suchbegriff klingt aus der einen DB, davon je die ID, und dann jede ID aus der zweiten DB die passenden Daten. Als Ausgabe jeder Name, der dem Suchbegriff ähnelt aus DB1 mit den dazu passenden Daten aus DB2...
Und da wird eben nicht jede ID (die eben das Verbindungsglied in beiden DBs ist) genommen, sondern nur die letzte und damit dann aus DB2 die Daten (displayID) rausgenommen und ausgegeben....

__________________

29.06.2019 21:23 Hangasilly ist offline E-Mail an Hangasilly senden Homepage von Hangasilly Beiträge von Hangasilly suchenNehmen Sie Hangasilly in Ihre Freundesliste auf
haumi haumi ist männlich
Boardbetreiber

images/avatars/avatar-214.jpg
[meine Galerie]


Dabei seit: 06.06.2009
Beiträge: 3.315
Herkunft: NRW
Postid: 17049
Beitrag Nr.: 8     Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich denke mal das du eine Art Join-Verbindung aufbauen möchtest.

Da habe ich im Internet folgendes gefunden:

Kann man mit JOIN auch 2 Tabellen aus 2 verschiedenen MYSQL-Datenbanken verknüpfen ?

Ja, man kann, wenn der angemeldete User Rechte auf beiden Datenbanken besitzt und diese auf einem MySQL-Server liegen

Zugriff:
datenbankname.tabellenname
im ON-Teil: datenbankname.tabellenname.feldname

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
<?php
    mysql_connect("server" , "user" , "pass") or die(mysql_error());
    $res = mysql_query("select *
                        from db1.tab1
                        join db2.tab2
                          on db1.tab1.pk=db2.tab2.fk") or die(mysql_error());
    while ($row=mysql_fetch_assoc($res)) {
        print_r($row);
    }
?>



pk und fk steht für die Tabellenverknüpfung
pk = primary key
fk = foreign key

https://www.tutorials.de/threads/join-ueber-zwei-datenbanken.237973/

Ist es das was du suchst?

LG
haumi

__________________
Gelassen das hinnehmen, was nicht zu ändern ist,
engagiert angehen was man gestalten kann.

30.06.2019 14:02 haumi ist offline E-Mail an haumi senden Homepage von haumi Beiträge von haumi suchenNehmen Sie haumi in Ihre Freundesliste auf
Hangasilly Hangasilly ist männlich

[meine Galerie]


Dabei seit: 29.06.2012
Beiträge: 188
Herkunft: NRW
Postid: 17050
Themenstarter Thema begonnen von Hangasilly
Beitrag Nr.: 9     Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hey, ja, das mit dem JOIN sieht ganz interessant aus...

Ich werd das bei nächster Gelegenheit mal versuchen und Rückmeldung geben....

__________________

30.06.2019 23:31 Hangasilly ist offline E-Mail an Hangasilly senden Homepage von Hangasilly Beiträge von Hangasilly suchenNehmen Sie Hangasilly in Ihre Freundesliste auf
Hangasilly Hangasilly ist männlich

[meine Galerie]


Dabei seit: 29.06.2012
Beiträge: 188
Herkunft: NRW
Postid: 17054
Themenstarter Thema begonnen von Hangasilly
Beitrag Nr.: 10     Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

So... das Join funktioniert !!!
Habs nun wie folgt gelöst:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
$item_tbl_search = "SELECT item_template_locale.name AS name, item_template.displayid AS displayid
					FROM item_template_locale 
                                        JOIN item_template 
					ON item_template_locale.ID = item_template.entry 
					WHERE item_template_locale.name LIKE '"."%".$itembezeich."%"."' ";

$item_tbl_search_out = mysql_query($item_tbl_search);
while ($ds = mysql_fetch_object($item_tbl_search_out)) {
		$disply_id = $ds->displayid;
		$itemname = $ds->name;
		
			eval ("\$itemsearchout .= "".$tpl->get("itemsearch_out")."";"); 
}



^^besten Dank für die ganze Unterstützung Haumi

__________________

02.07.2019 20:22 Hangasilly ist offline E-Mail an Hangasilly senden Homepage von Hangasilly Beiträge von Hangasilly suchenNehmen Sie Hangasilly in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Haumis wbb hilfe » ...:::Trainingscenter-wbb2:::... » php » DB-Abfrage mit mehr als einem Ergebnis mit VerbundDB

Views heute: 407 | Views gestern: 18.969 | Views gesamt: 40.398.518
Powered by Burning Board 2.3.6 © 2001-2004 WoltLab GmbH
Am Netz seit dem 3.6.2009 - Powered by © haumis-Team
Style & Buttons © by FriendsbistroTeam
Boardregeln Impressum & Haftungsauschluss Datenschutzerklärung