"Mitwandernde Ordnungszahl" - Wie gehts?

ahykes

Erfahrenes Mitglied
Hallo Leutz,

ich wünsche EUch ein frohes neues Jahr. Ich habe ein kleines Problem mit meinem PHP-Script. Also los:

Mein Script bekommt seine Daten aus einer Datenbank und gibt diese in einer Tabelle aus. Diese Seite lädt sich alle 30 Sekunde neu. Die Tabelle enthällt 3 Spalten mit insgesamt genau 10 Zeilen:

| Ordnungszahl | Produktionsnummer | Baumuster |

Produktionsnummer und Baumuster bekomme ich aus der Datenbank. Hier geht es mir nur um die Ordnungszahl. Ich möchte, dass die Ordnungszahl mit der Produktionsnummer nach oben "wandert" wenn eine Produktionsnummer mit dem Reload verschwindet. Beispiel:

| 1 | 658932 | 74582123 |
| 2 | 658933 | 89542120 |
| 3 | 658934 | 56231452 |

Nehmen wir an Zeile eins verschwindet. Dann soll die Zeile 2 auch die Ordnungszahl 2 behalten.
Wenn nun eine Zeile die Ordnungszahl 10 hat, soll die nächste Zeile wieder mit 1 anfangen. :p

Ich hoffe, ihr konntet meine Erklärungsversuche folgen :rolleyes: Habt ihr eine Idee? Hier mein Code:

PHP:
	<body topmargin="0" leftmargin="0">
		<table width="256" cellpadding="0" cellspacing="0" border="0" rules="cols" class="small">
		<?		# Ausgabe der Tabellenzeilen
				$z = 0;
				
				#$arr_fetched_data_sorted = Enthällt Daten der Datenbank
				for($j=0; $j<=count($arr_fetched_data_sorted); $j++)
				{
					# Leeere Array-Felder nicht ausgeben
					if($arr_fetched_data_sorted[$j][0] != ''){
						
						# Finale Ausgabe
						echo '<tr '.$class.'>'."\n";
						echo "\t".'<td '.$bgcolor.' align="center" width="10">Ordnungszahl</td>'."\n";
						echo "\t".'<td '.$bgcolor.' align="center" width="50">'.$arr_fetched_data_sorted[$j][0].'</td>'."\n";
						echo "\t".'<td '.$bgcolor.' align="center" width="55">'.$arr_fetched_data_sorted[$j][2].'</td>'."\n";
					}
				}
		?>
		</table>
	</body>
 
PHP:
<?php

for ($i = count($arr_fetched_data_sorted); 1 <= $i; $i--)
{
  $next_id = $i - 1;
  $result = mysql_query("SELECT * FROM table WHERE id = '$next_id'");

  if (!mysql_num_rows($result))
  {
    mysql_query("UPDATE table SET id = '$next_id' WHERE id = '$i'");
  }
}

?>

Es wird überprüft, ob die nächstniedrigere Id existiert. Wenn sie nicht existiert, rückt die aktuelle Id eins runter. Ich habe es nicht ausprobiert, da ich hier bei meinem Praktikum hocke, aber ungefähr so sollte es funktionieren.

EDIT:
Ohh, ich glaube ich habe es falsch verstanden. Soll quasi Datensatz 1 überschrieben werden?

PHP:
<?php

for($i=0; $i <= count($arr_fetched_data_sorted); $i++)
{
  if($i > 10)
  {
    $result = mysql_query("UPDATE table SET werte WHERE id = '1'");
  }
  else
}

?>

Bin mir aber nicht sicher, sorry.
 
Zuletzt bearbeitet:
Entschuldige bitte, das hatte ich vergessen: Die Ordnungszahl bekomme ich NICHT aus der Datenbank! Die muss ich also selber erstellen.
 
Warum erstellst du kein Feld 'id' mit Primärschlüssel und auto_increment in deiner Datenbank? Dann wäre das ganze doch viel einfacher!

Dann musst du deinen 1. Datensatz irgendwie kenntlich machen. Vielleicht mittels Produktionsnummer oder Baumuster.

PHP:
<?php

for($i = 1; $i <= 10; $i++)
{
  if($i == 1) $baumuster = $variablenname['baumuster'];

  if($i > 10) mysql_query("UPDATE table SET werte WHERE baumuster = '$baumuster'");
}

?>

Vielleicht so? Ich bin mir da nicht sicher. Mit ID wäre es wohl leichter, so dient ein anderer Wert als ID.

Oder willst du nur, dass die Ausgabe dann wieder mit 1 beginnt? Dann könntest du die Anzahl der vorhandenen Einträge durch 10 teilen.

PHP:
<?php

$durchlaeufe = ceil(mysql_num_rows($query) / 10);
for($i = 0; $i <= $durchlaeufe - 1; $i++)
{
  for($j = 1; $j <= 10; $j++)
  {
    $nr = $j + ($i * 10);
    echo "Nummer $nr";
  }
}

?>

Aber auch da bin ich mir nicht sicher, da ich es nicht ausprobieren kann.
 
Zuletzt bearbeitet:
Zurück