---
title: "Datenbankabfrage ob Datensatz existiert"
url: "https://www.typo3.net/d/62516-datenbankabfrage-ob-datensatz-existiert"
source: "typo3.net"
tags: ["TYPO3","TypoScript","Datenbank","Frage"]
created: "2007-05-15"
last_reply: "2007-05-21"
replies: 3
solved: false
page: 1
pages: 1
lang: "de"
---

# Datenbankabfrage ob Datensatz existiert

TYPO3 › TypoScript · 3 Antworten · gestartet 2007-05-15

## Eröffnungsbeitrag

**nicokaiser** · 2007-05-15 · [Beitrag #1](https://www.typo3.net/d/62516-datenbankabfrage-ob-datensatz-existiert/1)

Hallo Typo3-Gemeinde,

sitze gerade vor folgenden Problem, ich möchte in Typoscript eine Abfrage von der Tabelle tx_pbsurvey_results machen und dort prüfen ob ein Datensatz mit der userid(userid des aktuellen eingeloggten nutzers) finished=1 und einer bestimmten Frageid existiert.

nur leider komme ich da in TypoScript nicht klar.

Grüße

Nico Kaiser

## Antworten

### [#2](https://www.typo3.net/d/62516-datenbankabfrage-ob-datensatz-existiert/2) · nicokaiser · 2007-05-16

So nach langer BAstelarbeit hab eich ein erstes Ergebnis

```typoscript
page.20 = CONTENT
   page.20 {
      table = tx_pbsurvey_results
      select {
         pidInList = 81
         selectFields = count(*) as count
         where = (finished=1)
      }
      renderObj = COA
      renderObj {
      10 = TEXT
      10.field = count
      10.wrap = <h2>* | * </h2>
      }
  }
```

hiermit bekomme ich die Gesamtanzahl der Datensätze, die fertig bearbeitet sind. Jetzt will ich aber das WHERE so erweitern, das nur die Datensätze angezeigt werden, die zum aktuellen Nutzer gehöhren. Also muss ich irgendwie glob:TSFE:fe_user:user:uid mit in mein WHERE einbeziehen. Nur finde ich hierzu keine Lösung.

Weiter möchte ich das Ergebnis was beim Select raus kommt, gerne für eine Condition verwenden. Wie kann ich das machen?

Grüße

Nico Kaiser

### [#3](https://www.typo3.net/d/62516-datenbankabfrage-ob-datensatz-existiert/3) · nicokaiser · 2007-05-16

So nun habe ich auch das hinbekommen, jetzt macht er eine abfrag eund zeigt nur die Datensätze des aktuellen eingeloggten nutzers an.

```typoscript
page.20 = CONTENT
   page.20 {
      table = tx_pbsurvey_results
      select {
         pidInList = 81
         selectFields = count(*) as count
         where = (finished=1)
         andWhere{
          data = glob:TSFE:fe_user:user:uid
          wrap = tx_pbsurvey_results.user=|
         }
      }
      renderObj = COA
      renderObj {
      10 = TEXT
      10.field = count
      10.wrap = <h2>* | * </h2>
      }
  }
```

jetzt habe ich nur noch ein caching Problem. Jedesmal wenn sich in der DB was ändert muss ich den FE Cache leeren. Wie kann ich das in TypoScript lösen, das änderungen in der DB gleich im FE sichtbar sind.

Weiter weiß ich noch nicht, wie ich das Ergebnis aus dem Select für meine Condition verwenden kann.

Grüße

Nico Kaiser

### [#4](https://www.typo3.net/d/62516-datenbankabfrage-ob-datensatz-existiert/4) · nicokaiser · 2007-05-21

Hallo Typo3-Gemeinde,

habe jetzt das Problem lösen können, jedoch auf einer anderen Art. Mittels userFunc wird ein php-Script aufgerufen. Diesem Script wird der Parameter qpid mitgeliefert. Qpid enthält die ID des Ordner wo die Fragen enthalten sind welche über die Function javascript:opener.questionpop('.$qpid.') aufgerufen wird. Das PHP Script liefert einen kompletten <body>-Tag zurück, den ich in meinen Fenster einbinde. Weiter prüft das PHP-Script, ob der aktuelle Nutzer den Fragebogen bereits ausgefüllt hat. Wenn er dies noch nicht erledigt hat, wird der Fragebogen in einem neuen Fenster aufgerufen.

```typoscript
config.no_cache = 1
includeLibs.popupstring = fileadmin/scripts/popupstring.php 
 temp.info = USER 
 temp.info { 
   userFunc = user_popupstring->main 
   qpid=81
 } 
   

[browser = msie]
   temp.js= COA
   temp.js{
      10 = TEXT
      10.value = <script language="javascript" src="typo3conf/ext/oc_stream/pi1/res/ie-mplayer.js"></script>
   }
   page.headerData.999 = COA
   page.headerData.999 < temp.js
   page.bodyTagCObject < temp.info
[ELSE]
 page.bodyTagCObject < temp.info
[global]
```

```php
<?php
 class user_popupstring { 
 var $cObj;// The backReference to the mother cObj object set at call time 
 
 function main($content,$conf){ 
 # $browser (msie, oder anderer)
 # $userid (aktuelle userid)
 # $qpid (question page ordner)
 $qpid = $conf["qpid"];
 $browser_str = '';
 $userid = $GLOBALS['TSFE']->fe_user->user['uid'];
 
 $result = $GLOBALS['TYPO3_DB']->exec_SELECTquery('count(*)','tx_pbsurvey_results','finished=1 AND user='.$userid.' AND pid = '.$qpid.'');
 $result = $GLOBALS['TYPO3_DB']->sql_fetch_row($result);
 if (strstr($_SERVER['HTTP_USER_AGENT'],'MSIE')){
  $browser_str = 'onload="loader()" onunload="javascript:ende(2)"';
 } else  {
  $browser_str = 'onload="initPresentation()"'; 
 }
  
 if ($result[0]==0){
  $content.= '<body '.$browser_str.' onunload="javascript:opener.questionpop('.$qpid.')">';
 } else {
  $content.= '<body '.$browser_str.'>';
 };
 return $content; 
 }
} 
?>
```

---

Quelle: „Datenbankabfrage ob Datensatz existiert“, typo3.net, https://www.typo3.net/d/62516-datenbankabfrage-ob-datensatz-existiert
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
