Wechselner Content. Wie machen die das?

Allgemeine Diskussionen zu ConPresso 3.x.
Achtung: Bitte benutzt wenn möglich die themenspezifischen Foren!
Antworten
Sabine

Wechselner Content. Wie machen die das?

Beitrag von Sabine »

Auf Conpresso.de wird in der rechten Spalte der Seite http://conpresso.de/conpresso/de_zwei-minuten/index.php bei jedem Klick eine andere News ausgegeben. Wie wird das gemacht?
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 934 Mal
Kontaktdaten:

Re: Wechselner Content. Wie machen die das?

Beitrag von MarkusR »

Man ermittelt die Artikelzahl $artikelzahlzahl der dort eingebundenen Rubrik,
ermittelt damit eine Zufallszahl
$zufallsartikel = rand(0,$artikelzahlzahl-1);
und baut seine query nach folgendem Schema:
"SELECT * FROM ".$dbPrefix."_news WHERE kategorie=................. LIMIT ".$zufallsartikel .",1";

siehe auch
http://www.php.net/manual/de/function.rand.php

Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 01:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

Re: Wechselner Content. Wie machen die das?

Beitrag von Mr. Magpie »

Hallo Markus,

kannst Du das noch etwas konkretisieren? Ich hab' bis jetzt mit PHP noch nix am Hut, würde aber solch ein Feature gerne nutzen.

Wo muss ich denn sie Artikelanzahl ermitteln? Un wie mach ich die Ausgabe?
Günther Ludwig
Sirki

Beitrag von Sirki »

An welche Stelle baue ich dies in eine sog. index10.php ein?
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 934 Mal
Kontaktdaten:

Beitrag von MarkusR »

Wie sieht dieses Werk denn bisher aus...?

Das Erraten der Stelle ist sonst etwas mühsam...
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Sirki

Beitrag von Sirki »

if ( $System_release == 1 ) {

$query = "SELECT * FROM cpo_news WHERE kategorie='news'AND artikel_archiv < 2 AND freigabe = 0 AND pub_datum < '".$jetzt."' AND verfallsdatum > '".$jetzt."' ORDER BY pub_datum DESC LIMIT ".$zufallsartikel .",1";

} else {

$query = "SELECT * FROM cpo_news WHERE kategorie='news'AND artikel_archiv < 1 AND freigabe != 2 AND pub_datum < '".$jetzt."' AND verfallsdatum > '".$jetzt."' ORDER BY pub_datum DESC LIMIT ".$zufallsartikel .",1";

}

iund dann weiter unten
$db = new DB;
$db->query($query);
$anzahl = $db->num_rows();
$zufallsartikel = rand(0,$artikelzahl-20);
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 934 Mal
Kontaktdaten:

Beitrag von MarkusR »

Ah so... verstehe zwar nicht was index10.php mit dem Code zu tun hat, da nur 1 Artikel gewählt wird, aber dennoch:

Von Vorteil ist es immer, eine Variable vor der Benutzung ihres Wertes auch mit einem Wert zu versehen.
Man ermittelt die Artikelzahl $artikelzahl der dort eingebundenen Rubrik, ermittelt damit eine Zufallszahl
sollte soviel heißen wie : erst Artikelzahl ermitteln, dann daraus eine zufällige Nummer auswählen.

Das könnte dann so aussehen:

Code: Alles auswählen

<?php
$db = new DB; 
if ( $System_release == 1 ) { 
	$query = "SELECT count(*) FROM cpo_news WHERE kategorie='news'AND artikel_archiv < 2 AND freigabe = 0 AND pub_datum < '".$jetzt."' AND verfallsdatum > '".$jetzt."'"; 
} else { 
	$query = "SELECT count(*) FROM cpo_news WHERE kategorie='news'AND artikel_archiv < 1 AND freigabe != 2 AND pub_datum < '".$jetzt."' AND verfallsdatum > '".$jetzt.""; 
} 
$db->query($query);
$db->next_record();
$artikelzahl = $db->v('count(*)'); 
$zufallsartikel = rand(0,$artikelzahl-1);

if ( $System_release == 1 ) { 
	$query = "SELECT * FROM cpo_news WHERE kategorie='news'AND artikel_archiv < 2 AND freigabe = 0 AND pub_datum < '".$jetzt."' AND verfallsdatum > '".$jetzt."' ORDER BY pub_datum DESC LIMIT ".$zufallsartikel .",1"; 
} else { 
	$query = "SELECT * FROM cpo_news WHERE kategorie='news'AND artikel_archiv < 1 AND freigabe != 2 AND pub_datum < '".$jetzt."' AND verfallsdatum > '".$jetzt."' ORDER BY pub_datum DESC LIMIT ".$zufallsartikel .",1"; 
} 
$db->query($query); 

// ... und so weiter und so fort ...
?>
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Sirki

Beitrag von Sirki »

Sorry, mit index10.php wollte ich ausdrücken, dass immer eine News aus der Rubrik News andersow eingeettet wird. Frage jetzt aber nicht, was anderswo bedeutet!
Sirki

