---
title: "Zufälligen Datensatz holen"
url: "https://www.typo3.net/d/6508-zufaelligen-datensatz-holen"
source: "typo3.net"
tags: ["Allgemein","Frage"]
created: "2003-10-15"
last_reply: "2006-01-07"
replies: 7
solved: false
page: 1
pages: 1
lang: "de"
---

# Zufälligen Datensatz holen

Allgemein · 7 Antworten · gestartet 2003-10-15

## Eröffnungsbeitrag

**computerdoktor** · 2003-10-15 · [Beitrag #1](https://www.typo3.net/d/6508-zufaelligen-datensatz-holen/1)

Hallo,

ich habe folgendes "Problem":

```typoscript
temp.ao_bannercode = COA 
temp.ao_bannercode { 
    10 = CONTENT 
    10 { 
        stdWrap.required = 1 
        stdWrap.wrap = {$plugin.ao_bannercodes.stdWrap} 
        table = tx_aobannercodes_bannercodes 
        select { 
            pidInList = {$plugin.ao_bannercodes.pid} 
            orderBy = sorting 
        } 
        renderObj = TEXT 
        renderObj.field = bannercode 
        renderObj.wrap = {$plugin.ao_bannercodes.wrap} 
    } 
}
```

Dieser Code (aus der Extension ao_bannercodes) holt mir alle Banner aus meinen Recods. Soll er aber nicht, ich will immer nur ein Banner. Einen Teil der Aufgabe habe ich bereits gelöst, mit

```typoscript
temp.ao_bannercode = COA 
temp.ao_bannercode { 
    10 = CONTENT 
    10 { 
        stdWrap.required = 1 
        stdWrap.wrap = {$plugin.ao_bannercodes.stdWrap} 
        table = tx_aobannercodes_bannercodes 
        select { 
            pidInList = {$plugin.ao_bannercodes.pid} 
            ############
            max = 1
            ############
            orderBy = sorting 
        } 
        renderObj = TEXT 
        renderObj.field = bannercode 
        renderObj.wrap = {$plugin.ao_bannercodes.wrap} 
    } 
}
```

bekomme ich nur mehr den ersten Satz.
Ich möchte aber irgendeinen Satz. Ich dachte, dass das mit

```typoscript
begin = random
```

oder etwas in der Richtung gehen müsste - finde aber dazu nichts in der Doku.

Kann mir wer weiterhelfen?

lg

Herbert

## Antworten

### [#2](https://www.typo3.net/d/6508-zufaelligen-datensatz-holen/2) · computerdoktor · 2003-10-16

allerdings nicht mit "Bordmittel" TS, sondern mit einer sehr guten Extension, die ich dann nur mehr aufbohren musste: RandomRecords.

Damit kann man nun zusätzlich bestimmen, aus welchen Bannern jeweils ein zufälliges auf der Seite angezeigt werden soll. Zudem kann man Banner damit nun als "normalen" Content anzeigen lassen.

Die Codeänderung muss man in class.tx_jhrandomrecords_pi1.php vornehmen:

```php
<?php

require_once(PATH_tslib."class.tslib_content.php");

class ux_tslib_cObj extends tslib_cObj {

	function RECORDS($conf)	{

		$theValue="";

		$originalRec=$GLOBALS["TSFE"]->currentRecord;	

                                
		if ($originalRec)	{		// If the currentRecord is set, we register, that this record has invoked this function. It's should not be allowed to do this again then!!
			$GLOBALS["TSFE"]->recordRegister[md5($originalRec)]++;
		}

		$conf["source"] = $this->stdWrap($conf["source"],$conf["source."]);
 
		if ($conf["tables"] && $conf["source"]) {
			$allowedTables = $conf["tables"];
                                                $allowedTables.=","."tx_aobannercodes_bannercodes";
			if (is_array($conf["conf."]))	{
				reset($conf["conf."]);
				while(list($k)=each($conf["conf."]))	{
					if (substr($k,-1)!=".")		$allowedTables.=",".$k;
				}
			}

			$loadDB = t3lib_div::makeInstance("FE_loadDBGroup");
			$loadDB->start($conf["source"], $allowedTables);
			reset($loadDB->tableArray);
			while(list($table,)=each($loadDB->tableArray))	{
				if (is_array($GLOBALS["TCA"][$table]))	{
					$loadDB->additionalWhere[$table]=$this->enableFields($table);
				}
			}
			$loadDB->getFromDB();

			reset($loadDB->itemArray);
			$data = $loadDB->results;

			$cObj =t3lib_div::makeInstance("tslib_cObj");
			$cObj->setParent($this->data,$this->currentRecord);
			$this->currentRecordNumber=0;
			$this->currentRecordTotal = count($loadDB->itemArray);

			$random = 0;
			if ($this->stdWrap($this->cObjGet($conf["conf."]["random."], "conf.random"),$conf["conf."]["random."])) {
				mt_srand((double)microtime()*1000000);
				$random = mt_rand(1, $this->currentRecordTotal);
			}

			reset($loadDB->itemArray);
			while(list(,$val)=each($loadDB->itemArray))	{
				$row = $data[$val["table"]][$val["id"]];
				if (!$conf["dontCheckPid"])	{
					$row = $this->checkPid($row["pid"]) ? $row : "";
				}
				if ($row && !$GLOBALS["TSFE"]->recordRegister[md5($val["table"].":".$val["id"])])	{

                                                                                if ($val["table"]=="tx_aobannercodes_bannercodes") {
                                                                                       $renderObjName = "";
                                                                                       $renderObjKey = "";
                                                                                       $renderObjConf = "";
                                                                                } 
                                                                                if (!($val["table"]=="tx_aobannercodes_bannercodes")) {
					       $renderObjName = $conf["conf."][$val["table"]] ? $conf["conf."][$val["table"]] : "<".$val["table"];
					       $renderObjKey = $conf["conf."][$val["table"]] ? "conf.".$val["table"] : "";
					       $renderObjConf = $conf["conf."][$val["table"]."."];
                                                                                }

					$this->currentRecordNumber++;
					$GLOBALS["TSFE"]->currentRecord=$val["table"].":".$val["id"];
					$this->lastChanged($row["tstamp"]);
					$cObj->start($row,$val["table"]);

					if ($random == 0 || $random == $this->currentRecordNumber) {
						if ($GLOBALS["TSFE"]->config["config"]["insertDmailerBoundaries"])	{$theValue.="<!--DMAILER_SECTION_BOUNDARY_".intval($row["module_sys_dmail_category"])."-->";}
                                                                                                
                                                                                                if ($val["table"]=="tx_aobannercodes_bannercodes") {
                                                                                                             $theValue.=$cObj->data[bannercode];
                                                                                                }
                                                                                                if ($val["table"]!=="tx_aobannercodes_bannercodes") {
  						             $theValue.=$cObj->cObjGetSingle($renderObjName, $renderObjConf, $renderObjKey);
                                                                                                }
						if ($GLOBALS["TSFE"]->config["config"]["insertDmailerBoundaries"])	{$theValue.="<!--DMAILER_SECTION_BOUNDARY_END-->";}
					}
				}
			}
		}
		$GLOBALS["TSFE"]->currentRecord=$originalRec;
		return $this->wrap($theValue,$conf["wrap"]);
	}


}



if (defined("TYPO3_MODE") && $TYPO3_CONF_VARS[TYPO3_MODE]["XCLASS"]["ext/jh_random_records/pi1/class.tx_jhrandomrecords_pi1.php"])	{
	include_once($TYPO3_CONF_VARS[TYPO3_MODE]["XCLASS"]["ext/jh_random_records/pi1/class.tx_jhrandomrecords_pi1.php"]);
}

?>
```

Das anhaken von "Random" im Content nicht vergessen...

lg

Herbert

### [#3](https://www.typo3.net/d/6508-zufaelligen-datensatz-holen/3) · computerdoktor · 2003-10-16

die Antwort fällt nun nicht mehr wirklich in das Thema "Anfängerfragen" ...

lg

Herbert

### [#4](https://www.typo3.net/d/6508-zufaelligen-datensatz-holen/4) · Mike Maier · 2003-11-16

orderBy = rand()
max = 1

Geht ab mysql 3.23

> **computerdoktor schrieb:**
>
> Hallo,
>
> ich habe folgendes "Problem":
>
> ```typoscript
> temp.ao_bannercode = COA 
> temp.ao_bannercode { 
>     10 = CONTENT 
>     10 { 
>         stdWrap.required = 1 
>         stdWrap.wrap = {$plugin.ao_bannercodes.stdWrap} 
>         table = tx_aobannercodes_bannercodes 
>         select { 
>             pidInList = {$plugin.ao_bannercodes.pid} 
>             orderBy = sorting 
>         } 
>         renderObj = TEXT 
>         renderObj.field = bannercode 
>         renderObj.wrap = {$plugin.ao_bannercodes.wrap} 
>     } 
> }
> ```
>
> bekomme ich nur mehr den ersten Satz.
> Ich möchte aber irgendeinen Satz. Ich dachte, dass das mit
>
> Herbert

### [#5](https://www.typo3.net/d/6508-zufaelligen-datensatz-holen/5) · SpeedyBZ · 2004-10-31

hallo,

ich habe mir jetzt mal das **"ao_bannercodes"** und **"jh_random_records"** installiert.
dann habe ich in **"jh_random_records"** die änderungen vorgenommen die **computerdoktor** gepostet hat.
doch nun stehe ich vor dem problem, das ich den haken **"random"** nirgends finden kann  o.O

funktioniert diese lösung nicht mehr mit typo 3.7.0 ?
oder hat noch jemand eine andere lösung?

das mit dem **orderBy = rand()** funktioniert zwar, aber mit **random_records** muss es ja auch irgendwie gehen.

habe auch mal die änderungen von **herbert lackner** von hier [/d/12158-bannerwechsel-zanox-affilinet-etc/6](https://www.typo3.net/d/12158-bannerwechsel-zanox-affilinet-etc/6) probiert. aber auch dort kein **"random"** zu finden.

bin für jede hilfe dankbar.

gruß micha

### [#6](https://www.typo3.net/d/6508-zufaelligen-datensatz-holen/6) · SpeedyBZ · 2004-10-31

ok.. kommando zurück.. hat sich erledigt.....  #giggle#  #giggle#  #giggle#

hab es jetzt gefunden durch zufall  :o

für alle die es vielleicht auch noch suchen bzw. noch suchen werden:

auf die seite gehen wo der werbebanner eingeblendet werden soll -> neuen Datensatz in der Seite einfügen z.Bsp "normaler Text" (**nicht anlegen sondern einfügen**)  ;) -> dann den Typ auf "**Datensatz einfügen**" -> entsprechenden Sysordner auswählen bei Objekte -> und dann ist auch unten der Haken zu setzen/finden

so einfach kann es sein wenn man weiß wie  #giggle#
könnte natürlich auch sein das es einen einfacheren weg gibt, aber das ist der einzigste den ich bis jetzt gefunden habe

gruß micha

### [#7](https://www.typo3.net/d/6508-zufaelligen-datensatz-holen/7) · mamo · 2005-09-28

Bei mir klappt das tatsächlich auch. Danke für die Tipps.
Allerdings ergibt sich gleich ein neues Problem: Damit beim neu Laden zufällig ein anderer Datensatz ausgewählt wird, muss ich auf der Seite den Cache deaktivieren. Der ist aber nötig, damit die Indexed Search korrekt läuft. Gibt es eine Möglichkeit, diese Schwanzbeisserei zu umgehen?

Gruss
mamo

### [#8](https://www.typo3.net/d/6508-zufaelligen-datensatz-holen/8) · RT-Schwabe · 2006-01-07

HAllo

bei mir werden alle Datensätze die in dem SysOrdner liegen angezeigt und nicht nur einer per Zufall ausgewählt. Der Haken ist gesetzt.

Ich habe Version 3.8.1

Ich habe gelesen, dass es da ein Problem bei dieser Version gibt. Wurde das inzwischen gelöst oder hat jemand einen Tipp für mich?

Gruß
Thorsten

---

Quelle: „Zufälligen Datensatz holen“, typo3.net, https://www.typo3.net/d/6508-zufaelligen-datensatz-holen
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
