[PHP | MySQL] Abfrage bei id=... zählen.

Claas M

Erfahrenes Mitglied
Hallo.

Ich habe (mal wieder) ein 'kleines' Problemchen, welches sich vielleicht doch einfacher lösen lässt als ich es vermute.

Also ich habe eine Tabelle in der DB, welche die Kommentare zu den News auf meiner Homepage beinhaltet. Nun 'sortiere' ich die einzelnen newsid's (aufmerksame Leser des Forums wissen was ich meine) das heißt, dass jeder Kommentar zu 'seiner News' geordnet wird. Nun möchte ich aber zählen, wieviele Kommentare mit der newsid=3 (z.B.) sind. Alle Versuche (Array erstellen und dann zählen) ergeben immer die summe der gesamten einträge der Tabelle.

Wenn Ihr wollt, kann ich den Code posten damit Ihr ein besseres Verständnis davon bekommt.
 
PHP:
$result = mysql_query("SELECT * FROM kommentartabelle WHERE `newsid` = x");
$anzahl = mysql_num_rows($result);

Das könnte das sein, was du dir vorgestellt hast? (Da die WHERE-Anweisung ja sicher dynamisch sein soll, denke ich, musst du die vorher (oder auch in der gleichen Query) entsprechend auslesen.)
 
PHP:
SELECT COUNT(*) AS kommentare FROM tbl_name WHERE comment_news_id = 3

Gruß
Marvin

(Ich hoffe das ist, was du wolltest.)
 
