php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 22.04.2006, 23:15  
Neuer Benutzer
 
Registriert seit: 29.03.2006
Beiträge: 14
McNet befindet sich auf einem aufstrebenden Ast
Standard Mehrere Werte in WHERE abfrage

Grüßt euch. Also ich hab ein kleines Problem.

Umzwar will ich Bilder ausgeben lassen, also die sind inner db.. das funzt auch soweit alles wunderbar. So nun hab ich kategorische funktionen, das heißt auch unterkategorien. Und es ist ganz simpel, ich will wenn ich mich nun an höchster ebene einer kategorie, also noch in keiner unterkategorie bin, alle bilder abrufen, auch die der unterkategorien.

So, dazu gehe ich her, und rufe erst mal die Unterkategorien ab:

if ($cat)
{
Code:
   $sql = "SELECT cat_id FROM ". AVATAR_CAT_TABLE ." WHERE cat_parent = $cat";
   if( !($result = $db->sql_query($sql)) )
   {
       message_die(GENERAL_ERROR, 'Could not query pics information', '', __LINE__, __FILE__, $sql);
   }
   while( $row = $db->sql_fetchrow($result) )
   {
      $cat_over .= $row['cat_id'];
   }
Also, sag mir einfach welche unterkategorien zur Hauptkategorie gehören.
$cat ist im übrigen über POST übermittelt

so, und nun hole alle bilder von den ermittelten unterkategorien incl. hauptkategorie.

Code:
   $sql = "SELECT count(pic_id) as total FROM ". AVATAR_PAGE_TABLE ." WHERE pic_cat = $cat AND pic_cat = $cat_over";
   if( !($result = $db->sql_query($sql)) )
   {
       message_die(GENERAL_ERROR, 'Could not query pics information', '', __LINE__, __FILE__, $sql);
   }
   while( $row = $db->sql_fetchrow($result) )
   {
      $total_pics = $row['total'];
   }
}

So, das im zweiten part bei der WHERE Abfrage einiges nicht passt ist mir klar, und auch überhaupt...
Ich bekomme ein leeres Resultat. Zuden werdeb ya auch bei $cat_over mehrere resultate ermittelt, und zb. WHERE pic_cat = 456 kann ya nicht korrekt sein (Also kategorie 4, 5 und 6)

Wie genau mus ich da vorgehen? Was ist zu tun um das zum laufen zu bekommen? Das problem noch gelöst und 2 Monate Arbeit sind endlich fertig. Wär führ hilfe sehr dankbar.

Gruß Mc
McNet ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 23.04.2006, 00:12  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.232
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Es ist ein bischen anstrengend, deinen Text zu lesen. egal.

gleich vorweg: Ich nehme mal an, dass dein $db ein normales Objekt ist, was relativ einfach die Datenbank-Abfragen durchschleust. Ansonsten: Richtig debuggen. Dazu gehört, dass du dir die SQLs mal ausgeben lässt, also was in $sql so drinnesteht für deine zwei Abfragen.

Dann wirst du folgendes erkennen:
PHP-Code:
<?
 $cat_over 
.= $row['cat_id'];
?>
Das setzt dir die Kategorien zusammen, was exakt 0 Sinn macht, denn:
Kategorie 3, 6, 7, 8, 12 wird dann zu folgendem Text zusammengesetzt:
"367812" und ich wette, dass du so eine ID gar nicht in deiner DB stehen hast.

Des Rätsels Lösung:
Verwende IN (siehe SQL-Handbuch)
Den $cat_over setzt dann wie folgt zusammen (ungetestet):
PHP-Code:
<?php
   
