php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 01.07.2005, 21:24  
Gast
 
Beiträge: n/a
Standard Detailansicht von Ergebnisliste

Hallo

Ich habe zwei Tabellen. "Firma" und "Mitarbeitende". In beiden Tabellen gibt es das Feld "Firma". Auf einer Ergebnisliste werden alle Firmen aufgelistet (soweit bin ich schon ). Nun sollen bei einem Klick auf einen Button "Mitarbeitende" alle Mitarbeitenden gezeigt werden, die in der entsprechenden Firma arbeiten. Hab das Gefühl, das sollte irgendwie mit JOIN funktionieren, nur hab ich überhaupt keine Plan, wo ich welchen Code in meiner php Seite unterbringen soll.

Kann mir da jemand weiterhelden. Sorry - wahrscheinlich ein absolutes Basic problem, aber bin super Anfänger.

Danke und Gruss
mediaman
 
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 01.07.2005, 21:58  
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 2.079
Der_Gerhard ist zur Zeit noch ein unbeschriebenes Blatt
Der_Gerhard eine Nachricht über ICQ schicken
Standard

Hi, willkommen im Forum.

Einen Join brauchst Du eigentlich nicht.
Du musst bei der Ausgabe aller Firmen eben einen Link erzeugen, der die Seite zur Ausgabe der Mitarbeitenden aufruft und dabei die Firmen-ID als Parameter mitgibt.

Dort suchst Du dann ja nur nach allen Einträgen in der Mitarbeitenden-Tabelle, wo diese Firma drinsteht und gibst die dann aus.
Das ist ja wiederum nur eine Abfrage einer einzigen Tabelle.

Probier's mal so und wenn's dabei Schwierigkeiten gibt, dann zeig den entsprechenden Code her. (In PHP-Tags und schön lesbar eingerückt. )
__________________
**********************************
Nein, ich bin nicht die Signatur.
Ich putze hier nur.
**********************************
Der_Gerhard ist offline  
Alt 01.07.2005, 22:09  
Gast
 
Beiträge: n/a
Standard

Hi

Sowas mit Variablen übergeben hab ich mir fast gedacht und auch in einem schlauen Buch gefunden; allerdings steht da schon wieder viel mehr, als ich begreif. Erlaub mir drum mal den Code zu posten.

Firma = Titel

Danke und Grüsse
mediaman

PHP-Code:
<?php

$server 
"localhost";
$user "*****";
$pass "*****";
$datenbank "*****";

$conn = @mysql_connect($server$user$pass);
 @
mysql_select_db($datenbank$conn);

if (
$conn!=TRUE)
{
echo 
"Verbindungsfehler: ".mysql_error()." !! Versuchen Sie es zu einem sp&auml;teren Zeitpunkt nochmals. Danke.";
die;
}
 

$sql "SELECT * FROM Medium";


$adressen_query mysql_query($sql) or die("Anfrage nicht erfolgreich");

$anzahl mysql_num_rows($adressen_query);
echo 
"Anzahl der Datensätze: $anzahl";
?>



<div class="formtitel">[b]TAGESZEITUNGEN[/b]</div>


<link href="style.css" rel="stylesheet" type="text/css">
<?php
while ($adr mysql_fetch_array($adressen_query)){
?>
<body leftmargin="50">
<table width="300" border="0" cellspacing="0" cellpadding="0">
  <tr height="2"></tr><tr> 
    <td colspan="2" class="mediumtitel">[b]
      <?=$adr['Titel']?>
    </td>
  </tr> 
  <tr> 
    <td colspan="2"><?=$adr['Strasse']?><?=$adr['PLZ']?><?=$adr['Ort']?></td>
  </tr>
   <tr> 
    <td height="10" colspan="2"></td>
  </tr>
  <tr> 
    <td width="70">T</td>
    <td><?=$adr['Telefon']?></td>
  </tr>
  <tr> 
    <td width="70">F</td>
    <td><?=$adr['Telefax']?></td>
  </tr>
  <tr> 
    <td width="70">URL</td>
    <td>[url="http://<?=$adr['URL']?>"]<?=$adr['URL']?>[/url]</td>
  </tr>
   <tr> 
    <td width="70">E-Mail R</td>
    <td>[email="<?=$adr['Email_R']?>"]<?=$adr['Email_R']?>[/email]</td>
  </tr>
  
    </table>
Details

<hr align="left" width="300" size="1" noshade>

<?php
}
?>

</table>
?>[/php]
 
Alt 01.07.2005, 23:09  
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 2.079
Der_Gerhard ist zur Zeit noch ein unbeschriebenes Blatt
Der_Gerhard eine Nachricht über ICQ schicken
Standard

OH GOTT!!!!
Was ist denn das?

Wer hat sich denn das ausgedacht? Diese <? ?>- Orgie ist ja abartig.


Fangen wir mal an...

- Was heißt "da steht mehr als ich begreif"? Ist der Code da von Dir oder aus dem Buch? Und kommt da schon das raus, was Du für die erste Seite haben willst?

- Schreib oben error_reporting(E_ALL) rein.

- Die Abfrage von $conn kommt etwas spät, da $conn schon in mysql_select_db verwendet wird.

- Wenn Du hier im Forum nach "SELECT *" suchst, wirst Du einige Hinweise finden, warum das nicht gut ist. Schreib lieber alle Spaltennamen in den Query-String rein.

- Gibt's in den Tabellen ein Feld für die Firmen-ID oder wird das nur über den Titel erledigt?

- Da Du nicht über den numerischen Index der Spalten zugreifst, nimm lieber mysql_fetch_assoc statt mysql_fetch_array. Damit wird nicht jede Spalte doppelt in das Array reingepackt.

- Da ist ein </table> mehr drin als drin sein sollte.

- Willst Du hier:
PHP-Code:
<td colspan="2" class="mediumtitel">[b]
      <?=$adr['Titel']?>
</td>
das [b] auch mal wieder schließen?

- In genau dem Abschnitt würde ich auch den Link zu den Details reinmachen. Also z. B. so:
PHP-Code:
<td colspan="2" class="mediumtitel">[b]
<? echo '[url="http://xyz/details.php?Id='.$adr['Id'].'"]'.$adr['Titel'].'[/url]'?>
</td>
- Wo ist der Code, der die Details anzeigen soll?

Alle enthaltenen Tipp- und sonstigen Fehler sind gratis.
__________________
**********************************
Nein, ich bin nicht die Signatur.
Ich putze hier nur.
**********************************
Der_Gerhard ist offline  
Alt 02.07.2005, 11:18  
Gast
 
Beiträge: n/a
Standard

Kaum jemand hat mir so nachvollziehbar und klar in einem Forum geholfen. Herzlichen Dank. Habe alle Änderungen gemacht - anscheinend richtig; die Sache funktioniert immer noch. Die Detailansicht habe ich erstellt. Irgendwas stimmt noch nicht ganz; wahrscheinlich müsst ich für die WHERE Klausel noch die Variable für 'Titel' aus der URL lesen, oder so...

Die Verknüpfung läuft im Moment noch über Titel, wird aber später durch eine ID ersetzt (evtl. Timestamp)

Zudem sollen in Detail.php auch noch Daten aus der Tabelle Medium angezeigt werden, das habe ich aber noch nicht hingekriegt. Auf zwei Tabellen zugreifen ist grad ein bisschen viel...

Code:
[php]<?php

$server = "localhost";
$user = "*****";
$pass = "*****";
$datenbank = "*****";

$conn = @mysql_connect($server, $user, $pass);

if ($conn!=TRUE)
{
echo "Verbindungsfehler: ".mysql_error()." !! Versuchen Sie es zu einem sp&auml;teren Zeitpunkt nochmals. Danke.";
die;
}

 @mysql_select_db($datenbank, $conn);


 

$sql = "SELECT Name, Vorname FROM Redaktoren WHERE Redaktoren.Titel = Titel";


$adressen_query = mysql_query($sql) or die("Anfrage nicht erfolgreich");

$anzahl = mysql_num_rows($adressen_query);
echo "Anzahl der Datensätze: $anzahl";
?>



<div class="formtitel">REDAKTOREN</div>


<link href="style.css" rel="stylesheet" type="text/css">
<?php
while ($adr = mysql_fetch_assoc($adressen_query)){
?>
<body leftmargin="50">
<table width="300" border="0" cellspacing="0" cellpadding="0">
  <tr> 
    <td colspan="2" class="mediumtitel"> 
      <?=$adr['Name']?>, <?=$adr['Vorname']?>
    </td>
    <td width="23" class="mediumtitel"><div align="right">[img]../images/lupe.gif[/img]</div></td>
  </tr>
 </table>

<?php
}
?>
 
Alt 02.07.2005, 12:39  
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 2.079
Der_Gerhard ist zur Zeit noch ein unbeschriebenes Blatt
Der_Gerhard eine Nachricht über ICQ schicken
Standard

So, Teil2 ...

-Auch hier gilt: error_reporting(E_ALL) oben reinpacken.

-Prinzipiell kann natürlich auch das mysql_select_db() schiefgehen.

-Bei Fehlern in mysql_query() wäre es hilfreich, auch den Fehler irgendwie zu kennen. Du könntest z. B: or die (mysql_error()) nehmen statt Deiner Fehlermeldung ohne Details.

-Was soll denn ein Timestamp als Firmen-ID? Nimm doch einfach ein INT Feld mit AUTOINCREMENT. Der Titel könnte Sonderzeichen enthalten und Probleme bereiten.

-Nur zur Konformität mit neueren Standards wäre es nicht verkehrt, die
durch
zu ersetzen. Ist aber nicht wichtig.

-An den Titel aus der URL kommst DU mit $_GET['Titel'] ran. Den solltest Du noch mit isset() und/oder mit !empty() abfragen. Die Seite könnte auch von Hand ohne den Parameter aufgerufen werden. Prüf auch mal, ob register_globals auf on oder off steht.

-Den zu suchenden Titel in der WHERE-Klausel bitte in ' ' setzen. Ist ja ein String.

Es ist nicht wirklich eine Suche in zwei Tabellen. Auf dieser Seite steht schon fest, für welche Firma die Daten der Redakteure/Redaktoren(?) zu holen sind.
Du musst also nur zweimal in je einer Tabelle suchen und nicht einmal in beiden. Das macht die Sche recht einfach.
Du holst mit dem Query-String, der da bei Dir schon steht, die Daten zu dieser einen Firma aus der zweiten Tabelle und gibst sie aus.

Die Daten zur Firma kannst Du Dir vorher oder nachher aus der ersten Tabelle holen. Wie das klappt, hast Du schon bei Seite 1 stehen. Nur musst Du dabei auch für die Firmen-Tabelle die WHERE-Klausel einbauen. Die dürfte genauso aussehen wie bei Seite 2: "...WHERE Titel='".$_GET['Titel']."'"
__________________
**********************************
Nein, ich bin nicht die Signatur.
Ich putze hier nur.
**********************************
Der_Gerhard ist offline  
Alt 02.07.2005, 15:20  
Gast
 
Beiträge: n/a
Standard

Super, nach einigem rumprobieren funktioniert alles - ausser das mit den daten aus der Tabelle Medium(Firma) in der Detailansicht.

Zitat:
Du holst mit dem Query-String, der da bei Dir schon steht, die Daten zu dieser einen Firma aus der zweiten Tabelle und gibst sie aus.
Da ist mir nicht ganz klar, wie ich die Select Anweisung ergänzen und die Felder anschliessend bezeichnen muss; reicht Titel oder muss stehen Tabelle.Titel.

Danke
mediaman
 
Alt 02.07.2005, 16:32  
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 2.079
Der_Gerhard ist zur Zeit noch ein unbeschriebenes Blatt
Der_Gerhard eine Nachricht über ICQ schicken
Standard

Bei Abfragen mit nur einer Tabelle reicht der Spaltenname.

Zur Select-Anweisung:
Du nimmst das Ding aus Deinem ersten Posting und packst meinen Zusatz dran:

PHP-Code:
<?php
$sql 
'SELECT * FROM Medium WHERE Titel=''.$_GET['Titel']."'";
?>
Nur dass Du da ja noch * durch die benötigten Spalten ersetzen solltest.
__________________
**********************************
Nein, ich bin nicht die Signatur.
Ich putze hier nur.
**********************************
Der_Gerhard ist offline  
Alt 02.07.2005, 16:40  
Gast
 
Beiträge: n/a
Standard

Hab nur das Problem, dass ich ja schon eine Abfrage mache, um die Kontaktdaten zu bekommen

PHP-Code:
$sql "SELECT Name, Vorname, Ressort, EMail_Personal FROM Redaktoren WHERE ID='".$_GET[ID]."'"
?>[/php]
 
Alt 02.07.2005, 16:46  
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 2.079
Der_Gerhard ist zur Zeit noch ein unbeschriebenes Blatt
Der_Gerhard eine Nachricht über ICQ schicken
Standard

Das gute an Variablen ist, dass man ihnen neue Werte zuweisen kann.
Zur Not kann man ihnen auch beliebige Namen geben. (So wie $sql1 und $sql2 wenn's unbedingt sein muss.)

Ich hab glauch ich schon mal erwähnt, dass Du zwei Abfragen für jeweils eine Tabelle machen musst.

Was hindert Dich also daran, zuerst eine Abfrage zu machen, in der Du die Daten zur Firma ausliest, diese ausgibst und danach eine ganz andere Abfrage nach den Daten der Details zu dieser Firma?
Das mysql_query() brauchst Du doch nur zweimal aufzurufen.

Ich verstehe nicht, wo Dein Problem ist.
__________________
**********************************
Nein, ich bin nicht die Signatur.
Ich putze hier nur.
**********************************
Der_Gerhard 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
Ergebnisliste mit Button weiter bearbeiten Cheesy PHP Tipps 2006 6 23.05.2006 01:01
Übergabe einer ID einer Ergebnisliste - Submit-Button PHP Tipps 2006 18 18.05.2006 09:02
Detailansicht PHP Tipps 2005-2 3 11.09.2005 00:09
komplette ergebnisliste PHP Tipps 2005-2 7 22.06.2005 12:58
[Erledigt] seitenzahlen in ergebnisliste PHP Tipps 2004 2 29.09.2004 11:03
Wer kann mir helfen fototool in detailansicht programmieren? PHP Tipps 2004 2 06.07.2004 12:44


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