PHP:
<?php
	include ("mysql.php");
	include ("settings.php");
	
    $select = mysql_query("SELECT * FROM $newstable ORDER by id DESC");
    $reihen = mysql_num_rows($select);
	
	$selectcomments = mysql_query("SELECT * FROM $commentstable WHERE NEWSID = '$comment' ORDER by id DESC");
    $reihencomments = mysql_num_rows($selectcomments);
	$resultcomments = mysql_query("SELECT * FROM $commentstable WHERE NEWSID = '$comment' ORDER by id DESC");
    //hier bitte die anzahl der anzuzeigenden Seiten eingeben
	//         |
	//         V
	$seiten = "5";
	$startwert = 1/$seiten;
	$zeigen = floor($reihen / $seiten);
    
	if(!$start) { $start = $startwert; }
    
    $result = mysql_query("SELECT * FROM $newstable ORDER by id DESC limit $start,$seiten");
    echo "<center><table width='400' border='0' cellpadding='0' cellspacing='0' style='border-collapse:collapse;'><br>";
        while ($zeile = mysql_fetch_array($result)) 
		{
		//Header
		echo "<tr><td height='7' width='2' background='images/$template/newsheader_links.jpg'></td>
					<td height='7' width='396' background='images/$template/newsheader_mitte.jpg'></td>
					<td height='7' width='2' background='images/$template/newsheader_rechts.jpg'></td></tr>";
		// Autor
		echo "<tr><td class='verdanaorange' colspan='2' align='left'><b>Autor:<a href='index.php?action=userdetails&id=$zeile[1]'> $zeile[2]</a></b> ($zeile[4] | $zeile[5])</td></tr>";
		//Text
		echo "<tr><td class='verdanaorange' colspan='2' align='left'><img src='images/$template/$zeile[6]' height='32' width='32' align='left' vspace='10' hspace='10'>$zeile[3]</td></tr>";
		//Leerspalte
		echo "<tr><td height='11' colspan='2'></td>";
		
		//Hier beginnt das Einlesen der News aus der Kommentartabelle
		$bild = "images/v2/kommentareoeffnen.jpg";
		if($open != 1)
			{
			?>
			<tr>
				<td colspan='2'>
					<a href="index.php?action=news&open=1&comment=<?php echo $zeile[0]; ?>">
						<img src="<?php echo $bild; ?>" height="11" width="11" border="0">
					</a>
				</td>
			  </tr>
			  <?php
			}
			else
			{
				if($zeile[0] == $comment)				
				{
					$bild = "images/v2/kommentareschliessen.jpg";
					?>
					<tr>
					<td colspan='2'>
						<a href="index.php?action=news&open=0&comment=<?php echo $zeile[0]; ?>">
							<img src="<?php echo $bild; ?>" height="11" width="11" border="0">// Hier soll die anzahl der jeweiligen Kommentare stehen.
						</a>
					</td>
				  </tr>
				  <?php
					  while ($kommentar = mysql_fetch_array($resultcomments)) 
						{ ?>
				  <tr>
				  	<td colspan="2">
								<table width="396" cellpadding="0" cellspacing="0">
							<tr align="left">
							<td width="50"></td>
							<td width="50" valign="top"><b></b><?php echo $kommentar[2]; ?></b></td>
							<td valign="top"><?php echo $kommentar[3]; ?></td>
						  </tr>
						  <tr>
						  <td colspan="3">&nbsp;</td>
						  </tr>
						  </table>
					</td>
				  </tr>
				  <?php
						 };
						?>
				  <tr>
					<td colspan='2'>
											<?php 
											// Hier werden die Eingabefelder für die Kommentare erstellt
											// Hier geschieht das Eintragen des Kommentares
											
											?>
											<form action='index.php?action=news&newsid=<?php echo $zeile[0]; ?>' method='post'>
												<table>
													<tr>
														<td width='100'>
															Name:
														</td>
														<td>
															<input type='text' name='nick' value='' size='20' >
														</td>
													</tr>
													<tr>
														<td width='100'>
															Kommentar:
														</td>
														<td>
															<input type='text' name='kommentar' value=''>
														</td>
													</tr>
													<tr>
														<td colspan='3'>
															<center>
																<input type='hidden' name='newkomment' value='$newkomment'>
																<input type='submit' name='newkomment' value='Kommentieren'>
															</center>
														</td>				
													</tr>
												</table>
												</form>
											</td>
										  </tr>
							</td>
							<td></td>
						</tr>
											<?php
											
				}
			};
		
		//Hier ist es zu Ende
		echo "<tr><td height='11' colspan='2'></td>";					
		echo "<tr><td height='7' width='2' background='images/$template/newsfooter_links.jpg'></td>
					<td height='7' width='396' background='images/$template/newsfooter_mitte.jpg'></td>
					<td height='7' width='2' background='images/$template/newsfooter_rechts.jpg'></td></tr>";
        echo "<tr><td class='verdanaorange' colspan='2' align='left'>&nbsp;</td></tr>";
		echo "<tr><td class='verdanaorange' colspan='2' align='left'>&nbsp;</td></tr>";
    	}
    echo "</table></center>";
//hier beginnt die Anzeige der einzelnen Tabellen	
	echo "<center><table><tr>";
	
	$zurueck = $start - $seiten;
	if($startwert < $zurueck) {
            echo "
						<td height='9'>
							<a href=\"$PHP_SELF?start=$zurueck\">
								<img src='images/$template/zurück.gif' height='9' width='9' border='0'>
							</a>
						</td>
				";
    }
		echo "
				<td height='9'>
					&nbsp;&nbsp;
						<a href=\"#top\">
							<img src='images/$template/nachoben.gif' height='9' width='9' border='0'>
						</a>
					</td>
				";

	$weiter = $start + $seiten;
    if($weiter < $reihen) {
            echo "
					<td height='9'>
						&nbsp;&nbsp;
							<a href=\"$PHP_SELF?start=$weiter\">
								<img src='images/$template/vorwärts.gif' height='9' width='9' border='0'>
							</a>
					</td>
				";
    }
	echo "</tr></table></center>";
	
	
	if(isset($newkomment))
												{
													$new = "INSERT INTO $commentstable (newsid, name, text) VALUES ('$newsid', '$nick', '$kommentar')";
													mysql_query($new) OR die(mysql_error());
													exit;
												};
?>


Also dynamisch errechnen, wieviele Werte das Array bei 1 oder 2 oder 3 hat und dann anzeigen.
 
Zurück