php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2004

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 05.08.2004, 06:38  
Gast
 
Beiträge: n/a
Standard Nur bestimmte DB einträge ausgeben

Hallo,
ich habe da ein Problem und hoffe ihr könnt mir helfen?

Ich habe in einer Datenbank 1 Tabelle davon sind verschiedene Felder eins davon ist das Feld user ein anderes das Feld fromuser.
Ich möchte aber jetzt aber nur die user ausgeben wenn in den Felder keine übereinstimmung haben, also wenn im feld user der name test steht und im Feld fromuser der name auch test steht, so sollte dieser User nicht ausgegeben werden.

Ich hoffe das ich es nicht zu umständlich beschrieben habe.
 
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 05.08.2004, 08:26  
Gast
 
Beiträge: n/a
Standard

wenn ich dich richtig verstanden habe:

PHP-Code:
SELECT FROM table WHERE NOT user=fromuser 
 
Alt 05.08.2004, 09:11  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Versuch mal Kindariegel's Code und dann diesen:
Code:
SELECT <entsprechende felder>
    FROM table
    WHERE user != fromuser;
und vergleiche die Resultate. Eventuell krigst du mit
Code:
SELECT <entsprechende felder> 
    FROM table 
    WHERE NOT (user = fromuser);
das gleiche Resultat
__________________
Gruss
L
lazydog ist offline  
Alt 05.08.2004, 09:20  
Gast
 
Beiträge: n/a
Standard

soweit ich weiß erlaubt nur mysql den ungleichoperator ! aber wenn er ne mysql db hat dann funktionieren beide, aber er hat ja nicht genau gesagt welche er verwendet
 
Alt 05.08.2004, 09:40  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

@Kindariegel
Ich weiss, dass deine Version läuft. Nur gibt sie nicht das gewünschte Resultat, weil sich das NOT in diesem Fall nur auf "user" und nicht auf "user = fromuser" bezieht. am schönsten siehst du das wenn du mit nummerischen Feldern testest (NOT 0 = 1):
Code:
Tabelle tab
spalte a  spalte b spalte text
    1        0        text 1
    1        0        text 2
    1        1        text 3
    1        1        text 4
    0        1        text 5
Code:
SELECT a, b, text
    FROM tab
    WHERE NOT a = b
liefert dir genau eine Zeile, die mit "text 5". Wenn du aber mit
Code:
SELECT a, b, text
    FROM tab
    WHERE a <> b
oder
Code:
SELECT a, b, text
    FROM tab
    WHERE NOT (a = b)
arbeitest, erhälst du auch "text 1" und "text 2".
__________________
Gruss
L
lazydog ist offline  
Alt 05.08.2004, 09:41  
Gast
 
Beiträge: n/a
Standard

also ich habe es mal versucht aber es scheit irgendwo der wurm drin zu sein.
hier mal der code:

Code:
<?php
$resulta=mysql_query("SELECT * FROM mm_user where fromuser='' and mailer='0'");
{
mysql_query("SELECT fromuser FROM mm_user WHERE NOT ('username' = 'fromuser')");
}
	while ($row=mysql_fetch_row($resulta)) 
	{
$dat=$row[28];
$datum=strftime("%d.%m.%Y",$dat);
$dat1=$row[29];
$datum1=strftime("%d.%m.%Y",$dat1);
		$act=$row[25];
		$preis=floor($act*$mal+$kosten);
$row1=$row[1];
		echo"
		<tr>
			<td align=center bgcolor=#ffffff><font color=#000000 face=arial size=1>$row1</td>
			<td align=center bgcolor=#ffffff><font color=#000000 face=arial size=1>$act</td>
			<td align=center bgcolor=#ffffff><font color=#000000 face=arial size=1>$datum</td>
			<td align=center bgcolor=#ffffff><font color=#000000 face=arial size=1>$datum1</td>
			<td align=center bgcolor=#ffffff><font color=#000000 face=arial size=1>$preis</td>
		</tr>";
	}
echo"</table>";
ich möchte alle user die keinen eintrag im fromuser haben und alle die im mailer eine 0 haben ausgeben so weit klappt das auch, doch will ich auch das alle user die den gleichen namen im username und im fromuser haben nicht mitanzeigt werden
 
Alt 05.08.2004, 09:52  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Da nützt es natürlich auch nichts, wenn du zwei Abfragen erstellst, aber nur eine brauchst. Versuchs mit folgendem Beispiel:
PHP-Code:
<?php
$sql 
"SELECT * 
        FROM mm_user 
        WHERE fromuser = '' 
        AND mailer = '0'
        AND user <> fromuser"
;
$resulta mysql_query($sql) or die)mysql_error());
while (
$row=mysql_fetch_row($resulta))
{
    
$dat=$row[28];
    
$datum=strftime("%d.%m.%Y",$dat);
    
$dat1=$row[29];
    
$datum1=strftime("%d.%m.%Y",$dat1);
    
$act=$row[25];
    
$preis=floor($act*$mal+$kosten);
    
$row1=$row[1];
      echo
"
      <tr>
         ....
         ....
      </tr>"
;
}
echo
"</table>";
?>
Ausserdem graut mir, wenn du mit "SELECT *" eine Tabelle abfrägst, die mindestens 30 Attribute enthält. D.h. du liest alle diese Daten aus der DB und verarbeitest dann genau vier Felder weiter.
__________________
Gruss
L
lazydog ist offline  
Alt 05.08.2004, 11:02  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von lazydog
Da nützt es natürlich auch nichts, wenn du zwei Abfragen erstellst, aber nur eine brauchst. Versuchs mit folgendem Beispiel:
PHP-Code:
<?php
$sql 
"SELECT * 
        FROM mm_user 
        WHERE fromuser = '' 
        AND mailer = '0'
        AND user <> fromuser"
