• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Tabellenspalte zählen Wort

Fabiii321

Mitglied
Hallo,
ich habe eine ganz kurze Frage.
Ich habe hier ein Code um eine Spalte zu zählen.
Man kann aber nur Zählen wenn auch eine Zahl da steht.
Cih will jetzt aber dass er ein bestimmtes Wort zählen soll.

Wie muss ich den Code abändern ?

PHP:
$sum = mysql_query("SELECT SUM(SPALTE) as total FROM TABELLE");
              $result = mysql_fetch_array($sum);
              echo $result["total"];
Vielen Dank
Gruß
Fabi
 
Du willst zählen, wie oft ein gewisses Wort in der Spalte vorkommt?

select wort, count(id) total from TABELLE group by wort;
 
Zuletzt bearbeitet:
Genauer gesagt hast Du einen Quellcode der eine Summierung vornimmt. Dein Ziel ist aber zu zählen wie oft ein String in einer Spalte vorkommt. Das sollte so möglich sein:

Code:
SELECT COUNT(id) anzahl_vorkommen 
FROM TABELLE 
WHERE spalte LIKE '%wort%' 
GROUP BY spalte;
 
Hallo,
vielen Dank für eure Antworten !!!

Hab jetzt hier den Code:
PHP:
<?php
    $sum = ("SELECT COUNT(id) anzahl_vorkommen 
            FROM Standdienst 
            WHERE zeita LIKE '%OK%' 
            GROUP BY zeita;");

Tabelle=Standdienst
Spalte=zeita
Wort was gezählt werden soll=OK

Also immoment funktioniert es noch nicht.
Denke aber dass ich ein Fehler drin hab.
Wie behebe ich diesen.
Will dann das ergebnist ausgeben.

Vielen Dank
Fabi
 
Nein natürlich nicht.
Das ist der gesammte Code:

PHP:
<?php require_once('Connections/DB.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

$maxRows_a = 10;
$pageNum_a = 0;
if (isset($_GET['pageNum_a'])) {
  $pageNum_a = $_GET['pageNum_a'];
}
$startRow_a = $pageNum_a * $maxRows_a;

mysql_select_db($database_DB, $DB);
$query_a = "SELECT * FROM Standdienst ORDER BY Datum DESC";
$query_limit_a = sprintf("%s LIMIT %d, %d", $query_a, $startRow_a, $maxRows_a);
$a = mysql_query($query_limit_a, $DB) or die(mysql_error());
$row_a = mysql_fetch_assoc($a);



if (isset($_GET['totalRows_a'])) {
  $totalRows_a = $_GET['totalRows_a'];
} else {
  $all_a = mysql_query($query_a);
  $totalRows_a = mysql_num_rows($all_a);
}
$totalPages_a = ceil($totalRows_a/$maxRows_a)-1;

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Standdienst</title>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>

<body>


<div class="Tabellentext" id="website">
        <div class="farbiger_Text_rot" id="header1">
          <table width="980" height="53" border="0">
            <tr>
              <td width="347"><a href="index.html"><img src="logo.png" width="250" height="47" /></a></td>
              <td width="617" class="headertext"><a href="index.html" class="headertext">Sommerfest 2013</a></td>
            </tr>
          </table>
        </div>
         
  <div id="header2">
  
  </div>
 
     

    <ul class="Navialink" id="Navi">
             <li><a href="index.html" class="Navialink">Home</a></li>
            <li><a href="Anmeldung.html" class="Navialink">Anmeldung</a></li>
            <li><a href="mitbringen.php" class="Navialink">mitbringen</a></li>
            <li><a href="Standdienst.php" class="Navialink">Standdienst</a></li>
            <li><a href="Hilfe.html" class="Navialink">Hilfe</a></li>
    </ul> 
   
   
  <div id="main">
      <br />
    <h1>Standdienst</h1>
    <form action="Standdienst_Ver.php" method="post">
      <table width="495" border="0" align="center" class="Tabelle">
        <tr>
          <td width="144" align="left" valign="middle" class="Tabelleschrift">Vorname*</td>
          <td width="144" align="left" valign="middle" ><span>Nachname*</span></td>
          <td width="48" align="left" valign="middle" ><span>Klasse*</span></td>
          <td width="144" align="left" valign="middle" ><span>Telefonnummer*</span></td>
        </tr>
        <tr>
          <td align="left" valign="middle"><label for="Vorname"></label>
          <input type="text" name="Vorname" id="Vorname4" tabindex="1" /></td>
          <td align="left" valign="middle"><label for="Nachname"></label>
          <input type="text" name="Nachname" id="Nachname" tabindex="2" /></td>
          <td align="left" valign="middle"><label for="Klasse"></label>
          <input name="Klasse" type="text" id="Klasse" tabindex="3" size="8" /></td>
          <td align="left" valign="middle"><label for="Telefonnummer"></label>
          <input type="text" name="Telefonnummer" id="Telefonnummer" tabindex="4" /></td>
        </tr>
        <tr>
          <td colspan="4" align="left" valign="middle">Bemerkungen</td>
        </tr>
        <tr>
          <td height="45" colspan="4" align="left" valign="middle"><label for="Bemerkungen"></label>
          <textarea name="Bemerkungen" cols="65" rows="3" id="Bemerkungen" tabindex="5"></textarea></td>
        </tr>
      </table>
      <h1>Ich helfe am Sommerfest um...</h1>
      <table width="290" border="0" align="center">
        <tr align="center">
          <td width="36">16.00</td>
          <td width="36">17.00</td>
          <td width="36">18.00</td>
          <td width="36">19.00</td>
          <td width="36">20.00</td>
          <td width="36">21.00</td>
          <td width="27">Abbau</td>
        </tr>
        <tr align="center">
          <td><input type="checkbox" name="zeita" id="zeita" tabindex="6" value="OK"/>
          <label for="16.00"></label></td>
          <td><input type="checkbox" name="zeitb" id="zeitb" value="OK" />
          <label for="17.00"></label></td>
          <td><input type="checkbox" name="zeitc" id="zeitc" value="OK"/>
          <label for="18.00"></label></td>
          <td><input type="checkbox" name="zeitd" id="zeitd" value="OK"/>
          <label for="19.00"></label></td>
          <td><input type="checkbox" name="zeite" id="zeite" value="OK"/>
          <label for="20.00"></label></td>
          <td><input type="checkbox" name="zeitf" id="zeitf" value="OK"/>
          <label for="21.00"></label></td>
          <td><input type="checkbox" name="Abbau" id="Abbau" value="OK"/>
          <label for="Abbau"></label></td>
        </tr>
      </table>
      <h1>mit      </h1>
      <p>
        <input type="submit" name="Senden" id="Senden" value="Senden" />
        <input type="reset" name="Zurücksetzen" id="Zurücksetzen" value="Zurücksetzen" />
      </p>
      <h3>*Pflichtfeld<br />
      </h3>
    
    </form>
    
    <?php
    $sum = ("SELECT COUNT(id) anzahl_vorkommen 
            FROM Standdienst 
            WHERE zeita LIKE '%OK%' 
            GROUP BY zeita;");
              echo $sum;  
    ?>
    <p>&nbsp;</p>
    <table width="878" height="81" border="1" align="center">
      <tr>
        <td width="215" height="35" align="center"><h3>Name</h3></td>
        <td width="70" align="center"><h3>Klasse</h3></td>
        <td width="70" align="center"><h3>16.00</h3></td>
        <td width="70" align="center"><h3>17.00</h3></td>
        <td width="70" align="center"><h3>18.00</h3></td>
        <td width="70" align="center"><h3>19.00</h3></td>
        <td width="70" align="center"><h3>20.00</h3></td>
        <td width="70" align="center"><h3>21.00</h3></td>
        <td width="70" height="10" align="center"><h3>Abbau</h3></td>
      </tr>
      <?php do { ?>
      
      
      
      
      
      
      
        <tr>
          <td align="center"><?php echo $row_a['Vorname']; ?> <?php echo $row_a['Nachname']; ?></td>
          <td align="center"><?php echo $row_a['Klasse']; ?></td>


          <td align="center" class="color<?php echo $row_a['zeita']; ?>"><?php echo $row_a['zeita']; ?></td>
          <td align="center" class="color<?php echo $row_a['zeitb']; ?>"><?php echo $row_a['zeitb']; ?></td>
          <td align="center" class="color<?php echo $row_a['zeitc']; ?>"><?php echo $row_a['zeitc']; ?></td>
          <td align="center" class="color<?php echo $row_a['zeitd']; ?>"><?php echo $row_a['zeitd']; ?></td>
          <td align="center" class="color<?php echo $row_a['zeite']; ?>"><?php echo $row_a['zeite']; ?></td>
          <td align="center" class="color<?php echo $row_a['zeitf']; ?>"><?php echo $row_a['zeitf']; ?></td>
          <td align="center" class="color<?php echo $row_a['Abbau']; ?>"><?php echo $row_a['Abbau']; ?></td>

            
        
            
            
          
        </tr>
        <?php } while ($row_a = mysql_fetch_assoc($a)); ?>
        
    </table>
    <p>&nbsp;</p>
    <?php

    ?>
  </div>
      
                
</div>

</body>
</html>
<?php
mysql_free_result($a);
?>


Vielen Dank
Gruß
Fabi

Der entscheidene Teil steht ziemlich weit unten.
 
Hallo,
vielen Dank für deine Antwort !!!

Wie meinst du das so:
PHP:
<?php
    $sum = ("SELECT COUNT(id) anzahl_vorkommen 
            FROM Standdienst 
            WHERE zeita LIKE '%OK%' 
            GROUP BY zeita;");
     $sumres = mysql_query($sum); 
     echo "Es haben sich schon $sumres Leute Angemeldet";
    ?>

Es funktioniert so immer noch nicht.

Hier nochmal meine Daten:
Das Wort was gezählt werden soll = OK
Tabelle = Standdienst
Tabellenspalte = zeita

Wie muss ich das dann machen.
Wäre dir sehr, sehr dankbar wenn du mir das verraten könntest.

Vielen Dank
Vielen Grüße
Fabian
 
Bitte informiere dich nochmal was mysql_query() zurück gibt und wie Du an die Ergebnisse eines Statement kommst - so nämlich nicht.

Tipp: mysql_fetch_array() anschauen.
 
Bitte auch über das EVA-Prinzip informieren (und Code – noch mehr ;) – in Funktionen auszulagern, wäre auch nicht schlecht). Das macht solche Skripte erheblich übersichtlicher und pflegeleichter.

- EVA Prinzip - PHP Forum: phpforum.de

Fürs Debugging von MySQL-Abfragen ist vielleicht dieser Eintrag interessant: Debugging:SQL - PHP.de Wiki

(Wobei man hinzufügen sollte, dass der mysql-Adapter veraltet ist. Standardantwort zu veraltete mysql-Extension - PHP Forum: phpforum.de)

Ich hätte die Query selbst spontan so verfasst:

Code:
SELECT COUNT(*) AS anzahl
FROM tabelle
WHERE spalte LIKE '%begriff%'

Das Gruppieren kommt mir da etwas seltsam vor.
 
Hallo,
erstmal vielen Dank für deine Antwort !!!

Habs jetzt auch umgeändert geh aber davon aus dass ich es falsch umgeändert habe. (Es funktioniert nämlich nicht.
Kommte eine Fehlermeldung:
Warning: mysql_fetch_array() expects parameter 1 to be resource, string given in /var/customers/webs/fabiii9/sommer/Standdienst.php on line 166 Call Stack: 0.0003 695152 1. {main}() /var/customers/webs/fabiii9/sommer/Standdienst.php:0 0.0019 706224 2. mysql_fetch_array() /var/customers/webs/fabiii9/sommer/Standdienst.php:166 Es haben sich schon Leute Angemeldet

Ich habe auch davon erlichgesagt keine Ahnung.
SO hab ichs geändert:
PHP:
<?php
    $sum = ("SELECT COUNT(id) anzahl_vorkommen 
            FROM Standdienst 
            WHERE zeita LIKE '%OK%' 
            GROUP BY zeita;");
     $sumres = mysql_fetch_array($sum); 
     echo "Es haben sich schon $sumres Leute Angemeldet";
    ?>

Daher habe ich eine Frage.
Ich weis dass man sowas eigentlich nicht macht aber könntest du mir diesen Code sagen wie ich es dann schaffe dass des passiert was ich will ???
Wäre wirklich toll von dir.
Ich bin dann auch mit der Website fertig.
Kommen also keine Frage mehr.

Oder kennst du irgendein Video wo des mit dem Zählen von Wörtern erklärt wird.
Weis einfach nicht mehr nach was ich noch suchen soll.

Vielen, vieln Dank

Grüße
Fabian
 
Code:
SELECT COUNT(*) AS anzahl
FROM tabelle
WHERE spalte LIKE '%begriff%'

Das Gruppieren kommt mir da etwas seltsam vor.

Ja, weil die Fragestellung nicht deutlich war. Das von threadi vorgeschlagene Gruppieren war selbstverständlich sinnlos. Ich dachte der Ersteller des Themas wollte die verschiedenen Wörter zählen, die in der Spalte vorkamen.
 
Hallo,
Tut mir Leid wenn ich mich schlecht ausgedrückt habe.
Also in dieser Spalte steht entweder "OK" oder nichts.
Diese Spalte wird nämlich mit einem Auswahlfeld "angesprochen".

Ich will jetzt zählen wie oft praktisch das Wort OK drinsteht.

Dafür bräuchte ich einen Code.
Tut mir leid für diese Missverständnis.

Vielen Dank
Gruss
Fabi
 
Hallo,
erstmal vielen Dank für deine Antwort !!!

Habs jetzt auch umgeändert geh aber davon aus dass ich es falsch umgeändert habe. (Es funktioniert nämlich nicht.
Kommte eine Fehlermeldung:
Warning: mysql_fetch_array() expects parameter 1 to be resource, string given in /var/customers/webs/fabiii9/sommer/Standdienst.php on line 166 Call Stack: 0.0003 695152 1. {main}() /var/customers/webs/fabiii9/sommer/Standdienst.php:0 0.0019 706224 2. mysql_fetch_array() /var/customers/webs/fabiii9/sommer/Standdienst.php:166 Es haben sich schon Leute Angemeldet

Ich habe auch davon erlichgesagt keine Ahnung.
SO hab ichs geändert:
PHP:
<?php
    $sum = ("SELECT COUNT(id) anzahl_vorkommen 
            FROM Standdienst 
            WHERE zeita LIKE '%OK%' 
            GROUP BY zeita;");
     $sumres = mysql_fetch_array($sum); 
     echo "Es haben sich schon $sumres Leute Angemeldet";
    ?>

Du musst deinen Query (in deinem Falle $sum) ersteinmal ausführen (mittels mysql_query()). Daraus bekommst du eine resource, die du dann mit mysql_fetch_array() als Array darstellen kannst. Nichts anderes sagt dir die Fehlermeldung.
 
Hallo,
vielen Dank für deine Antwort.
Habs jetzt geändert in:
PHP:
<?php
                $sum = ("SELECT COUNT(id) anzahl_vorkommen 
                FROM Standdienst 
                WHERE zeita LIKE '%OK%' ;");
                 $sumresa = mysql_query($sum); 
                 $sumresb = mysql_fetch_array($sumresa);
                 echo "Es haben sich schon $sumresb Leute Angemeldet";
         ?>

funktioniert aber immer noch nicht.
Es kommt dieser Fehler:

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /var/customers/webs/fabiii9/sommer/Standdienst.php on line 172 Call Stack: 0.0004 711544 1. {main}() /var/customers/webs/fabiii9/sommer/Standdienst.php:0 0.0013 723776 2. mysql_fetch_array() /var/customers/webs/fabiii9/sommer/Standdienst.php:172 Es haben sich schon Leute Angemeldet

Weis nicht mehr was ich machen soll.

Vielen Dank

Gruß
Fabi
 
Es kommt dieser Fehler:

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /var/customers/webs/fabiii9/sommer/Standdienst.php on line 172 Call Stack: 0.0004 711544 1. {main}() /var/customers/webs/fabiii9/sommer/Standdienst.php:0 0.0013 723776 2. mysql_fetch_array() /var/customers/webs/fabiii9/sommer/Standdienst.php:172 Es haben sich schon Leute Angemeldet

Diese Fehlermeldung sagt dir, dass $sumresa kein resource, sondern ein Boolean ist (sprich TRUE oder FALSE). Per Definition gibt mysql_query() bei SELECT-Abfragen nur dann FALSE zurück, wenn irgendetwas schief gelaufen ist.
Vielleicht versuchst du mal "anzahl_vorkommen" aus deinem Query rauszunehmen bzw zu schreiben "AS anzahl_vorkommen"
 
Im Zweifel bei so was immer debuggen. Siehe etwa mein Link dazu in #10. mysql_error liefert meist recht genau, wo das Problem liegt.
 
Am besten probierst du deine Abfragen im phpmyadmin aus, dann siehst du ob diese funkioniert und in welcher Form du die Werte zurueckbekommst...

Die Abfragen musst du dafuer natuerlich ein wenig umbauen (Variablen,...)

lg
 
Zurück
Oben