• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Formular ausfüllen

Hallo ZeitGeist, während meiner Studie habe ich mit dreien verschiedenen Dateien zu tun:
1)testAjax.htm (müsste diese Datei auf lokalhost erzeugt sein?)​
---------------
HTML:
<html>
<body>

<script type="text/javascript">
function ajaxFunction()
{
var xmlhttp;
if (window.XMLHttpRequest)
  {
  // code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {
  // code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
{
if(xmlhttp.readyState==4)
  {
  document.myForm.time.value=xmlhttp.responseText;
  }
}
xmlhttp.open("GET","time.asp",true);
xmlhttp.send(null);
}
</script>

<form name="myForm">
Name: <input type="text" name="username" onkeyup="ajaxFunction();" />
Time: <input type="text" name="time" />
</form>

</body>
</html>
---------------
2)time.asp (wie erzeuge ich die asp-Datei auf Server Seite? Die Endung asp?,wie schaut die ganze asp-Datei?)
<%
response.expires=-1
response.write(time)
%>

3)time.php (auf Serverseite)
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<?php
// Date in the past
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-cache");
echo(date("G:i:s",time()));
?>
</head>
<body></body>
</html>
Danke schön.
 
ASP oder PHP - da solltest Du Dich schon entscheiden. Beides kann man zwar irgendwie kombinieren, besonders sinnvoll ist das aber nicht.
 
Der Gedanke der hinter Ajax steht, sind asynchrone Anfragen an Server. Bedeutet dein Client sendet eine Anfrage und bekommt (eventuell) irgendwann eine Antwort. Zwischen Anfrage und Antwort kannst du "normal" weiterarbeiten. Das ist der wesentliche Unterschied zum HTML/Browser. Dort sendest du eine Anfrage (klick auf einen Link) und musst dann warten bis der Server geantwortet hat (in dem Fall die HTML-Seite gesendet hat).
Mittels Javascript werden Anfragen gesendet und die Anworten ausgewertet. Dem Server ist es vollkommen egal, ob die Anfrage AJAX oder das Klicken eines Links ist. Auch das Ziel ist relativ wumpe. Es kann sich um statische HTML-Seiten (oder allgemeiner XML) handeln, oder dahinter ein Skript verbergen. (Also wumpe ob asp, php, jsp oder weiß der Geier was).

Dein:
1. verstehe ich nicht ganz. Wo die Seite liegt ist egal, du musst sie nur über deinen Browser öffnen.
2. asp dient hier nur als Beispiel für eine serverseitige Programmiersprache,
3. statt time.asp muss in deinem fall time.php stehen.

Interessant ist die Möglichkeit mit Javascript XML zu verarbeiten. Wenn du lediglich eine Uhrzeit zurücksenden willst, ist dies nicht unbedingt nötig. Bei komplexeren Rückgabedaten kann man diese jedoch in XML verpacken und dann leicht mit Javascript darauf zugreifen und die Werte beispielsweise an den entsprechenden Stellen anzeigen.
 
Hallo ZeitGeist,hallo Albu ich habe zwei Dateien erzeugt, in der ersten (testAjax.php) selektiere ich einen Tournr, das läuft gut. In der zweiten Datei (getuser.php,derName soll Euch nicht irreführen) soll er mit dieser Tournr in der __transfert__ die entsprechende Zeile ausgeben. Das macht er noch nicht. Ich weiss nicht wo der Fehler liegt. Für Eure Hinweise bedanke ich mich.​
-------------------------
PHP:
<html>
<head>
<script type="text/javascript">
var xmlhttp;

