Hallo
ich habe eine ganz interessante Aufgabe,
ich möchte gerne Werte in eine mySQL Datenbank schreiben.
Ziel ist es, das Anwender eine Maske haben, in der ein paar Werte eingetragen werden.
Da in der Datenbank noch weitere Felder vorhanden sind, sollen diese durch feste Werte ergänzt werden.
Beispiel:
Feld A, Feld C, Feld E werden aus der Eingabemaske genommen, Feld B und D mit festen Werten belegt.
Das ganze soll in die Datenbank geschrieben werden.
Ich habe 3 Ideen zur Lösung, aber bin nicht so fit im Scripten....
1. Ein PHP Script läuft auf dem Intranet und nimmt die Daten entgegen. Daraus wird eine csv Datei erzeugt (Trennung mit ; ) die dann ein Script welches auf dem Datenbankserver wartet in die Datenbank einliesst.
Das hat den Vorteil, das die mySQL Datenbank auf dem Server keine Anfragen von aussen akzeptieren muss.
2. Ähnlich der ersten Lösung, allerdings wird eine SSH Verbindung aufgebaut und hier ein Shell-Script oder C Programm gestartet. Das nimmt die Eingaben, also die Felder entgegen und baut daraus die passende Datei.
Diese wird an den Server übertragne und eingelesen.
3. Ein PHP Script nimmt die Daten entgegen und trägt diese mittels eines mySQL Befehl direkt in die (in diesem Szenario) erreichbare Datenbank auf dem Server ein.
Ich würde Lösung 1 oder 2 bevorzugen, weiss aber nicht, wie ich ein Script erzeuge, welches Werte aus einer
Eingabemaske bezieht, diese um feste Werte ergänzt und daraus eine CSV (also ; getrennte) Datei erzeugt.
help wanted
Werte in eine MySQL Datenbank schreiben per Script
Re: Werte in eine MySQL Datenbank schreiben per Script
Variante 1, PHP:Das Skript erwartet einen Aufruf wie /foo.php?as=df&fnord=pling, wobei as und fnord beliebig und df und pling die Daten sind. Die Ausgabe ist der Dateiname, worin diese csv-kodierten Daten zu finden sind (für eine Website eher unpraktisch). Es wird *nichts* geprüft, die Werte könnten leer, nicht gesetzt, SQL-Injections oder sonstwas sein.
Variante 2, Shell:Macht im Prinzip dasselbe wie oben, mit Abfrage und anschließender Ausgabe des Speicherortes.
Gruß Cae
Code: Alles auswählen
<?php
$tmpfname = tempnam("/tmp", "foo");
$handle = fopen($tmpfname, "w");
fwrite($handle, $_GET[0] . ';' . $_GET[1] . ';' . "const0;const1");
fclose($handle);
echo $tmpfname;
?>
Variante 2, Shell:
Code: Alles auswählen
#!/bin/sh
tmpfname=$(tempfile)
echo -n "var0 pls: "
read var0
echo -n "var1 pls: "
read var1
echo "$var0;$var1;foo;bar" >"$tmpfname"
echo "$tmpfname"
return 0
Gruß Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.
—Bruce Schneier
Re: Werte in eine MySQL Datenbank schreiben per Script
Beide Lösungen sehen interessant aus,
ich weiss noch nicht, ob ich den PHP Weg gehe übers Intranet,
auch dieser Link ist ja eine gute Idee, hab ich vor ein paar Minuten gefunden
http://www.loy-webdesign.de/webdesign/php-csv-datei.htm
oder ob ich die Shell Variante nehme.
Anwenderfreundlicher ist ja die Intranetlösung......
ich weiss noch nicht, ob ich den PHP Weg gehe übers Intranet,
auch dieser Link ist ja eine gute Idee, hab ich vor ein paar Minuten gefunden
http://www.loy-webdesign.de/webdesign/php-csv-datei.htm
oder ob ich die Shell Variante nehme.
Anwenderfreundlicher ist ja die Intranetlösung......
Re: Werte in eine MySQL Datenbank schreiben per Script
Dein Link ist fast dasselbe, nur mit action="POST" anstatt action="GET". Hat halt den Nachteil, dass man zwingend ein Formular braucht (zumindest mit einem aktuellen Browser, bei nc natürlich nicht), man kann es also nicht "mal eben" testen.
Und, du musst aufpassen wegen Race Conditions, also dass User eins etwas postet, User zwei einen Moment später und zum Beispiel der von User eins in die Datei geschriebene erste Teil von der Session des User zwei überschrieben wird. Das passiert dir bei tempnam nicht.
Gruß Cae
Und, du musst aufpassen wegen Race Conditions, also dass User eins etwas postet, User zwei einen Moment später und zum Beispiel der von User eins in die Datei geschriebene erste Teil von der Session des User zwei überschrieben wird. Das passiert dir bei tempnam nicht.
Gruß Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.
—Bruce Schneier
Re: Werte in eine MySQL Datenbank schreiben per Script
Richtig, das stimmt.
Hab ich auch schonmal kurz drüber nachgedacht.
Hab ich auch schonmal kurz drüber nachgedacht.