Beitrag von Sirki »

Erhalte beim einbinden folgende Fehlermeldung!

Was muss ich machen?

Fatal error: Cannot instantiate non-existent class: db in /home/www/web153/html/content/conpresso/news/index10.php on line 2
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 934 Mal
Kontaktdaten:

Beitrag von MarkusR »

Kann es sein, daß Du vor $db = new DB sonst nichts mehr stehen hast, wie z.B. die Einbindung der common.inc...?
Ohne die geht unter ConPresso gar nichts... :wink:

Ich habe mein Beispiel nur auf den von Dir geposteten Code-Schnipsel bezogen...

Einfach mal auf den Anfang der sonstigen ConPresso-Dateien achten, wenn man was neues dazu erfinden will... :wink:

Oder hast darauf verzichtet und dann ein include mittels http:// statt ein normales gemacht?
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Sirki

Beitrag von Sirki »

Irgendwie funzt der Code nicht. Weiss auch nicht!

<?php

define('CPO', true);

if (file_exists("../_cfg/const.php")) require("../_cfg/const.php");
else require("../_cfg/const.php.dist");

require("../_include/category_rubric.inc.php");
require("../_include/var_category.php");

$Artikel_header = $Rubric_header;

require("const_rubric_language.php");

# --- HEADER ---

# require("_inc_header.php");

echo "<div class=\"htitel\">\n";

$jetzt = time();

if ( $System_release == 1 ) {

$query = "SELECT * FROM cpo_news WHERE kategorie='sponsoren'AND artikel_archiv < 2 AND freigabe = 0 AND pub_datum < '".$jetzt."' AND verfallsdatum > '".$jetzt."' ORDER BY pub_datum DESC LIMIT 0,1 ";

} else {

$query = "SELECT * FROM cpo_news WHERE kategorie='sponsoren'AND artikel_archiv < 1 AND freigabe != 2 AND pub_datum < '".$jetzt."' AND verfallsdatum > '".$jetzt."' ORDER BY pub_datum DESC LIMIT 0,1 ";

}

DEBUG(2, $query, __FILE__, __LINE__);
$db = new DB;
if ( $System_release == 1 ) {
$query = "SELECT count(*) FROM cpo_news WHERE kategorie='news'AND artikel_archiv < 2 AND freigabe = 0 AND pub_datum < '".$jetzt."' AND verfallsdatum > '".$jetzt."'";
} else {
$query = "SELECT count(*) FROM cpo_news WHERE kategorie='news'AND artikel_archiv < 1 AND freigabe != 2 AND pub_datum < '".$jetzt."' AND verfallsdatum > '".$jetzt."";
}
$db->query($query);
$db->next_record();
$artikelzahl = $db->v('count(*)');
$zufallsartikel = rand(0,$artikelzahl-1);

if ( $System_release == 1 ) {
$query = "SELECT * FROM cpo_news WHERE kategorie='news'AND artikel_archiv < 2 AND freigabe = 0 AND pub_datum < '".$jetzt."' AND verfallsdatum > '".$jetzt."' ORDER BY pub_datum DESC LIMIT ".$zufallsartikel .",1";
} else {
$query = "SELECT * FROM cpo_news WHERE kategorie='news'AND artikel_archiv < 1 AND freigabe != 2 AND pub_datum < '".$jetzt."' AND verfallsdatum > '".$jetzt."' ORDER BY pub_datum DESC LIMIT ".$zufallsartikel .",1";
}
$db->query($query);
$anzahl = $db->num_rows();

if ($db->num_rows()>0) {


echo "<table border=\"0\" cellpadding=\"2\" cellspacing=\"1\">\n";

while($db->next_record()):
//hier beginnt der Bildteil
$datei_nr = $db->v("bild");

$query = "SELECT datei, alttext, beschreibung FROM cpo_data WHERE id = '$datei_nr'";

DEBUG(2, $query, __FILE__, __LINE__);
$db_2 = new DB;
$db_2->query($query);

if ($db_2->num_rows()>0){
$db_2->next_record();
$imgtmp = '<img border="1" src="../page/conpresso/_data/'.$db_2->v("datei").'" align=left vspace=3 hspace=4 alt="'.$db_2->v("alttext").'">';
}
else {
$imgtmp='';
}
//hier endet der Bildteil
$db_nr = $db->v("nr");
$db_mehr = $db->v("mehr");
$db_pub_datum = $db->v("pub_datum");
$db_bild_link = $db->v("bild_link");
$db_titel = $db->v("titel");
$db_untertitel = $db->v("untertitel");
$db_text_1 = $db->v("text_1");
$db_text_2 = $db->v("text_2");
$db_freigabe = $db->v("freigabe");
$db_rubric = $db->v("kategorie");
$datum = date( "d.m.Y", $db_pub_datum );

// Artikel-Nummer
echo "<tr>
<td align=\"left\" valign=\"top\">";
#echo "<b><A HREF=\"../page/conpresso/".$db_rubric."/detail.php?nr=".$db_nr."\">".$db_titel.$imgtmp." </A></b><br> ";
echo "<b><font size=1>".$db_titel.$imgtmp."</font></b><br> ";
echo "$db_text_1";
echo "</td></tr>";





endwhile;

echo "</table>\n";

} else {

echo "<span class='nodata'><br><br>".$Rubric_nodata."<br><br></span><br>\n";

}

