php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 02.12.2009, 22:52  
Benutzer
 
Registriert seit: 06.11.2009
Beiträge: 61
PHP-Kenntnisse:
Anfänger
knuffiwuffi befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Einen SELECT von zusammengeführten Tabellen erstellen

Hallo,

ich versuche es einfach zu halten. Vielleicht kann mir ja jemand helfen. Plagt mich schon einige Stunden...ich habe folgenden Select:

Code:
SELECT
    project.project_name,
    login.user,
    login.role,
    login.title,
    login.lastname,
    login.firstname,
    login.landline,
    login.mobile,
    login.email
FROM
    login,
    project,
    mapping_login_project
WHERE
    mapping_login_project.login_ID=login.login_ID AND
    mapping_login_project.project_ID=project.project_ID
Als Ergebis erhalte ich die Tabelle wie gewünscht. Nun kommt aber über ein Macro ein SELECT, wo ich die Tabelle weiter filtern möchte. Dabei sieht der SELECT so aus:

PHP-Code:
sc_select_where(add) = "where project_name IN (".substr($werte_gesamt0strlen($werte_gesamt)-1).")"
Wundert euch nicht über den Code. Es ist ein Macro. nach dem IN habe ich ein ARRAY in dem z.B. folgendes enthalten sein kann: asv

Es soll also bedeuten...WHERE alle Zeilen wo bei project_name das selbe steht wie im ARRAY...also alle Zeilen werden angezeigt, die asv in der Spalte project_name stehen haben.

Das Script funktioniert bei einer anderen Tabelle bereits. In dieser Tabelle habe ich aber den project_name über eine andere Tabelle eingepflanzt und jeweils passend zugeordnet. Er scheint mir trotzdem nicht den Inhalt zu ziehen:

Fehler beim Datenbankzugriff:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'project_name IN ('asv')' at line 1
select count(*) from login, project, mapping_login_project where mapping_login_project.login_ID=login.login_ID AND mapping_login_project.project_ID=project.project_I Dwhere project_name IN ('asv')

Wenn ich mich zu kompliziert ausgedrückt haben sollte, sorry! Ich bin nicht sehr talentiert und arbeite erst seit kurzem in diesem Programm mit Macro Umgebung.

Geändert von nikosch (07.12.2009 um 17:46 Uhr).
knuffiwuffi ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 02.12.2009, 23:10  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.990
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Beim Posten bitte bbCode für Quellbeispiele verwenden und Code einrücken.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
Alt 02.12.2009, 23:15  
Erfahrener Benutzer
 
Benutzerbild von taurus
 
Registriert seit: 01.11.2008
Beiträge: 825
PHP-Kenntnisse:
Anfänger
taurus ist zur Zeit noch ein unbeschriebenes Blatt
Standard

mach ein var_dump auf dein $sql query, dann findest du ganz leicht den synthax fehler
taurus ist offline  
Alt 03.12.2009, 23:30  
Benutzer
 
Registriert seit: 06.11.2009
Beiträge: 61
PHP-Kenntnisse:
Anfänger
knuffiwuffi befindet sich auf einem aufstrebenden Ast
Standard

Also, etwas schlauer konnte ich mich machen. Hier habe ich es ja mit einem mehrdimensionalen SELECT zu tun, der sich aus 2 Tabellen aufbaut. Jetzt ist die Frage wie ich an die Spalte project.project_name komme, die sich nach meinem SELECT ergibt. Ein Wert project_name aus der Tabelle project wird ja nun mehrfach zugeordnet. Die Lösung müßte so aussehen, daß ich alle Werte aus der aktuellen Spalte project_name ziehe und in ein Array packe. Leider erhalte ich bei meinem Versuch Parse error: syntax error, unexpected ';' :

PHP-Code:
// @ -> is the max number of register you can do a count in table
// # -> is the max number of fields selecteds
for($i 0$i < @ ; $i++){
for(
$j=0$j # ; $j++){
{arrayX[$i][$j]};
}
}

sc_select_where(add) = "where {arrayX[$i][$j]} IN (".substr($werte_gesamt0strlen($werte_gesamt)-1).")"
Ein Array wird hier mit {} gekennzeichnet. Wie gesagt, es sind Macros im Spiel. Interessant ist eigentlich nur, wie ich die neue Spalte project_name nach dem "where" im unteren sc_select_where(add) ansprechen kann.
knuffiwuffi ist offline  
Alt 04.12.2009, 07:43  
Erfahrener Benutzer
 
Registriert seit: 26.10.2009
Beiträge: 425
PHP-Kenntnisse:
Fortgeschritten
Yoshi- befindet sich auf einem aufstrebenden Ast
Standard

