ljungi
25.11.2005, 17:45
Hallo,
ich hab mal eine Frage, die nix mit dem vB zu tun hat, aber was mit PHP ^^
Erst mal Sorry für den langen Text... Hoffe ihr plant das, wenn nicht bitte nachfragen, mir ist die Sache sehr wichtig!
Folgende Struktur der Datenbank:
Tabelle Fertig
--------------------------------
| id | fertig_seit | fertig_id |
|----|-------------|-----------|
| 1 -| timestamp --|--- 1 -----|
| 2 -| timestamp --|--- 2 -----|
| 3 -| timestamp --|--- 5 -----|
...
Tabelle Weiter
--------------------------------
| id | benoetigt | ... ....
|----|-----------|
| 1 -| --- 1 ----|
| 2 -| - 1,2,5 --|
| 3 -| 1,3,5,7,10|
...
Nun will ich das so machen, dass nur die Werte ausgeben werden, die auch tatsächlich schon erarbeitet wurden. Zum Beispiel soll man nun mit den id's 1,2 und 5 den Wert aus der Spalte 1 und 2 sehen, da dort genau diese Zahlen auftreten. Nur bei 3. geht das noch nicht, da noch "fremde" Zahlen zu finden sind.
Hoffe ich hab das Problem einigermaßen genau geschildert...
Ich hab schon X versuche gestartet.. Mein aktuellster Versuch:
$_check = $db->query("SELECT * FROM Fertig WHERE userid = '".$_user['id']."'")or die(mysql_error());
$k = 0;
while($test = $db->fetchArray($_check)) {
$k++;
if($k <= 1) {
$explodeteststring = "";
}else {
$explodeteststring .= ",";
}
$explodeteststring .= $test['fid'];
// echo "Explodeteststring: ".$explodeteststring."<br>";
}
So packe ich alle Werte aus der Fertig in einen String, wobei die Werte durch ein Komma getrennt sind.
Dann weiter:
$_query = $db->query("SELECT * FROM weiter")or die(mysql_error());
while($f = $db->fetchArray($_query)) {
$show = 0;
if($f['benoetigt'] == 0 || empty($f['benoetigt'])) $jump = 1;
$treffer=preg_match("/,/", $f['benoetigt']);
echo $f['benoetigt'];
// echo "Treffer: ".$treffer."<br>";
if($treffer != 0) {
echo "inTrefferDrin";
$benoetigt = explode(",",$f['benoetigt']);
$explodeid = explode(",",$explodeteststring);
foreach ($benoetigt as $value) {
if($value == $explodeid){
$show = 1;
}else {
$show = 0;
}
}
}else {
// echo "In Else von Treffer<br/>";
echo "Explodetest ".$explodeteststring."<br>";
$explodeteststringtest = preg_match("/,/", $explodeteststring);
echo "Explodetest preg match result: ".$explodeteststringtest."<br>";
$explodeit = $explodeteststring;
if($explodeteststringtest != 0) {
$explodeteststring = explode(",",$explodeit);
foreach ($explodeteststring as $value) {
echo "Akt Wert von value: ".$value."<br>";
echo "Akt Wert von fbenoetigt: ".$f['benoetigt']."<br>";
if($value == $f['benoetigt']){
$show = 1;
}else {
$show = 0;
}
}
echo "Variable show1: ".$show."<br>";
}else {
echo "In Else von Explodeteststringtest<br/>";
echo "Akt Wert von fbenoetigt: ".$f['benoetigt']."<br>";
if($explodeit == $f['benoetigt']){
$show = 1;
}else {
$show = 0;
}
echo "Variable show: ".$show."<br>";
}
}
Leider geht das nicht... Es werden dennoch alle Werte aus "Weiter" ausgegeben!
Hier die Ausgabe der echo's ist folgende...
Es gibt zwei Datensätze in "weiter", einen in "Fertig":
Explodetest 1
Explodetest preg match result: 0
In Else von Explodeteststringtest
Akt Wert von fbenoetigt:
Variable show: 0
1Explodetest 1
Explodetest preg match result: 0
In Else von Explodeteststringtest
Akt Wert von fbenoetigt: 1
Variable show: 1
ich hab mal eine Frage, die nix mit dem vB zu tun hat, aber was mit PHP ^^
Erst mal Sorry für den langen Text... Hoffe ihr plant das, wenn nicht bitte nachfragen, mir ist die Sache sehr wichtig!
Folgende Struktur der Datenbank:
Tabelle Fertig
--------------------------------
| id | fertig_seit | fertig_id |
|----|-------------|-----------|
| 1 -| timestamp --|--- 1 -----|
| 2 -| timestamp --|--- 2 -----|
| 3 -| timestamp --|--- 5 -----|
...
Tabelle Weiter
--------------------------------
| id | benoetigt | ... ....
|----|-----------|
| 1 -| --- 1 ----|
| 2 -| - 1,2,5 --|
| 3 -| 1,3,5,7,10|
...
Nun will ich das so machen, dass nur die Werte ausgeben werden, die auch tatsächlich schon erarbeitet wurden. Zum Beispiel soll man nun mit den id's 1,2 und 5 den Wert aus der Spalte 1 und 2 sehen, da dort genau diese Zahlen auftreten. Nur bei 3. geht das noch nicht, da noch "fremde" Zahlen zu finden sind.
Hoffe ich hab das Problem einigermaßen genau geschildert...
Ich hab schon X versuche gestartet.. Mein aktuellster Versuch:
$_check = $db->query("SELECT * FROM Fertig WHERE userid = '".$_user['id']."'")or die(mysql_error());
$k = 0;
while($test = $db->fetchArray($_check)) {
$k++;
if($k <= 1) {
$explodeteststring = "";
}else {
$explodeteststring .= ",";
}
$explodeteststring .= $test['fid'];
// echo "Explodeteststring: ".$explodeteststring."<br>";
}
So packe ich alle Werte aus der Fertig in einen String, wobei die Werte durch ein Komma getrennt sind.
Dann weiter:
$_query = $db->query("SELECT * FROM weiter")or die(mysql_error());
while($f = $db->fetchArray($_query)) {
$show = 0;
if($f['benoetigt'] == 0 || empty($f['benoetigt'])) $jump = 1;
$treffer=preg_match("/,/", $f['benoetigt']);
echo $f['benoetigt'];
// echo "Treffer: ".$treffer."<br>";
if($treffer != 0) {
echo "inTrefferDrin";
$benoetigt = explode(",",$f['benoetigt']);
$explodeid = explode(",",$explodeteststring);
foreach ($benoetigt as $value) {
if($value == $explodeid){
$show = 1;
}else {
$show = 0;
}
}
}else {
// echo "In Else von Treffer<br/>";
echo "Explodetest ".$explodeteststring."<br>";
$explodeteststringtest = preg_match("/,/", $explodeteststring);
echo "Explodetest preg match result: ".$explodeteststringtest."<br>";
$explodeit = $explodeteststring;
if($explodeteststringtest != 0) {
$explodeteststring = explode(",",$explodeit);
foreach ($explodeteststring as $value) {
echo "Akt Wert von value: ".$value."<br>";
echo "Akt Wert von fbenoetigt: ".$f['benoetigt']."<br>";
if($value == $f['benoetigt']){
$show = 1;
}else {
$show = 0;
}
}
echo "Variable show1: ".$show."<br>";
}else {
echo "In Else von Explodeteststringtest<br/>";
echo "Akt Wert von fbenoetigt: ".$f['benoetigt']."<br>";
if($explodeit == $f['benoetigt']){
$show = 1;
}else {
$show = 0;
}
echo "Variable show: ".$show."<br>";
}
}
Leider geht das nicht... Es werden dennoch alle Werte aus "Weiter" ausgegeben!
Hier die Ausgabe der echo's ist folgende...
Es gibt zwei Datensätze in "weiter", einen in "Fertig":
Explodetest 1
Explodetest preg match result: 0
In Else von Explodeteststringtest
Akt Wert von fbenoetigt:
Variable show: 0
1Explodetest 1
Explodetest preg match result: 0
In Else von Explodeteststringtest
Akt Wert von fbenoetigt: 1
Variable show: 1