SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Handbuch der Java-Programmierung

Handbuch der Java-Programmierung zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)
Hilfe Community Kalender Heutige Beiträge Suchen

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 11.08.2004, 09:51:52
schlodd schlodd ist offline
Anfänger
 
Registriert seit: Oct 2003
Ort: szb
Beiträge: 95
schlodd eine Nachricht über ICQ schicken
felder zu einen zusammenfassen

hallo ihr Denkarbyter

wollt mal fragen ob es möglich ist mehrere Felder zu einen für weitere MySQL-Abfragen zusammenzufassen und wie ich da rangehen müsste.

Ich habe für meinen Eventkalender www.ska-times.de/ eine MySQL-Tabelle in der sich mehrere Felder (a01, a02, a03)für Artisten befinden. diese müsste ich erst mit DISTINCT abfragen zu einen Feld/oder Array zusammenfassen und nochmal mit DISTINCT filtern.

Das Problem ist bei der jetzigen Abfrage nach Bands sortieren, dass nur die Artisten berücksichtigt werden die im ersten Feld "a01" stehen

Ergebnis soll ein/e Variable/Array sein in dem sich dann alphabetisch sortiert die Bands befinden

so sieht´s im Mo0ment aus:

PHP-Code:
$sql "SELECT DISTINCT a01
FROM tour  
WHERE dates>='$today' 
ORDER BY a01 "

$result7 mysql_query($sql$db);

while(
$row7 mysql_fetch_array($result7)){// while die1.
$datrow=$row7['a01'];

echo 
"<tr><td bgcolor="#003300"><font color="#FF9900">&nbsp;<b>".$datrow."</b></font></td></tr>n<tr><td>";

$sql "SELECT * 
FROM tour  
WHERE a01='$datrow' AND dates>='$today' 
ORDER BY dates"

$result8 mysql_query($sql$db);

while(
$row8 mysql_fetch_array($result8)){// while die2.
echo $row8['dates']." *".$row8['a01'];
 if (
$row8['a02'] !='') {echo ", <b>".$row8['a02'];}
 if (
$row8['a03'] !='') {echo ", ".$row8['a03'];}
   
echo 
"</b> in "$row8['country']." ".$row8['place'];
if (
$row8['venue'] != '') { echo " / ".$row8['venue'];}
if (
$row8['name'] != '') { echo " / ".$row8['name'];}
echo 
"<br>n";


                                                                                    }
//2.while_end
    
echo "</td></tr>n";                                                                                            
                                                                                    }
//1.while_end

echo "</table>";
error_reporting(E_ALL);
mysql_close(); 

Geändert von schlodd (11.12.2005 um 23:05:05 Uhr) Grund: Link geändert
Mit Zitat antworten
  #2  
Alt 11.08.2004, 09:59:49
c4 c4 ist offline
SELFPHP Guru
 
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
Gib mal die Struktur der Tabellen dazu. Lässt sich leichter denken, so.
__________________
sic!
--> http://dbCF.de/
Mit Zitat antworten
  #3  
Alt 11.08.2004, 10:17:00
feuervogel feuervogel ist offline
SELFPHP Guru
 
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
> wollt mal fragen ob es möglich ist mehrere Felder zu einen für weitere MySQL-Abfragen zusammenzufassen und wie ich da rangehen müsste.

ja, mit concat unter der verwendung von aliasen.

SELECT CONCAT( `feldeins` , `feldzwei` , `felddrei` ) AS `zusammengefasst` [...] ORDER BY `zusammengefasst`
Mit Zitat antworten
  #4  
Alt 11.08.2004, 13:13:31
schlodd schlodd ist offline
Anfänger
 
Registriert seit: Oct 2003
Ort: szb
Beiträge: 95
schlodd eine Nachricht über ICQ schicken
Danke für die superschnelle Antwort ihr beiden

@ C4

die gekürzte Struktur:

tournum int(8) auto_increment
dates varchar(35)
kind varchar(35)
name varchar(40)
a01 varchar(35
a02 varchar(35)
a03 varchar(35
--------------------
place varchar(35)
venue varchar(54
country varchar(5)

@ feuervogel

glaub, ich hab mich falsch ausgedrückt. Dein Vorschlag ergibt pro Datensatz eine Zeichenkette, die ich so nich gebrauchen kann. Brauchen tu ich dagegen ein ARRAY was die 3 Zeichenketten á Datensatz speichert.
Ich glaub allein mit MySQL geht´s wohl nicht. Hab´schon herumprobiert aber ohne Erfolg :(

Mein nächster Gedanke ist, die Felder mit DISTINCT abzufragen und in ein ARRAY zu lesen

$sql = "SELECT DISTINCT a01,
DISTINCT a02
DISTINCT a03 ...weiß nicht ob das so richtig ist

dann ARRAY über einer W-Schleife füllen:
z.B.
$bands[]= "row['a01']";
$bands[]= "row['a02']";
$bands[]= "row['a03']";
usw. irgendwas ist aber glaub hieran falsch gewesen

wie schmeiß ich dann mehrfach vorkommende Einträge aus dem ARRAY?

kompliziert, aber ich weiß keinen einfachen Weg :(
Mit Zitat antworten
  #5  
Alt 11.08.2004, 13:23:35
c4 c4 ist offline
SELFPHP Guru
 
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
Ich steige noch nicht so ganz hinter Dein Problem. Versuch's mal mit Beispieldatensätzen zu erklären. Hilft meistens. :)

Du scheinst mysql_fetch_array() nicht zu kennen, richtig?
--> http://php.net/mysql_fetch_array

Zitat:
wie schmeiß ich dann mehrfach vorkommende Einträge aus dem ARRAY?
--> http://php.net/array_unique
__________________
sic!
--> http://dbCF.de/
Mit Zitat antworten
  #6  
Alt 11.08.2004, 19:58:18
schlodd schlodd ist offline
Anfänger
 
Registriert seit: Oct 2003
Ort: szb
Beiträge: 95
schlodd eine Nachricht über ICQ schicken
hm, dachte mir schon das da keiner durchblickt.

gut ich versuche es mit weiteren Worten

Jeder Datensatz enthält das Datum | a01, a02, a03 für Bandnamen | place | venue | und weitere Angaben, die jetzt keine Rolle spielen

nehmen wir 3 Datensätze und 2 Felder a01, a02

a01| band1, band2, band41
a02| band24, band1, band1

Eine Abfrage mit DISTINCT nütz mir in dem Fall jeweils nur für
ein Feld aber nicht zwischen den Feldern

Also müssen nochmal die restlichen mehrfach vorkommenden
Bands rausgeschmissen werden. Um dies zu realiesieren
muss ich die Felder a01, a02 und a03 nach der ersten Abfrage
mit DISTINCT in ein ind. Array bringen um sie zu filtern.

ich möchte jetzt eine Ausgabe aller Termine ab dem heutigen
Tag für jede Band.

ich hoffe das mich jetzt jemand versteht *aufdenFingernagelkauend*

Vielleicht gibt es eine ganz einfache Lösung mit MySQL, aber ich weiß nicht wie :(

ok C4, ich experimentier mal mit array_unique herum, danke für den Tip. Vielleicht hilft mir das weiter
Mit Zitat antworten
  #7  
Alt 12.08.2004, 09:08:58
c4 c4 ist offline
SELFPHP Guru
 
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
100%ig bin ich noch nicht hinter Dein Problem gestiegen, aber einen Tipp habe ich.

Ist eine unsaubere Methode, aber sie funktioniert 1a. Bei der Ausgabe filterst Du praktisch alle doppelten Datensätze heraus. Ein Beispiel:
PHP-Code:
<pre><?php
// Array mit sinnlosen Zahlen von 1 bis 5 erstellen
for ($i=0$i<15$i++) {
    
$arr[]=rand(15);
}

// Alle Zahlen ausgeben
for ($i=0$i<count($arr); $i++) {
    echo (
$i+1).": {$arr[$i]}n";
}

echo 
"n";

// Jede Zahl einmalig ausgeben
$found='';
for (
$i=0$i<count($arr); $i++) {
    if (!
strstr($found$arr[$i].'#')) {
        
$found.=$arr[$i].'#';
        echo (
$i+1).": {$arr[$i]}n";
    }
}
?></pre>
Das einfach auf Deine Bands oder Daten oder Hausnummern oder was auch immer anwenden und Du hast eine gefilterte Ausgabe.

Vielleicht hilft's Dir ja weiter.
__________________
sic!
--> http://dbCF.de/
Mit Zitat antworten
  #8  
Alt 13.08.2004, 08:25:12
schlodd schlodd ist offline
Anfänger
 
Registriert seit: Oct 2003
Ort: szb
Beiträge: 95
schlodd eine Nachricht über ICQ schicken
@ C4, Danke für Deine Mühe. Ich denke dass ich ´ne Lösung mit ARRAY_UNIQUE finde. Habe eben nur keine Zeit zum Probieren, da ich beruflich voll eingespannt bin...
Mit Zitat antworten
  #9  
Alt 19.08.2004, 19:34:58
schlodd schlodd ist offline
Anfänger
 
Registriert seit: Oct 2003
Ort: szb
Beiträge: 95
schlodd eine Nachricht über ICQ schicken
hallo alle miteinander, habe mal wieder etwas Zeit und ich hoffe ihr auch für mich.
nach eimnigen Probieren und Forschen bin ich nun auf CONCAT_WS gestoßen,
Dank feuervogel´s Tip. Dabei hab ich mir überlegt die Felder mit Trennzeichen als
String in eine Variable zu holen. Klappt alles wunderbar und selbst die leeren Felder
werden einfach übersprungen und somit schon raus.
Jetzt habe ich das Problem
die mehrfach vorkommenden Feldinhalte die jetzt in der Variablen stehen auszufiltern
und in einem einfachen indizierten Array zu speichern. Irgendwie hab´ ich das mit den
Arrays noch nicht geschnallt, vielleicht kann nochmal jemand helfen, bzw. darauf
zeigen was ich falsch mache.

der letzte Stand des Scripts:
PHP-Code:
$sql "SELECT CONCAT_WS(', ', a01, a02, a03, a04) 
AS artists 
FROM tour  
WHERE dates>='$today' 
AND (kind='concert' 
OR kind='festival' 
OR kind='scooter-run')"

$result7 mysql_query($sql$db);
while(
$row7 mysql_fetch_array($result7))    {// while die0.
//echo $row7[artists]."<br>";
$artistlist = array($row7['artists']);
$artlistarr array_unique($artistlist);
echo 
$artlistarr[0]."<br>";
//echo $artistlist[0]."<br>"; 
//echo $artlistarr[0]."<br>";
                                                
}// while die 0.
//$artlistarr[0] alphab. sortieren lassen        
//while-schleife von 0-Ende auslesen
//echo $artlistarr[0]."<br>"; 
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

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

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:05:29 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt