Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Werte von zwei Tabellen!Bitte Hilfe! [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Werte von zwei Tabellen!Bitte Hilfe!


 
litterauspirna
12-01-2008, 08:50 
 
Hallo @ all! Ich wusste nicht wie die Beitragseinfuhrung schreiben sollte.

Mein Problem ist folgendes ich bin dabei ein Newssystem mit Kategorien zu schreiben und mache das über zwei verschiedene Tabellen die eine heist

newscat und hat folgenden Feldinhalt
id,catname

Die zweite heist news und hat folgende Feldinhalte
id,catid,author,titel,email,wahl,url,urlname,text,datum


Ich möchte jetzt erreichen das ich über eine angelegte Kategorie den entsprechenden Newsbeitrag aufrufen kann. Wie das in einer Tabelle geht weis ich aber über zwei Tabellen scheiter ich leider.

Hier der Code für die ausgegebenen Kategorien!


<?php
$newscat_result = mysql_query("Select * From $tab_newscat")or die(mysql_error());
while($newscat_row = @mysql_fetch_array($newscat_result)){
$newscat_id = $newscat_row['id'];
$newscat_catname = $newscat_row['catname'];
echo"
<tr>
<td align=\"left\">
&nbsp;&nbsp;<a href=\"show_news.php?id=\">".$newscat_catname."-News</a>
</td>
</tr>
";
}
?>



Und hier der Code für die newsausgabe!

$news_result = mysql_query("Select * From $tab_news")or die(mysql_query());
while($news_row = @mysql_fetch_array($news_result)){

$news_id = $news_row['id'];
$news_catid = $news_row['catid'];
$news_author = $news_row['author'];
$news_titel = $news_row['titel'];
$news_email = $news_row['email'];
$news_wahl = $news_row['wahl'];
$news_url = $news_row['url'];
$news_urlname = $news_row['urlname'];
$news_text = nl2br($news_row['text']);
$news_datum = $news_row['datum'];

$datum=date("d.m.Y H:i",$news_datum);
}


Die catid wird beim einsenden eines News auch mit eingetragen nur bekomme ich das auslesen nicht hin. Vieleicht möchte mir jemand helfen.

Ich denke das in diesem Link
href=\"show_news.php?id=\">".$newscat_catname."-News</a>
auf die catid in der newstabelle verwiesen werden muss und dort die where clausel entsprechend geschrieben werden muss,habe es stundenlang probiert ohne erfolg.


MFG der Litter

 
IchBinIch
12-01-2008, 13:32 
 
Das ist eigentlich ein grundlegendes SQL-Problem und das Zauberwort lautet JOINs. Such danach, es gibt auch einen entsprechenden "Wichtig"-Thread.

 
litterauspirna
12-01-2008, 14:45 
 
Ich habe jetzt mal gelesen und es so versucht.

Der Link zur show_piccat sieht jetzt so aus

<a href=\"show_thumb.php?id='".$piccat_id."'\">".$piccat_catname."</a>


Und die Abfrage in der show_thumb sieht so aus

<?php
$bild_result = mysql_query("Select piccat.id,piccat.catname From $tab_piccat
LEFT JOIN $tab_bild ON catid")or die(mysql_error());
$i=1;
while($bild_row = @mysql_fetch_array($bild_result)){

$bild_id = $bild_row['id'];
$bild_catid = $bild_row['catid'];
$bild_bild = $bild_row['bild'];
$bild_view = $bild_row['view'];
}


Das ERgebnis davon ist,das es keine mysql Fehlermeldung gibt,er mir auch ein Ergebnis liefert. Nur eigentlich sollen in der Kategorie Personal zum Beispiel drei Bilder angezeigt werden. Ich habe noch zwei andere Kategorien angelegt und es zeigt egal welche Kategorie ich anklicke immer drei Reihen mit 9 Bildern an.
Bzw nur drei Reihen und das Bild gar nicht.

 
IchBinIch
12-01-2008, 14:54 
 
Gib doch erstmal die Query aus um zu überprüfen, ob da auch das drin steht, was du erwartest. :rolleyes:

Gib auch mal nen Link, vielleicht kann man dann deine unverständliche Erklärung am Ende nachvollziehen.

 
litterauspirna
12-01-2008, 15:56 
 
Also das hier gibt mir der query aus

Select piccat.id,piccat.catname From piccat LEFT JOIN bild ON catidSelect piccat.id,piccat.catname From piccat LEFT JOIN bild ON catid Select piccat.id,piccat.catname From piccat LEFT JOIN bild ON catid Select piccat.id,piccat.catname From piccat LEFT JOIN bild ON catidSelect piccat.id,piccat.catname From piccat LEFT JOIN bild ON catid Select piccat.id,piccat.catname From piccat LEFT JOIN bild ON catid Select piccat.id,piccat.catname From piccat LEFT JOIN bild ON catidSelect piccat.id,piccat.catname From piccat LEFT JOIN bild ON catid Select piccat.id,piccat.catname From piccat LEFT JOIN bild ON catid


Ich kann keinen Link geben da ich die Seite noch offline betreibe.

Ich versuche es noch ma zu erklären.

Ich habe eine Datei die heist show_piccat und dort werden die Kategorien ausgegeben die als Links dargestellt werden.

<a href="show_pic.php">Kategoriename</a>
was hinter das php im Link kommt ist mein erstes Problem

Dann habe ich eine Datei Namens show_thumb,dort werden die Bilder ausgegeben. In die Tabelle der bilder (bild) wird auch die catid geschrieben,also die id aus der Tabelle piccat.

Nun will ich das wenn ich eine Kategorie anklicke die richtigen Bilder dazu erscheinen in der show_pic. Und das bekomme ich nicht hin.

Jetzt besser? Ich hoffe.

 
onemorenerd
12-01-2008, 16:18 
 
Das ist nicht eine Query sondern gleich ein halbes Dutzend. :goth:

<a href="show_pic.php?cat_id=<cat_id>">...</a>
Ist es das, was du suchst?

 
litterauspirna
12-01-2008, 16:41 
 
Ich weis der query ist nicht das was es sein sollte,das ist ja mein Problem.

Mein Link sieht so aus und verweist auch richtig da hin.D

<a href=\"show_thumb.php?id='".$piccat_row['id']."'\">".$piccat_catname."</a>

as Problem ist das richtige anzeigen,sprich ich habe in der Select Anweisung mit dem left join was falsch.

Hier der Select Code noch mal


$bild_result = mysql_query("Select piccat.id,piccat.catname From $tab_piccat
LEFT JOIN $tab_bild ON catid")or die(mysql_error());

while($bild_row = @mysql_fetch_array($bild_result)){

$bild_id = $bild_row['id'];
$bild_catid = $bild_row['catid'];
$bild_bild = $bild_row['bild'];
$bild_view = $bild_row['view'];
}

 
IchBinIch
12-01-2008, 16:53 
 
Warum führst/gibst du die Query mehrfach aus?
Wozu übergibst du in der URL einen Parameter, wenn du diesen nicht verwendest?
Wie viele Zeilen gibt die die genannte Query zurück?
Wie viele Zeilen erwartest du statt dessen?

Deine Frage ist zu generell. Das klingt so, als ob dir jemand den richtigen Code posten soll. Das ist aber nicht unsere aufgabe. (oder was zahlst du? :D)

Also debuggen, und im klaren werden wo dein Problem eigentlich liegt. Wenn du das vernünftig benennen kannst, dann findest du die Lösung so schnell selbst, dass du unsere Hilfe gar nicht mehr brauchst, oder aber - wenn das Brett vorm Kopf so groß ist - können wir dir sagen wo das Problem liegt.

Aber wie gesagt, aktuell sieht es nach nem, "Ich weiß nichts, macht mal!" aus.

 
litterauspirna
13-01-2008, 11:41 
 
Original geschrieben von IchBinIch
Warum führst/gibst du die Query mehrfach aus?
Wozu übergibst du in der URL einen Parameter, wenn du diesen nicht verwendest?
Wie viele Zeilen gibt die die genannte Query zurück?
Wie viele Zeilen erwartest du statt dessen?

Deine Frage ist zu generell. Das klingt so, als ob dir jemand den richtigen Code posten soll. Das ist aber nicht unsere aufgabe. (oder was zahlst du? :D)

Also debuggen, und im klaren werden wo dein Problem eigentlich liegt. Wenn du das vernünftig benennen kannst, dann findest du die Lösung so schnell selbst, dass du unsere Hilfe gar nicht mehr brauchst, oder aber - wenn das Brett vorm Kopf so groß ist - können wir dir sagen wo das Problem liegt.

Aber wie gesagt, aktuell sieht es nach nem, "Ich weiß nichts, macht mal!" aus.

Ganz so wie du es geschrieben hast ist wirklich nicht,auch wenn so hier aussieht. Also ich habe mich damit beschäftigt und ein wenig rechergiert. Also eine Join Anweisung ist hier im Prinzip überhaupt nicht nötig,weil es sich hier bei den beiden Taben um eine 1:n Beziehung handelt,was heist eine Kategorie in der Tabelle piccat kann viele Datensätze aus der Tabelle bild haben. So nun soviel dazu,das Problem was ich habe und denke das da der Fehler liegt ist,das ich entweder in dem Link der Kategorie der auf die id bzw. catid in der Tabelle bild verweisen soll falsch geschrieben ist oder ich in der wehre clausel in der tabelle bild was falsch geschrieben habe. Hier noch mal die Codes zu übersicht


<?php
//Der Code der show_piccat.php wo die Kategorien ausgeldes werden

$piccat_result = mysql_query("Select * From $tab_piccat")or die(mysql_error());
while($piccat_row = @mysql_fetch_array($piccat_result)){
$piccat_id = $piccat_row['id'];
$piccat_catname = $piccat_row['catname'];
echo"
<tr>
<td align=\"left\">
&nbsp;&nbsp;

//der Link der auf die catid in der show_thumb verweisen soll
<a href=\"show_thumb.php?id='".$piccat_row['id']."'\">".$piccat_catname."</a>
</td>
</tr>
";
}
?>


<?php
//das der Code der show_thumb.php wo die Bilder der zugehörigen catid ausgelesen und angezeigt werden sollen

$bild_result = mysql_query("Select * From $tab_bild where catid='".$bild_row['catid']."'")or die(mysql_error());

while($bild_row = @mysql_fetch_array($bild_result)){

$bild_id = $bild_row['id'];
$bild_catid = $bild_row['catid'];
$bild_bild = $bild_row['bild'];
$bild_view = $bild_row['view'];
}


Und hier irgendwo liegt ein Fehler und ich habe gesucht und versucht ihn zu beheben es leider nicht geschafft,vieleicht ist es jetzt besser erklärt und es kann jemand helfen! Ich finde den Fehler nicht.

 
tontechniker
13-01-2008, 11:49 
 
$bild_result = mysql_query("Select * From $tab_bild where catid='".$bild_row['catid']."'")or die(mysql_error()); Wo kommt denn $bild_row hier her? Wenn du da die ID aus der Url eintragen willst musst du natürlich $_GET benutzen. Grundlagen!

 
litterauspirna
13-01-2008, 14:11 
 
Original geschrieben von tontechniker
$bild_result = mysql_query("Select * From $tab_bild where catid='".$bild_row['catid']."'")or die(mysql_error()); Wo kommt denn $bild_row hier her? Wenn du da die ID aus der Url eintragen willst musst du natürlich $_GET benutzen. Grundlagen!


Hallo und danke für die Antwort. Habe das mal geändert aber funktionieren tut es immer noch nicht,es bringt mir keine Ausgabe. So sieht jetzt der Query aus.


$bild_result = mysql_query("Select * From $tab_bild where catid='".$_GET['catid']."'")or die(mysql_error());


Ich verzweifel langsam. Schnief

 
onemorenerd
13-01-2008, 14:25 
 
Bau das mal um zu
$sql = "Select * From $tab_bild where catid='".$_GET['catid']."'";
echo $sql;
$bild_result = mysql_query($sql)or die(mysql_error());
Und in die erste Zeile deines Scripts schreib mal bitte error_reporting(E_ALL);

 
litterauspirna
13-01-2008, 15:00 
 
Original geschrieben von onemorenerd
Bau das mal um zu
$sql = "Select * From $tab_bild where catid='".$_GET['catid']."'";
echo $sql;
$bild_result = mysql_query($sql)or die(mysql_error());
Und in die erste Zeile deines Scripts schreib mal bitte error_reporting(E_ALL);

Also bei der Ausgabe von $sql bringt er mir das hier Select * From bild where catid=''.
Daraus lese ich das er keine ID übergibt bzw lesen kann. Das error_reporting(E_ALL); habe ich in meiner kopf.php die überall eingebunden wird. ich bekomme auser Notice Sachen keine Fehler meldung

 
onemorenerd
13-01-2008, 15:08 
 
Original geschrieben von litterauspirna
Also bei der Ausgabe von $sql bringt er mir das hier Select * From bild where catid=''.
Daraus lese ich das er keine ID übergibt bzw lesen kann.
Du übergibst einen Parameter namens id und willst auf einen namens catid zugreifen.

 
litterauspirna
13-01-2008, 17:13 
 
Also es ist vollbracht ich ahbe den Fehler gefunden. Und der war folgender in dem Link hier.


//so war der Link erst

echo"<a href=\"show_thumb.php?id='".$piccat_row['id']."'\">".$piccat_catname."</a>";

//und so ist er gändert

echo"<a href=\"show_thumb.php?catid=".$piccat_row['id']."\">".$piccat_catname."</a>";


Die Fehler waren die falsche Parameter übergabe und die zwei Kleinen Hochkommas. Nun geht es. Aber trotzdem vielen Dank allen hier für die Mühe der Unterstützung

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 23:16 Uhr.