function showUser(str)
{
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
  {
  alert ("Browser does not support HTTP Request");
  return;
  }
var url="getuser.php";
url=url+"?q="+str;
url=url+"&sid="+Math.random();
xmlhttp.onreadystatechange=stateChanged;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

function stateChanged()
{
if (xmlhttp.readyState==4)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}

function GetXmlHttpObject()
{
if (window.XMLHttpRequest)
  {
  // code for IE7+, Firefox, Chrome, Opera, Safari
  return new XMLHttpRequest();
  }
if (window.ActiveXObject)
  {
  // code for IE6, IE5
  return new ActiveXObject("Microsoft.XMLHTTP");
  }
return null;
}
</script>
</head>
<body>
<?php
$db_server = 'www.xxxx.de';
$db_name = 'DBname';
$db_user = 'Uname';
$db_passwort = 'yyyyyyyyyyyy';         
$db = mysql_connect ( $db_server, $db_user, $db_passwort ) or die ( 'Bilgi Bankasi ile iletisim saglanamadi' ); 
?>
<form>
Select a User:
<select name="tournamen" onchange="showUser(this.value)">
<?php	
   $db_check = mysql_select_db ( $db_name );   
   $res = mysql_db_query($db_name, "select * from __tourt__");
   $num = mysql_num_rows($res);
   while($query_data = mysql_fetch_array($res))
   {
?>
										<option value='<? echo $query_data["TourNr"]; ?>'><? echo $query_data["TourNr"]; ?></option><? } ?>
									</select>
</form>
<div id="txtHint"><b>Person info will be listed here.</b></div>

</body>
</html>
--------------------------
Die zweite Datei
PHP:
<?php
$q=$_GET["q"];

$con = mysql_connect('Servername', 'Uname', 'passwort');
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("DBname", $con);

$sql="SELECT * FROM __transfert__ WHERE TourNr = '".$q."'";

$result = mysql_query($sql);
print "sql= $sql result= $result";
echo "<table border='1'>
<tr>
<th>TourNr</th>
<th>TourName</th>
<th>BereichNr</th>
<th>BereichName</th>
<th>Transfer</th>
</tr>";

while($row = mysql_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['TourNr'] . "</td>";
  echo "<td>" . $row['TourName'] . "</td>";
  echo "<td>" . $row['BereichNr'] . "</td>";
  echo "<td>" . $row['BereichName'] . "</td>";
  echo "<td>" . $row['Transfer'] . "</td>";
  echo "</tr>";
  }
echo "</table>";

mysql_close($con);
?>
 
Fehlermeldungen bekommst du entweder, in dem du das Skript direkt aufrufst (URL in Adressleiste deines Browsers) oder in dem du dir mit Firebug (Addon für Firefox) über die Konsole (oder Netzwerk, gerade unsicher) den Response anschaust.

Dein Code ist übrigens anfällig für SQL-Injection!
 
Hallo ZeitGeist,ich habe die oben gelisteten Scripte soweit gebracht,dass sie funktionieren.
Jetzt muss ich mich über "SQL-Injection" schlau machen. Danke für alles.​
 
Hallo, ich kriege die Fehlermeldung:Warning: fopen(http://localhost/tourenmysql.txt) [function.fopen]: failed to open stream: Connection refused in /mnt/web7/50/67/51610067/htdocs/toureninpro.php on line 28
obwohl die Datei(tourenmysql.txt) physisch vorhanden ist.
Danke für die Hinweise.​
PHP:
<!DOCTYPE html PUBLIC 
    "-//W3C//DTD XHTML 1.0 Strict//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html>
<head>
<title>zur Datenbank</title>
</head>
<body>
<div>
<?php
$user = "user";
$pass = "pass";
$db = "dbank";
$link = mysql_connect( "www.xxxx.de", $user, $pass );
if ( ! $link ) {
    die( "Konnte Verbindung zur MySQL-Datenbank nicht aufbauen: ".mysql_error()  );
}
print "<h6>Verbindung hergestellt</h6>\n\n";
mysql_select_db( $db )
    or die ( "Konnte $db nicht öffnen: ".mysql_error() );

$results = mysql_db_query($db,"SELECT * FROM __touren__ ");
$num_rows = mysql_num_rows($results);
if ($num_rows > 0){
$result = mysql_db_query($db, "truncate table __touren__");}
$filename = "http://localhost/tourenmysql.txt";

$fp = fopen( $filename, "r" )
		or ("Konnte $filename nicht oeffnen");
		while ( ! feof($fp)) {
		$line = fgets($fp,1024);
		$linef= explode(",",$line);
		
	  $sqlab = "insert into __touren__";
      $sqlab .= "(TourZNr, Heute, TagZeit, AgentName, TourName, Anfangsdatum, Sprache, BKurC, ZBetrag,";
      $sqlab .= " PZahl, GKZahl, KKZahl, KVorname, KNachname, Land,";
      $sqlab .= " Hotel, ZimNr, Anfangszeit, TourTotal, BKurCk, TWaek,";
      $sqlab .= "Bar, VerkName, Agent, Rest, RWaek,";
      $sqlab .= "TourNr, SprachNr, LandNr, HotelNr, VerkNr, AgentNr,";
      $sqlab .= "VERSERW, VERSGK, VERSKK, TWaek1, TWaek2, TWaek3, BarS, Fjn, Notiz) values ";
      $sqlab .=
      "($linef[0],'$linef[1]', '$linef[2]', '$linef[3]', '$linef[4]','$linef[5]','$linef[6]',$linef[7],$linef[8],$linef[9],";
$sqlab .= "$linef[10],$linef[11],'$linef[12]','$linef[13]','$linef[14]','$linef[15]','$linef[16]','$linef[17]',";
$sqlab .= "$linef[18],'$linef[19]',$linef[20],$linef[21],'$linef[22]','$linef[23]',$linef[24],'$linef[25]',";
$sqlab .= "$linef[26], $linef[27], $linef[28], $linef[29], $linef[30], $linef[31],";
$sqlab .= "'$linef[32]','$linef[33]','$linef[34]', $linef[35], $linef[36], $linef[37], $linef[38], '$linef[39]','$linef[40]' )";
print "$sqlab";
		mysql_query( $sqlab, $link )
    	or die ( "INSERT Error: ".mysql_error() );
		}
		print("Die Daten sind herunter");
mysql_close( $link );
fclose($fp);
?>
</div>
</body>
</html>
 
Du versuchst die Datei über den Webbrowser zu öffnen. Gib mal statt der url den relativen Pfad an (in deinem Fall tourenmysql.txt).

Wenn du nen phpmyadmin hast, der kann csv-Dateien auch selber importieren.
Wenn du trotzdem nen Skript brauchst, so gehts einfacher:
PHP:
$file = file('tourenmysql.txt'); // $file ist ein Array, jedes Element eine Zeile aus der Datei
$values = array();
foreach($file as $line){
	$values[] = '('.$line.')';
}
$sqlab = "insert into __touren__";
$sqlab .= "(TourZNr, Heute, TagZeit, AgentName, TourName, Anfangsdatum, Sprache, BKurC, ZBetrag,";
$sqlab .= " PZahl, GKZahl, KKZahl, KVorname, KNachname, Land,";
$sqlab .= " Hotel, ZimNr, Anfangszeit, TourTotal, BKurCk, TWaek,";
$sqlab .= "Bar, VerkName, Agent, Rest, RWaek,";
$sqlab .= "TourNr, SprachNr, LandNr, HotelNr, VerkNr, AgentNr,";
$sqlab .= "VERSERW, VERSGK, VERSKK, TWaek1, TWaek2, TWaek3, BarS, Fjn, Notiz) values ";
$sqlab .= implode(', ', $values);     
print $sqlab;

Das ist nicht nur kürzer, hat zu dem auch den Vorteil das du nur eine Datenbankanfrage senden musst. Dadurch ist das Skript sehr viel perfomanter.
 
Hallo ZeitGeist,irgendetwas stimmt nicht, diesmal kriege ich die Fehlermeldung: Warning: file(tourenmysql.txt) [function.file]: failed to open stream: No such file or directory in /mnt/web7/50/67/51610067/htdocs/toureninpro.php on line 26

Warning: Invalid argument supplied for foreach() in /mnt/web7/50/67/51610067/htdocs/toureninpro.php on line 28
Danke für Deine Mühe.​
PHP:
<!DOCTYPE html PUBLIC 
    "-//W3C//DTD XHTML 1.0 Strict//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html>
<head>
<title>zur Datenbank</title>
</head>
<body>
<div>
<?php
$user = "user";
$pass = "pass";
$db = "dbank";
$link = mysql_connect( "www.xxxx.de", $user, $pass );
if ( ! $link ) {
    die( "Konnte Verbindung zur MySQL-Datenbank nicht aufbauen: ".mysql_error()  );
}
print "<h6>Verbindung hergestellt</h6>\n\n";
mysql_select_db( $db )
    or die ( "Konnte $db nicht öffnen: ".mysql_error() );

$results = mysql_db_query($db,"SELECT * FROM __touren__ ");
$num_rows = mysql_num_rows($results);
if ($num_rows > 0){
$result = mysql_db_query($db, "truncate table __touren__");}
$file = file('tourenmysql.txt'); // $file ist ein Array, jedes Element eine Zeile aus der Datei 
$values = array(); 
foreach($file as $line){ 
    $values[] = '('.$line.')'; 
} 
$sqlab = "insert into __touren__"; 
$sqlab .= "(TourZNr, Heute, TagZeit, AgentName, TourName, Anfangsdatum, Sprache, BKurC, ZBetrag,"; 
$sqlab .= " PZahl, GKZahl, KKZahl, KVorname, KNachname, Land,"; 
$sqlab .= " Hotel, ZimNr, Anfangszeit, TourTotal, BKurCk, TWaek,"; 
$sqlab .= "Bar, VerkName, Agent, Rest, RWaek,"; 
$sqlab .= "TourNr, SprachNr, LandNr, HotelNr, VerkNr, AgentNr,"; 
$sqlab .= "VERSERW, VERSGK, VERSKK, TWaek1, TWaek2, TWaek3, BarS, Fjn, Notiz) values "; 
$sqlab .= implode(', ', $values);      
print $sqlab;  

		mysql_query( $sqlab, $link )
    	or die ( "INSERT Error: ".mysql_error() );
		/*}*/
		print("Die Daten sind herunter");
mysql_close( $link );
fclose($fp);
?>
</div>
</body>
</html>
 
Ist das so richtig? Die vorletzte sqlab-Zeile vor dem implode-Befehl beinhaltet auch das Wort "values" am Ende. Die Datei existiert doch.​
 
Wenn der Inhalt der Datei richtig ist, sollte der SQL-Befehl so stimmen - kann auf jeden Fall gerade nichts falsches sehen.
Die Datei existiert nicht, denn sonst würde er dir nicht diese Fehler ausgeben! Und wenn sie existiert, dann hald in einem anderen Ordner.
 
Die Datei liegt in c:\xampp\htdocs. Ich habe dann
$file = file('C:\xampp\htdocs\tourenmysql.txt') korrigiert-ist das so richtig?- aber es hat sich nichts geändert. Danke.​
 
Die Datei liegt in c:\xampp\htdocs. Ich habe dann
$file = file('C:\xampp\htdocs\tourenmysql.txt') korrigiert-ist das so richtig?- aber es hat sich nichts geändert. Danke.​
\t ist z.B. ein Tabulator. Was die anderen bedeuten, weiß ich und vermutlich PHP auch nicht. Wenn Der Pfad nicht stimmt, dann wird die Datei nicht gefunden, das ist eigentlich ganz einfach. Eventuell solltest Du Dir auch mal die Fehlercodes angucken, die die entsprechenden PHP Funktionen liefern, dann könntest Du darauf kommen, dass PHP die Datei nicht findet, weil es ganz woanders sucht, als Du animmst.
 
Hallo, ich kann die Datei "tourenmysql.txt" dort erzeugen, um darauf gezielt zugreifen zu können, wo ich es haben will. Es hilft nicht. Er gibt immer die Fehlermeldung dort, wo es in das File eingelesen werden soll. Ich bin ratlos. Gibt es vielleicht eine ganz andere Vorgehensweise?​
 
Gibt es vielleicht eine ganz andere Vorgehensweise?
Du meinst strukturiert, so mit nachdenken und hinterfragen was man tut?
Klar das kann man natürlich auch machen, aber im Trüben rumstochern macht doch so viel mehr Spaß, oder?
Alternativ könntest Du die Fehlermeldung lesen und was dagegen tun.
 
Es handelt sich hier um den Transfer, der Die Daten vom lokalen Mysql-Datenbank, zum Provider-Datenbank schickt. Die entgegengesetzte Aktion(nämlich von Provider zum lokalen mysql-DB) habe ich per zwei Scripten schon erfolgreich abgeschlossen gehabt. Und hier kann ich sogar wieder die Daten vom lokalen-DB in eine Datei(txt Format) schreiben. Es klappt nur nicht die letzte Übertragung. Das erste Script schreibt die Daten automatisch in "http://localhost/tourenmysql.txt" .
Die Fehlermeldung: Warning: fopen(http://localhost/mysqltouren.txt) [function.fopen]: failed to open stream: Connection refused . Für Hinweise bedanke ich mich im Voraus.​
 
Zurück
Oben