wie wird das gemacht ?

sany

Grünschnabel
ich habe eine tabelle in meiner mysql datenbank die strucktur ist wie folgt.

id, userid, user, nummer

1, 1, user, 1
3, 1, user, 2
12, 1, user, 5

id, ist als auto_increment und die fehlenden id´s wurden schon mal gelöscht. Das problem genau ist das das wenn ich einen eintrag in der datenbank einfügen will, das er mir als nächstes id, userid, user und dann als nummer die nächte freie nummer einträgt das wäre hier die 3. Also immer zu erst die nächste leere nummer. Mache ich dann ein weiteren eintrag nach dem nun 1, 2, 3, 4, 5, da steht dann soll er eine 6 reinschreiben.


ich habe das schon mal probiert aber irgend wie klappt das nicht.
PHP:
$abfrage3 = "SELECT * FROM users WHERE userid = '1' ORDER BY nummer";
$ergebnis3 = mysql_query($abfrage3);

$nummer = 1;
while($row3 = mysql_fetch_assoc($ergebnis3)){
    if($nummer == $row3['nummer']){
        while($nummer <= $row3['nummer']){
        ++$nummer;
        if($nummer != $row3['nummer']){
        #echo $nummer;
        #break;
        $eintrag = "INSERT INTO users (useridnr, user, komentar, nummer) VALUES ('1', 'user', 'kein', '$nummer')";
        $insert = mysql_query($eintrag) or die (mysql_error());
                }
            }
        }

das ich da einmist geschriebn weis ich, denn so funktioniert es auf gar keinen fall. Mag mir nicht jemand da ein wenig helfen mt dem code, ich verstehe nichts mehr, und sitze schon 3 tage an der aufgabe :)
 
Code gibt's nich, nur eine Beschreibung, wie's funktionieren sollte:

- Du holst Dir alle Datensätze zu einem nutzer und sortierst nach der Nummer aufsteigend (das machst Du ja bereits).

- Danach durchläufst Du alle Datensätze in einer While-Schleife und lässt eine Variable ($neue_nummer) beginnend von 1 mitlaufen, so dass beim ersten Datensatz $neue_nummer 1 ist, beim zweiten Daten satz $neue_nummer 2, usw.

- Gleichzeitig überprüfst Du, ob die Nummer ($neue_nummer) der Nummer im aktuellen Datensatz entspricht. Wenn nicht, brichst Du mit break; die Schleife ab.

- Nach der Schleife prüfst Du, ob $neue_nummer gleich der Anzahl der Datensätze ist, die zu Beginn aus der Datenbank geholt wurden. Wenn ja, dann erhöhe $neue_nummer um eins.

- Abschließend kannst Du die INSERT-Anweisung erstellen und $neue_nummer als Nummer für den Datensatz verwenden.

P.S.: Satzanfänge und Substantive werden groß geschrieben.

snuu
 
Cool es funktioniert, danke schön, heute hatt es gleich nach dem ersten mal funktioniert. Was ich vorher 3 Tage dadran gehockt habe.
 
Zu früh gefreut :( nach der 10 wird mir eine 2 geschrieben warum? Das ganze schaut so aus im mom.

PHP:
while($row3 = mysql_fetch_assoc($ergebnis3)){
	if($nummer == $row3['nummer']){
		++$nummer;
		}
		else{
		break;
		}
	}
#hier ist jetzt mein INSERT in der datenbank
}
 
Zum Beispiel soll die Nummer hochgezählt werden, wenn die Zeilennummer und die Nummer, die mitläuft nicht übereinstimmen. Du machst genau das Gegenteil.
Dann sehe ich nicht, dass die Nummer bei 1 Startet. und die Schleife wird auch nicht abgebrochen, wenn Zeile und Nummer überein stimmen.

snuu
 
Ich habe Dir eine ausführlich beschrieben, wie Du Dein Problem lösen kannst. Wenn Du es nicht schaffst die Programmlogik nach meinen Vorgaben zu realisieren, dann liegt das an Dir. Mit meinem vorangegangen Post habe ich Dich auf Fehler in Deinem Code hingewiesen. Also steckt sehr wohl Sinn hinter der Rede! ich habe des Weiteren keine Lust, mich für meine Hilfe anmachen zu lassen. Code bekommst Du von mir nicht vorgekaut!

snuu
 
Zurück