;
$resulta mysql_query($sql) or die)mysql_error());
while (
$row=mysql_fetch_row($resulta))
{
    
$dat=$row[28];
    
$datum=strftime("%d.%m.%Y",$dat);
    
$dat1=$row[29];
    
$datum1=strftime("%d.%m.%Y",$dat1);
    
$act=$row[25];
    
$preis=floor($act*$mal+$kosten);
    
$row1=$row[1];
      echo
"
      <tr>
         ....
         ....
      </tr>"
;
}
echo
"</table>";
?>
Ausserdem graut mir, wenn du mit "SELECT *" eine Tabelle abfrägst, die mindestens 30 Attribute enthält. D.h. du liest alle diese Daten aus der DB und verarbeitest dann genau vier Felder weiter.



Also ich habe es jetzt mal so gemacht wie du sagtest, aber habe leider immer noch das problem.
username fromuser

Tomate
Foxfire Tomate
DevilOfDC Foxfire
federweis

bei diesem eintrag dürfte nur der user federweis ausgegeben werden, da Tomate auch in fromuser drinsteht und die anderen nicht in fromuser leer sind.

es wird mir aber drotzdem der user Tomate angezeigt, aber genau das will ich nicht.
 
Alt 05.08.2004, 11:12  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Kannst du mal versuchen, deinen Bedingungen tabelarisch stukturiert zu definieren. So, wie ich dich bis jetzt verstanden habe, entspricht das Resultat genau den Anforderungen.
__________________
Gruss
L
lazydog ist offline  
Alt 05.08.2004, 11:36  
Gast
 
Beiträge: n/a
Standard

ja, das ist wohl etwas ungenau beschrieben.
Ich verstehe die Frage jetzt so, dass Du alle Einträge haben willst, für deren Feld user in keinem Datensatz eine Entsprechung im Feld fromuser zu finden ist.
Code:
SELCT a.x FROM a LEFT JOIN b ON a.y=b.z
LEFT JOIN wählt alle Datensätze der linken Tabelle (hier a) und verbindet sie mit Datensätzen der rechten Tabelle (hier b) gemäß der ON-Bedingung. Gibt es keinen passenden Datensatz in der rechten Tabelle, wird der Datensatz der linken Tabelle trotzdem einmal ausgewählt; die Felder der rechten Tabelle werden dabei als NULL angenommen.
Und genau diese Datensätze willst Du haben: Sämtliche Datensätze der linken Tabelle mm_user für die keine Entsprechung in der rechten Tabelle mm_user gefunden wurde.
Mal nur auf das Feld user beschränkt:
Code:
SELECT a.user FROM mm_user as a
LEFT JOIN mm_user as b ON a.user=b.fromuser
WHERE ISNULL(b.fromuser)
 
 


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
Textdatei - nur bestimmte Zeilen ausgeben Kristoffer PHP Tipps 2008 7 08.05.2008 16:18
verschachtelte Rubriken ausgeben / alle anzeigen prinzli PHP Tipps 2008 3 25.02.2008 22:37
Bestimmte Anzahl an Daten ausgeben frankys9 PHP Tipps 2006 2 04.09.2006 09:43
Bestimmte Anzahl aus DB ausgeben... Datenbanken 5 24.01.2006 14:04
Codeschnipsel nur bei bestimmten Stylesheet ausgeben PHP Tipps 2005-2 2 24.07.2005 11:53
Ausgeben der Tabelle GrU3nL!nG Datenbanken 2 30.05.2005 15:57
[Erledigt] Bestimmte Anzahl von Datensätzen ausgeben PHP Tipps 2005 14 02.05.2005 13:41
HTML - Datei ausgeben PHP Tipps 2005 5 19.02.2005 16:58
Bestimmte Anzahl von Werten ausgeben! Boennchen PHP Tipps 2005 3 10.02.2005 12:53
Bestimmte Anzahl von Werten ausgeben! Boennchen HTML, Usability und Barrierefreiheit 14 09.02.2005 12:24
[Erledigt] Array ausgeben PHP Tipps 2004-2 4 05.12.2004 00:53
Bestimmte Datenbank Felder nur einmal ausgeben Paulo PHP Tipps 2004-2 3 26.11.2004 16:39
[Erledigt] Ganze Tabelle ausgeben PHP Tipps 2004-2 1 21.11.2004 16:48
Liste ausgeben PHP Tipps 2004 3 25.10.2004 10:31
[Erledigt] Bestimmte Zahlen in zufälliger Reihenfolge ausgeben PHP Tipps 2004 12 15.09.2004 20:04


Alle Zeitangaben in WEZ +2. Es ist jetzt 03:52 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.