Datenbank mit unbestimmter Anzahl Daten füllen...

ph0x

New member
heiho.

ich hab mal wieder ne Frage zu php/mysql.

folgende situation:
ich habe eine Anzahl n Zeilen mit irgendwelchen inhalten, hier
sind es Musiktitel.

nun weiß ich zum Zeitpunkt, wenn ich den Code schreibe nicht,
wieviel Zeilen Musiktitel ich haben werde.

Frage: Wie krieg ich das in die Datenbank?

Folgender Ansatz hat nicht funktioniert:

Code:
$p_id = mysql_query(\"SELECT * FROM playlistnumbers WHERE playlist='\".$alterpl.\"'\");
$pid = mysql_fetch_array($p_id);

for ($b=1;$b<=$maxrows+10;$b=$b+1)
{
$Interpret = $PL_Interpret.$b;
$Titel = $PL_Titel.$b;

if (($Interpret != \"\") || ($Interpret != NULL))
{
mysql_query(\"REPLACE INTO playlist (playlistid, interpret, titel) VALUES ('\".$pid['playlistid'].\"','\".$Interpret.\"','\".$Titel.\"')\");
}
}
Zur Erklärung:
$alterpl ist aus der vorhergehenden Datei und ist der Playlist-
name
in playlistnumbers stehen die playlistnamen mit den dazugehö-
renden playlistid's
$maxrows ist aus der vorhergehenden Datei und bezeichnet
die affected rows der dortigen Abfrage (=Anzahl der Datensätze)
in playlist stehen die Musiktitel mit der dazugehörenden Play-
listid

Wer weiß was besseres?


so long, gruß mcrack
 

ph0x

New member
So, is ja eigentlich nich meine Art, auf meine eigenen Artikel
zu antworten, aber ich muss in der Sache einfach weiterkommen.
Ihr seid meine letzte Hoffnung. Danach heißt es Probieren bis
zum Abwinken.

Ich hab schon alle Eventualitäten abgecheckt, es liegt wohl
definitiv daran, dass mysql_query keine Zählvariablen in sich
haben will...

Weiß da vielleicht einer Rat, ich bin am Verzweifeln.


so long, gruß mcrack
 

ph0x

New member
Das ist mir auch klar.
Oder mit REPLACE

Es ist aber so, dass ich eine (zum Zeitpunkt des Codens) un-
bestimmte Anzahl von Zeilen habe und ich somit eine Zähl-
variable an die Variablen $PL_Titel und $PL_Interpret anhängen
muss.

Und genau da versagt die query. Weiß keiner einen Rat?


so long, gruß mcrack
 

soox

New member
also ich hab den zug immer noch nicht erwischt....--> stehe also immer noch am BAHNHOF

also das mit der unbekannten anzahl einträge kapier ich schon...aber du musst schon via bsp sagen WAS du mit diesen daten machen willst (kopieren, verändern,....)
 

ph0x

New member
Ich will diese unbekannte Anzahl an Datensätzen in eine Daten-
bank schreiben.

An dem Befehl dafür hängt es auch nicht. Es geht nur darum.
dass das mysql_query anscheinend keine Zählvariablen (in
meinem Fall $b) haben will.

Beispiel: s.o.

Ich will die ganzen Datensätze einfach mit einer Zahl hintendran
in die Datenbank kriegen. Und da ich nicht für jede Zahl von 1
bis 1000 eine gesonderte mysql_query schreiben will, muss
ich es ja mit einer Zählvariablen machen. So wie ich das oben
angegeben habe, funzt es aber nicht. Daher wollte ich wissen,
ob es dafür noch einen anderen Weg gibt.

Ich hoffe, ich konnte es jetzt verständlich erklären.


so long, gruß mcrack
 

soox

New member
nochmals von mir geschrieben (hoffentlich versteh ich das jetzt richtig):
du willst einfach ein feld in der datenbank hinzufügen.dieses feld ist eine zahl die nur EINMALvorkommt.

wenn das so ist kann das mysql selbst...du must dem feld nur sagen,dass es ein primary feld ist und dann die funktion "autoincremen" dem feld hinzufügen. somit wird in diesem feld automatisch bei jedem instert die nächsthöhere zahl eingetragen.

ps: wenn das nicht stimmt mach doch mal 2 html tabellen mit dem aussehen: vorher nachher
 

ph0x

New member
Fast.

Ich erklär mal den gesamten Ablauf der Abfrage.

In der ersten Datei (also die dieser hier vorangehenden) werden
alle schon bestehenden Datensätze der Tabelle ($maxrows)
aufgelistet.

Dann kann man weitere 10 Datensätze hinzufügen. Die inputs
bekommen den Namen PL_Titel+Zahl und PL_Interpret+Zahl.

In der nächsten Datei (die aus meinem Beispiel) habe ich dann
also mehrere Variablen vorliegen, alle nach dem Muster

$PL_Titel1 und $PL_Interpret1

Wenn ich diese Datensätze nun wieder in die Tabelle schreiben
will, muss ich ja irgendwie die Zahl mit hineinbekommen in die
Abfrage, da ich ja nicht von $PL_Titel1 bis $PL_Titel1000 jede
Abfrage einzeln schreiben kann. Also dachte ich, ich lasse eine
Zählvariable mitlaufen, die in die Tabelle stets

$PL_Titel+$b und $PL_Interpret+$b

schreibt. Diese Abfrage funzte jedoch nicht und in meiner Tabelle
stehen danach _nur_ die Zahlen und als Playlistid '0', d.h. es
ist irgendetwas schief gegangen, da die richtige Playlistid '1'
wäre...

Meine Frage wäre nun, ob ein anderer Weg bekannt ist, um
eine unbestimmte Anzahl Datensätze in die Tabelle zu schreiben
und es nicht, so wie ich, mit einer Zahl hinter der eigentlichen
Variablen zu machen.

Ich hoffe, nun ist mein Problem klar.


so long, gruß mcrack
 

soox

New member
hab mal die 2te sql abfrage geändert....

Code:
$p_id = mysql_query(\"SELECT * FROM playlistnumbers WHERE playlist='\".$alterpl.\"'\");
$pid = mysql_fetch_array($p_id);

for ($b=1;$b<=$maxrows+10;$b=$b+1)
{
$Interpret = $PL_Interpret.$b;
$Titel = $PL_Titel.$b;

if (($Interpret != \"\") || ($Interpret != NULL))
{
mysql_query(\"REPLACE INTO playlist (playlistid, interpret, titel) VALUES ('$pid[playlistid]$b','$Interpret$b','$Titel')\");
}
}
 
Oben