grisu
11.12.2003, 11:07:35
Hallo Leute !
Also ich bin im Moment am Ende mit meinem Latein, vielleicht kann mir einer von euch helfen?
Ich möchte einzelne Felder einer Artikeltabelle in mysql aus einer csv-Datei aktualisieren.
Dabei steht nicht von vornherein fest, welche es sind. Mal die und mal die halt. Dafür hab ich auf der ersten php-Seite folgenden Code :
if(isset($tabelle)){
$result = mysql_query("SELECT * FROM $tabelle");
$menge = mysql_num_fields($result);
print "<form action="dateiauswahl.php" method="GET">";
for($y=0;$y<$menge;$y++){
$felds = mysql_field_name($result,$y);
print "
<input type="Checkbox" name="dbfeld[]" value="$y;$felds">$y - $felds</input><br>";
}
print "
<input type="Submit" name="wirklich" value="Felder aktualisieren">
<input type="Hidden" name="tabelle" value="$tabelle">
</form>
";
}
Soweit so gut, die Feldnamen bekomme ich wunderbar in den Array gelesen. Mein Problem hier ist,
dass ich ja auch den Feldindex brauche, also 1. Feld = 0 usw. und zwar nur für die Felder, die
ich auch wirklich im Formular auswähle. Füge ich ein hidden-Feld mit $y als Inhalt ein, gibt er
mir die gesamte Nummerierung. Ich hab also mal testweise $y mal mit in den value von $dbfeld
packt.
___________________________________________________________________
Auf der nächsten Seite wähle ich die csv-datei aus :
<form enctype="multipart/form-data" action="edit_ergebnis.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="500000">
(...)
<input type="file" class="Feld" name="userfile">
(...)
<td colspan="2">
<?php
foreach($dbfeld as $wert){
print "<input type="Hidden" name="dbfeld[]" value="$wert"> ";
}
?>
<input type="Hidden" name="tabelle" value="<?php print $tabelle;?>">
<input type="Submit" class="Button" name="aendern" value="Daten aktualisieren">
(...)
Also hier läuft alles wunderbar... zum Glück
______________________________________________________________________
Und jetzt kommt das Sorgenkind :
Als erstes wollte ich den Array von $dbfeld auflösen um den Index vom Feldnamen zu
trennen :
foreach($dbfeld as $wert){
$neu = explode(";",$wert);
foreach($neu as $feld){
$nr = $feld[0];
$feldn = $feld[1];
print "Nummer = $nr und Feldname = $feldn<br>";
}
}
und das ist das Ergebnis von print in meinem Browser :
Nummer = 0 und Feldname =
Nummer = A und Feldname = r
Nummer = 1 und Feldname =
Nummer = A und Feldname = n
Nummer = 2 und Feldname =
Nummer = X und Feldname = K
Nummer = 3 und Feldname =
Nummer = X und Feldname = K
Nummer = 4 und Feldname =
Nummer = X und Feldname = K
Also völliger Unsinn und ich weiss nicht woher er kommt. Für den richtigen Query
brauch ich aber doch den Index um die korrekten Spalten in der csv-datei auszuwählen
oder ?
Vielleicht schüttelt ihr jetzt den Kopf und sagt das geht doch vieeeeeeeel
einfacher...
Vielen Dank schon im voraus für eure Hilfe, jeder Lösungsansatz ist mir willkommen...
Also ich bin im Moment am Ende mit meinem Latein, vielleicht kann mir einer von euch helfen?
Ich möchte einzelne Felder einer Artikeltabelle in mysql aus einer csv-Datei aktualisieren.
Dabei steht nicht von vornherein fest, welche es sind. Mal die und mal die halt. Dafür hab ich auf der ersten php-Seite folgenden Code :
if(isset($tabelle)){
$result = mysql_query("SELECT * FROM $tabelle");
$menge = mysql_num_fields($result);
print "<form action="dateiauswahl.php" method="GET">";
for($y=0;$y<$menge;$y++){
$felds = mysql_field_name($result,$y);
print "
<input type="Checkbox" name="dbfeld[]" value="$y;$felds">$y - $felds</input><br>";
}
print "
<input type="Submit" name="wirklich" value="Felder aktualisieren">
<input type="Hidden" name="tabelle" value="$tabelle">
</form>
";
}
Soweit so gut, die Feldnamen bekomme ich wunderbar in den Array gelesen. Mein Problem hier ist,
dass ich ja auch den Feldindex brauche, also 1. Feld = 0 usw. und zwar nur für die Felder, die
ich auch wirklich im Formular auswähle. Füge ich ein hidden-Feld mit $y als Inhalt ein, gibt er
mir die gesamte Nummerierung. Ich hab also mal testweise $y mal mit in den value von $dbfeld
packt.
___________________________________________________________________
Auf der nächsten Seite wähle ich die csv-datei aus :
<form enctype="multipart/form-data" action="edit_ergebnis.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="500000">
(...)
<input type="file" class="Feld" name="userfile">
(...)
<td colspan="2">
<?php
foreach($dbfeld as $wert){
print "<input type="Hidden" name="dbfeld[]" value="$wert"> ";
}
?>
<input type="Hidden" name="tabelle" value="<?php print $tabelle;?>">
<input type="Submit" class="Button" name="aendern" value="Daten aktualisieren">
(...)
Also hier läuft alles wunderbar... zum Glück
______________________________________________________________________
Und jetzt kommt das Sorgenkind :
Als erstes wollte ich den Array von $dbfeld auflösen um den Index vom Feldnamen zu
trennen :
foreach($dbfeld as $wert){
$neu = explode(";",$wert);
foreach($neu as $feld){
$nr = $feld[0];
$feldn = $feld[1];
print "Nummer = $nr und Feldname = $feldn<br>";
}
}
und das ist das Ergebnis von print in meinem Browser :
Nummer = 0 und Feldname =
Nummer = A und Feldname = r
Nummer = 1 und Feldname =
Nummer = A und Feldname = n
Nummer = 2 und Feldname =
Nummer = X und Feldname = K
Nummer = 3 und Feldname =
Nummer = X und Feldname = K
Nummer = 4 und Feldname =
Nummer = X und Feldname = K
Also völliger Unsinn und ich weiss nicht woher er kommt. Für den richtigen Query
brauch ich aber doch den Index um die korrekten Spalten in der csv-datei auszuwählen
oder ?
Vielleicht schüttelt ihr jetzt den Kopf und sagt das geht doch vieeeeeeeel
einfacher...
Vielen Dank schon im voraus für eure Hilfe, jeder Lösungsansatz ist mir willkommen...