sc_select_where(add) =
Wieso weißt du einer Funktion einen Wert zu?
Yoshi- ist offline  
Alt 04.12.2009, 13:25  
Erfahrener Benutzer
 
Registriert seit: 25.09.2009
Beiträge: 2.115
PHP-Kenntnisse:
Fortgeschritten
BlackScorp wird schon bald berühmt werdenBlackScorp wird schon bald berühmt werden
Standard

Poste doch mal bitte deine Tabellennamen, spaltennamne und was du als ergebnis raushaben willst(aber bitte nicht alle werte aus den tabellen)
__________________
Mein kleines Projekt
-Cruel Online-
5 von 3 Leuten können kein Bruchrechnen
BlackScorp ist offline  
Alt 04.12.2009, 13:58  
Erfahrener Benutzer
 
Registriert seit: 05.02.2009
Beiträge: 1.401
PHP-Kenntnisse:
Fortgeschritten
Destruction ist zur Zeit noch ein unbeschriebenes Blatt
Standard

lol^^ deine @ und # musst du ersetzen durch eine Zahl. außerdem... was soll das arrayX ? Da muss auch dein arrayname angegeben werden.
__________________
"Dummheit redet viel..Klugheit denkt und schweigt.." [Amgervinus]
Destruction ist offline  
Alt 04.12.2009, 17:04  
Benutzer
 
Registriert seit: 06.11.2009
Beiträge: 61
PHP-Kenntnisse:
Anfänger
knuffiwuffi befindet sich auf einem aufstrebenden Ast
Standard

MySQL:

login
-login_ID
-user
-password
-role
-title
-lastname
-firstname
-landline
-mobile
-email

mapping_login_project
-mapping_ID
-login_ID
-project_ID

plan
-plan_ID
-date
-author
-project_name
-download_description
-download

project
-project_ID
-project_name

Mein SELECT im ersten Schritt sieht nun so aus, daß ich den project.project_name über das mapping_login_project der jeweiligen login_ID zuteile. Als Ergebnis erhalte ich einen SELECT mit allen Feldern von login + ein zusätzliches Feld project.project_name wo die Projektnamen auf die login_ID verteilt werden. So sieht der SELECT aus:

PHP-Code:
SELECT
    project
.project_name,
    
login.user,
    
login.role,
    
login.title,
    
login.lastname,
    
login.firstname,
    
login.landline,
    
login.mobile,
    
login.email
FROM
    login
,
    
project,
    
mapping_login_project
WHERE
    mapping_login_project
.login_ID=login.login_ID AND
    
mapping_login_project.project_ID=project.project_ID 
Als nächstes möchte ich in meinem Programm mit Macros einen SELECT durchführen, der mir nur die Zeilen des aktuellen SELECTs anzeigt, wo der project_name auf das Array (".substr($werte_gesamt, 0, strlen($werte_gesamt)-1).") passt. Dieses Array funktioniert bereits und enthält z.B. die Wörter: sepo, asv etc. Wie kann ich nun vor dem "IN" alle Daten aus der Spalte project_name des aktuellen SELECTs ansprechen?

Das will ich...der select zeigt also nur die Spalten, wo asv und sepo in der Spalte project.project_name steht:
PHP-Code:
sc_select_where(add) = "where asv, sepo, bibo IN asv, sepo; 
So sieht der Code aus, den ich mir mit viel Mühe zusammen gebaut habe:
PHP-Code:
sc_lookup(get_mapping"SELECT DISTINCT project.project_name FROM project,mapping_login_project,login,plan WHERE user = '[param2]' AND login.login_ID = mapping_login_project.login_ID AND mapping_login_project.project_ID = project.project_ID");

if
(empty({
get_mapping}))
{
echo 
"<script> alert('Sie sind aktuell auf kein Projekt gebucht! Bitte wenden Sie sich an einen Administrator'); </script>";
sc_redir(menu);
}