while( $row $db->sql_fetchrow($result) ) 
   {
      if (
strlen($cat_over) > 0$cat_over.=', ';
      
$cat_over .= $row['cat_id']; 
   }
?>
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline   Mit Zitat antworten
Alt 23.04.2006, 01:10  
Neuer Benutzer
 
Registriert seit: 29.03.2006
Beiträge: 14
McNet befindet sich auf einem aufstrebenden Ast
Standard

Eya einwandfei, dann hast du mir wenigstens emal gezeigt wie das mit den komas funktioniert, so das ich nicht auch nach em letzten wert eines hab.

Aber horch, darst mit mir ruhig auch fachchinesisch werden, und solche dinge wie die ausgabe dessen was überhaupt angerufen wird die sin bei mir schon standart.

Dennoch bringt mir das nur einen teil, denn das da 456 und nich 4, 5, 6 rauskommt, wes ich auch
und (auszug) WHERE pic_cat = 1, 4, 5, 6 bringt nix, denn die komas scheint er nicht zu mögen
Wie mus das ausshen damit er alle nimmt?
McNet ist offline   Mit Zitat antworten
Alt 23.04.2006, 01:16  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

Zitat:
Zitat von McNet
Dennoch bringt mir das nur einen teil, denn das da 456 und nich 4, 5, 6 rauskommt, wes ich auch
und (auszug) WHERE pic_cat = 1, 4, 5, 6 bringt nix, denn die komas scheint er nicht zu mögen
Wie mus das ausshen damit er alle nimmt?
mepeisen hat dir auch dazu schon einen Hinweis gegeben. Verwende 'IN', wie? Das findest du im Handbuch unter http://dev.mysql.com/doc/refman/4.0/...operators.html
__________________
Today you...Tomorrow me.
agrajag ist offline   Mit Zitat antworten
Alt 23.04.2006, 01:21  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Es funktioniert halt genauso wie bei PHP.
if ($pic_cat = 1 OR $pic_cat = 2 ... )

genauso in MySQL:
WHERE pic_cat = '1' OR pic_cat = '2' OR pic_cat = '3' ...
Flor1an ist offline   Mit Zitat antworten
Alt 23.04.2006, 01:25  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.232
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Ich dachte eher an WHERE pic_cat IN (1, 2, 3, 4, 5)

daher auch das mit den Kommas... Man sollte mine Beiträge schon vollständig lesen und nicht nur halb

Zitat:
Aber horch, darst mit mir ruhig auch fachchinesisch werden, und solche dinge wie die ausgabe dessen was überhaupt angerufen wird die sin bei mir schon standart.
Dann hättest du den eigentlicher Fehler von selbst sehen müssen und uns nicht fragen müssen. Naja, wie du meinst
mepeisen ist offline   Mit Zitat antworten
Alt 23.04.2006, 02:06  
Neuer Benutzer
 
Registriert seit: 29.03.2006
Beiträge: 14
McNet befindet sich auf einem aufstrebenden Ast
Standard

Fachchinesisch heißt nich das ich MySQL Dictionary im Buch hab, aber wie man die IN angebae schreibt wusste ich dann doch.

Un bitte will kein Stress hier, sorry wenn ich momentan etwas aufmüpfig bin.

Auf jeden fall hat mich deine erste Antwort zum Ziel gebracht. Nur hab ich das Problem das wenn keine Unterkategorien da sind er meckert weil ein leerer Wert kommt
Aber das denke ich bekomme ich noch allein hin ^^

Auf jeden fall bedanke ich mich recht herzlich bei euch allen für die mühen!!!
Und sorry wegen meiner Laune, is nich immer so, danke euch.
McNet ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Frage: richtige SQL Abfrage von einer MySQL Spalte die SET werte besitzt Seb PHP Tipps 2008 2 29.05.2008 11:36
Abfrage -> where String anhängen Papst Datenbanken 2 28.12.2007 23:11
Where Abfrage durchsuchen $$$ ThiKool $$$ Datenbanken 3 12.09.2007 16:42
where Abfrage in anderer Tabelle?? Matthiasnet Datenbanken 10 11.04.2007 17:35
erweiterte abfrage - where DarkManX Datenbanken 2 02.02.2007 17:14
where abfrage liefert zu viele ergebnisse phpdummi Datenbanken 9 22.01.2007 22:54
Mehrfach where in der ABfrage? Kori Datenbanken 4 16.01.2007 16:46
SELECT WHERE datetime abfrage - Optimierung mrSpok Datenbanken 15 23.03.2006 19:08
WHERE Falsche Abfrage? Kein MySQL Fehler PHP Tipps 2005-2 10 30.09.2005 10:43
Nach MySQL abfrage noch WHERE ? atom-dragon PHP Tipps 2005-2 6 12.06.2005 04:21
php Variablen in MySQL Abfrage verwenden (WHERE Bedingung) PHP Tipps 2005 20 20.04.2005 20:05
[Erledigt] WHERE Abfrage wird ignoriert Datenbanken 1 22.02.2005 21:19
WHERE LIKE abfrage Datenbanken 2 06.01.2005 09:15
[Erledigt] Doppelte WHERE Abfrage Datenbanken 2 13.11.2004 23:59
abfrage where sth = NULL stefan-miti PHP Tipps 2004 6 26.08.2004 18:34

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
datenbankabfrage mehrere werte, sql mehrere where, php für jede hauptkategorie wert, in where abfrage, query mehrere where, sql mehrere werte abfragen where, mehrere werte sql where, mehrer abfragen in einer sql query, mehrere werte mit where abfragen, \mehrere werte in where\, mehrere ergebnisse in einer sql query where, if mehrere werte abfragen, mehere select in where, where abfrage das oder dass, where abfrage mehrfache and, mehrere where abfragen sql query, where abfrage, mehrere werte in where, select * from standort where standort_id = 1,2,3,4,8, where abfrage mit mehrere werte

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:32 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.