Wie komme ich wieder auf den ersten Datensatz?

Gesperrt
BA-media
Beiträge: 15
Registriert: Mo 1. Aug 2005, 08:24
Kontaktdaten:

Wie komme ich wieder auf den ersten Datensatz?

Beitrag von BA-media »

Hallo zusammen,
bin gerade dabei ein Modul zu schreiben mit dem es möglich ist eine Artikelliste zu erstellen.
Der unterschied zu denn vorhandenen Artikellisten ist
1. kann man mehrere verschieden Kategorien auswählen
2. ist eine Zufallsauswahl möglich

Ich hab folgendes Problem,
wie komme ich nach dem ersten durchlaufen der while Schleife wieder auf den ersten Datensatz des Selects zurück ? Die Schleife läuft einmal durch ohne Problem nur dann steht ja der Datenzeiger am Ende.
Wie krieg ich denn wieder auf doe Anfangsposition ?

Code: Alles auswählen

$cat_num = "CMS_VALUE[0]"; // Anzahl der Kategorien die dursucht werden sollen

echo '      <table cellspacing="0" cellpadding="10" border="0">',chr(10); 
echo '        <tr valign="top">',chr(10); 
echo '          <td class="text_medium">Anzahl der Kategorien die durchsucht werden sollen:</td>',chr(10); 
echo '          <td class="text_medium"><input type="text" name="CMS_VAR[0]" value="CMS_VALUE[0]">',chr(10); 

if ($cat_num != "0" && $cat_num != "") {
	$i=1;
	
	// fetch all categorys 
	$query =  "SELECT A.idcat, A.level, C.name FROM ".$cfg["tab"]["cat_tree"]." AS A, "; 
	$query .= $cfg["tab"]["cat"]." AS B,  ".$cfg["tab"]["cat_lang"]." AS C WHERE A.idcat=B.idcat "; 
	$query .= "AND B.idcat=C.idcat AND C.idlang='$lang' AND B.idclient='$client' "; 
	$query .= "AND C.visible=1 ORDER BY A.idtree"; 
		
	// execute query 
	$db->query($query); 
		 
	while($i<=$cat_num){ 
		$selected = "CMS_VALUE[$i]"; // ausgewählte Kategorie
		echo '        <tr valign="top">',chr(10); 
		echo '          <td class="text_medium">'.$i.'&nbsp;.Kategorie w&auml;hlen:</td>',chr(10); 
		echo '          <td class="text_medium"><select name="CMS_VAR['.$i.']">',chr(10);
		if ($selected != "0" && $selected != "") { 
   			echo '       <option value="0">--- kein ---</option>',chr(10); 
		} else { 
   			echo '       <option selected="selected" value="0">--- kein ---</option>',chr(10); 
		}
		
		// loop result and build the options 
		while ($db->next_record()) { 
		   $spaces = "|";               // indent spacer 
		   $levels = $db->f("level");   // how many levels 
		
		   for ($i = 0; $i < $levels; $i++) { 
			  $spaces = $spaces . "--"; // add 2 spaces for every level 
		   } 
		
		   $spaces .= ">"; 
		
		   if ($selected == $db->f("idcat")) { 
			  // selected category 
			  echo '<option selected="selected" value="'. $db->f("idcat") .'">'. $spaces . $db->f("name") .'</option>',chr(10); 
		   } else { 
			  // category 
			  echo '<option value="'. $db->f("idcat") .'">'. $spaces . $db->f("name") .'</option>',chr(10); 
		   }
		}
			
		echo '           </select>',chr(10);
		echo '          </td>',chr(10);   
		echo '        </tr>',chr(10); 
		$i++;
	} 
}
echo '      </table>',chr(10);

Danke für euere Hilfe

Mfg

Marcus
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

sag mal was willst du denn genau machen ?

irgendwie ist das aus dem code nicht rauslesbar...

ach ja sieh dir mal alle $i verwendungen an...
*** make your own tools (wishlist :: thx)
BA-media
Beiträge: 15
Registriert: Mo 1. Aug 2005, 08:24
Kontaktdaten:

was ich machen will....

Beitrag von BA-media »

Ganz einfach.

Ich möchte im Backend die möglichkeit bieten mehrere Kategorien aus dem Baum auszuwählen.

Wieviel es sind überlasse ich jedem selber. Der Nutzer mus nur in das Textfeld eine Zahl eingeben um die Anzahl der Kategorien festzulegen.

Anschließend erscheinen dementsprechend x Auswahlmöglichkeiten SELECTS in dennen er die jeweiligen Kategorien auswählen kann.

Aus allen Kategorien sollen später alle Artikel ausgelesen werden und ein Artikelliste erstellt werden. Die entweder nach A-Z oder per Zufall (rand()) erstellt wird.

Ich möchte z.b damit erreichen das auf jeder Seite ein Zufallsartikel eingeblendet wird.

Ich hoffe ich habs jetzt einigermaßen rübergebracht was ich will ?!
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

hmm...
hast du dir das schon mit den $i angesehen ?

die andere sache:
Wie komme ich wieder auf den ersten Datensatz?
da versteh ich nicht was du damit erreichen willst...
$db->next_record(); liefert dir immer nur einen neuen datensatz...
lt. der klasse gibt es aber keine funktion den zeiger wieder auf die erste position zu bringen...

ich geb dir nur den tipp such dir ne andere möglichkeit das programmtechnisch zu machen... (zb alles in einen array schreiben und diesen dann auswerten...zb foreach, reset etc...)
*** make your own tools (wishlist :: thx)
BA-media
Beiträge: 15
Registriert: Mo 1. Aug 2005, 08:24
Kontaktdaten:

Variable CMS_VALUE[x]

Beitrag von BA-media »

Vielen Dank für denn Tipp mit dem $i !
Habs geändert.

Ich steh gerade vor dem nächsten Problem

Ich will mir eine Varaible CMS_VALUE[x] erstellen.

Wenn ich es so schreibe

Code: Alles auswählen

$selected = "CMS_VALUE[$i_selects]";
lautet die Ausgabe CMS_VALUE[1]

Wenn ich es so schreibe

Code: Alles auswählen

$selected = "CMS_VALUE[1]";
lautet die Ausgabe 1

Ist die einzigste Möglichkeit den richtigen Wert zu bekommen, wie wenn er fest zugewiesen wird, den String jeweils am Anfang und am Ende von CMS_VALUE[ x ] abzuschneiden ?

Oder gibts eine andere Möglichkeit bzw. Schreibweise ?

Danke schonmal
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

CMS_VALUE[$i] in schleifen ist ohne contenido code änderungen nicht möglich...
-> http://contenido.org/forum/viewtopic.php?t=3590
ich hab mich mal kurz damit beschäftigt, aber na ja
wirklich gebraucht habe ich es bis jetzt noch nicht...
*** make your own tools (wishlist :: thx)
Gesperrt