echo "</div>";
# require("_inc_footer.php");-->

?>
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 934 Mal
Kontaktdaten:

Beitrag von MarkusR »

Irgendwie funzt der Code nicht. Weiss auch nicht!
ist keine besonders präzise Beschreibung dessen, was Du beobachtest, bevor Du hier einen Haufen Code ablädst.

Wenn man da mal ein bißchen aufräumt, ein paar Schreibfehler korrigiert (auf die PHP expilzit beim Aufruf hinweist), dann funzt es doch ganz wunderbar.

Code: Alles auswählen

<?php 
define('CPO', true); 

// **** Ab hier kann entfernt werden, wenn die Datei includet wird **********
if (file_exists("../_cfg/const.php")) require("../_cfg/const.php"); 
else require("../_cfg/const.php.dist"); 
require("../_include/category_rubric.inc.php"); 
require("../_include/var_category.php"); 
require("const_rubric_language.php"); 
// **** Bis hier kann entfernt werden, wenn die Datei includet wird **********

echo "<div class=\"htitel\">\n"; 

$jetzt = time(); 
$die_kategorie = "news";

if ( $System_release == 1 ) { 
	$query = "SELECT count(*) FROM ".$dbPrefix."_news WHERE kategorie='".$die_kategorie."' AND artikel_archiv < 2 AND freigabe = 0 AND pub_datum < '".$jetzt."' AND verfallsdatum > '".$jetzt."'"; 
} else { 
	$query = "SELECT count(*) FROM ".$dbPrefix."_news WHERE kategorie='".$die_kategorie."' AND artikel_archiv < 1 AND freigabe != 2 AND pub_datum < '".$jetzt."' AND verfallsdatum > '".$jetzt."'"; 
} 
$db->query($query); 
$db->next_record(); 
$artikelzahl = $db->v('count(*)'); 
$zufallsartikel = rand(0,$artikelzahl-1); 

if ( $System_release == 1 ) { 
	$query = "SELECT * FROM ".$dbPrefix."_news WHERE kategorie='".$die_kategorie."' AND artikel_archiv < 2 AND freigabe = 0 AND pub_datum < '".$jetzt."' AND verfallsdatum > '".$jetzt."' ORDER BY pub_datum DESC LIMIT ".$zufallsartikel .",1"; 
} else { 
	$query = "SELECT * FROM ".$dbPrefix."_news WHERE kategorie='".$die_kategorie."' AND artikel_archiv < 1 AND freigabe != 2 AND pub_datum < '".$jetzt."' AND verfallsdatum > '".$jetzt."' ORDER BY pub_datum DESC LIMIT ".$zufallsartikel .",1"; 
} 
$db->query($query); 
$anzahl = $db->num_rows(); 

if ($db->num_rows()>0) { 

	echo "<table border=\"0\" cellpadding=\"2\" cellspacing=\"1\">\n"; 

	while($db->next_record()): 
		//hier beginnt der Bildteil 
		$datei_nr = $db->v("bild"); 

		$query = "SELECT datei, alttext, beschreibung FROM ".$dbPrefix."_data WHERE id = '".$datei_nr."'"; 

		DEBUG(2, $query, __FILE__, __LINE__); 
		$db_2 = new DB; 
		$db_2->query($query); 

		if ($db_2->num_rows()>0){ 
			$db_2->next_record(); 
			$imgtmp = '<img border="1" src="../page/conpresso/_data/'.$db_2->v("datei").'" align=left vspace=3 hspace=4 alt="'.$db_2->v("alttext").'">'; 
		} else { 
			$imgtmp=''; 
		} 
		//hier endet der Bildteil 
		$db_nr = $db->v("nr"); 
		$db_mehr = $db->v("mehr"); 
		$db_pub_datum = $db->v("pub_datum"); 
		$db_bild_link = $db->v("bild_link"); 
		$db_titel = $db->v("titel"); 
		$db_untertitel = $db->v("untertitel"); 
		$db_text_1 = $db->v("text_1"); 
		$db_text_2 = $db->v("text_2"); 
		$db_freigabe = $db->v("freigabe"); 
		$db_rubric = $db->v("kategorie"); 
		$datum = date( "d.m.Y", $db_pub_datum ); 

		// Artikel-Nummer 
		echo "<tr><td align=\"left\" valign=\"top\">"; 
		echo "<b><font size=1>".$db_titel.$imgtmp."</font></b><br> "; 
		echo $db_text_1; 
		echo "</td></tr>"; 
	endwhile; 
	echo "</table>\n"; 
} else { 
	echo "<span class='nodata'><br><br>".$Rubric_nodata."<br><br></span><br>\n"; 
} 
echo "</div>"; 
?> 
zu sehen auf http://mods.50n.de/home/zufall.php
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Antworten