else
{
echo 
"<script> alert('Projekte die Ihnen zugeordnet sind wurden ausgewählt'); </script>";
$werte_gesamt "";
foreach({
get_mapping} as $werte_a1)
{
foreach(
$werte_a1 as $werte_a2)
{
$werte_gesamt .=  "'".$werte_a2."',";
}
}

// @ -> is the max number of register you can do a count in table
// # -> is the max number of fields selecteds
for($i 0$i < @ ; $i++){
for(
$j=0$j # ; $j++){
{arrayX[$i][$j]};
}
}
sc_select_where(add) = "where {arrayX[$i][$j]} IN (".substr($werte_gesamt0strlen($werte_gesamt)-1).")";

knuffiwuffi ist offline  
Alt 06.12.2009, 20:45  
Benutzer
 
Registriert seit: 06.11.2009
Beiträge: 61
PHP-Kenntnisse:
Anfänger
knuffiwuffi befindet sich auf einem aufstrebenden Ast
Standard

Mhhh...Hallo...ich versuche es noch einmal etwas einfacher zu beschreiben:

Der SELECT:

Code:
SELECT
    project.project_name,
    login.user,
    login.role,
    login.title,
    login.lastname,
    login.firstname,
    login.landline,
    login.mobile,
    login.email
FROM
    login,
    project,
    mapping_login_project
WHERE
    mapping_login_project.login_ID=login.login_ID AND
    mapping_login_project.project_ID=project.project_ID
Als nächstes brauche ich ein Array wo mir alle Werte aus der aktuellen Spalte project.project_name reingeschrieben werden. Hier müßte das ja die Spalte 0 sein und eben ein Count in den Zeilen um alle zu erhalten. Leider finde ich im Netz keine passenden Beispiele, die mir bei der Lösungsfindung helfen:

PHP-Code:
// @ -> is the max number of register you can do a count in table
// # -> is the max number of fields selecteds
for($i 0$i count $i++){
  for(
$j=0$j $j++){
    {
arrayX[$i][$j]};
  }

Am Ende kommt dann ein SELECT der logisch so aussieht:

Code:
where {arrayX[$i][$j]} IN anderes array;

Geändert von nikosch (07.12.2009 um 17:48 Uhr).
knuffiwuffi ist offline  
Alt 06.12.2009, 23:36  
Benutzer
 
Registriert seit: 06.11.2009
Beiträge: 61
PHP-Kenntnisse:
Anfänger
knuffiwuffi befindet sich auf einem aufstrebenden Ast
Standard

Sorry...ich schon wieder...bin etwas weiter...mein Problem besteht jetzt nur noch darin, alle Werte durch ein Schleife in das Array auszulesen. Das ECHO liefert mir die richtige Anzahl der Zeilen +1, mein Array {get_table[$i][$j]} enthält leider nur den Wert der bei [0][12] steht. Ich brauche aber alle Einträge aus der Spalte in dem Array. Wo liegt der Fehler?

PHP-Code:
$result count({get_table});
echo (
$result);

// firstfor -> is the max number of register you can do a count in table
// secondfor -> is the max number of fields selected
for($i 0$i 12 $i++){
  for(
$j=0$j $j++){
    {
get_table[$i][$j]};
  }

print_r ({get_table[$i][$j]}); 

Alles Gute zum Nikolaus...

Geändert von nikosch (07.12.2009 um 17:48 Uhr).
knuffiwuffi ist offline  
 


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
SELECT von mehreren Tabellen m. versch. Abfragen roest Datenbanken 4 15.08.2009 22:30
Mehrere Tabellen abfragen. Nicht verknüpfen ibeg Datenbanken 10 08.08.2009 23:26
SQL select fehlerhafte Resultate. Ist PHP 64 Bit das Problem? peterw Server, Hosting und Workstations 6 21.04.2009 09:19
Tabellen erstellen infostud Datenbanken 2 28.03.2009 12:24
[Erledigt] Select über zwei Tabellen / Performanceproblem Wolla Datenbanken 20 15.06.2008 00:58
Flexibles Erstellen von Tabellen aus MySQL Anfragen eolith421 PHP-Fortgeschrittene 2 18.04.2008 15:42
Select über 2 Tabellen MasterMind Datenbanken 11 08.04.2006 11:43
[Erledigt] Tabellen erstellen problem PHP Tipps 2006 5 06.03.2006 16:55
Kombiniertes Problem mit SELECT und COUNT über 2 Tabellen Datenbanken 6 01.07.2005 14:28
Verbindung / Auslesen / Tabellen erstellen Datenbanken 2 29.06.2005 22:52
select über drei Tabellen Sonja PHP Tipps 2005 10 12.05.2005 14:27
Tabellen dynamisch erstellen PHP Tipps 2005 4 20.04.2005 13:20
Tabellen erstellen Datenbanken 8 05.12.2004 20:10
[Erledigt] Selectanfrage an eine Datenbank,aber aus mehreren Tabellen Datenbanken 2 26.10.2004 07:23
mehrere tabellen verknüpfen bei select Datenbanken 3 29.09.2004 11:00

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
bbcode tabelle erstellen tool, select * from andere tabelle, bbcode tabelle erstellen, bbcode tabellen erstellen, php mehrere tabellen ansprechen und verknüpfen, sql spaltennamne, php tabelle erstelle aus select, mit select tabelle erstellen, sc_select_where(add), from erstellen, wie kann ich tabellen erstellen mit 64 bit, www.asv you count, zusammengeführte tabelle spalte ansprechen php, 2 mal \select \from erstellen, sql tabelle anlegen select

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