# Script soll auf eingabe warten



## r3ddragon (21. Juni 2007)

Ich habe hier folgendes Script:


```
<html>
Install Daten
<form action="<?php echo $PHP_SELF ?>" method="POST">
Db.user:<input name="user" size="15" maxlength="30" value="" type="text"></br>
Db.passwort:<input name="password" size="15" maxlength="20" value="" type="text"></br>
Db.Adresse:<input name="address" size="15" maxlength="20" value="" type="text"></br></br>

<input type="submit" name="register" value="register">
</html>

<?php
/*DB-DATEN*/
	if(!empty($_POST['user'])){
$db_user = $_POST['user'];
	echo OK;
	}
         	if(!empty($_POST['password'])){
$db_pass = $_POST['password'];
	echo OK;
	}
         	if(!empty($_POST['adress'])){
$db_host = $_POST['adress'];
	echo OK;
	}
$db_name = "userdata";

/*Verbindung zur Datenbank wird hergestellt*/
$link = mysql_connect($db_host, $db_user, $db_pass)
   or die ("Keine Verbindung zum Server");

//     if (mysql_create_db($db_name)){
//  echo 'Datenbank ' . $db_name . ' wurde erstellt!';
//  }
 // mysql_query($db_name);

$create= "CREATE DATABASE  " . $db_name . " DEFAULT CHARACTER SET latin1 COLLATE latin1_german1_ci";
 if (mysql_query ($create, $link)) {
echo 'Database created successfully.';
}
 else {
echo "Error! ".mysql_error()."
 ";
 }


//	$create_table = "CREATE TABLE acc (
//        		id INT( 255 ) NOT NULL AUTO_INCREMENT ,
//		user VARCHAR( 50 ) NOT NULL default '',
//		pass VARCHAR( 50 ) NOT NULL default '',
//        		site VARCHAR( 75 ) NOT NULL default '',
//		PRIMARY KEY ( `id` ) ;
//	mysql_db_select ('userdata');
//	mysql_query ($create_table, $link);

?>
```

ich das problem was ich habe ist, das das Script nicht auf die Eingabe der Daten wartet sondern sofort weiter läuft.

Fehler:
Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\xampplite\htdocs\php\install.php on line 28
Keine Verbindung zum Server

Wie kann ich das ändern, das das Script mit den Daten weiter arbeitet?

Gruß R3D


----------



## Michael Engel (21. Juni 2007)

```
<html>
Install Daten
<form action="<?php echo $PHP_SELF ?>" method="POST">
Db.user:<input name="user" size="15" maxlength="30" value="" type="text"></br>
Db.passwort:<input name="password" size="15" maxlength="20" value="" type="text"></br>
Db.Adresse:<input name="address" size="15" maxlength="20" value="" type="text"></br></br>

<input type="submit" name="register" value="register">
</html>

<?php
/*DB-DATEN*/
$error = 0;
	if(!empty($_POST['user'])){
$db_user = $_POST['user'];
	echo OK;
	} else $error = 1;
         	if(!empty($_POST['password'])){
$db_pass = $_POST['password'];
	echo OK;
	} else $error = 1;
         	if(!empty($_POST['adress'])){
$db_host = $_POST['adress'];
	echo OK;
	} else $error = 1;
$db_name = "userdata";

/*Verbindung zur Datenbank wird hergestellt*/
if($error == 0){
$link = mysql_connect($db_host, $db_user, $db_pass)
   or die ("Keine Verbindung zum Server");

//     if (mysql_create_db($db_name)){
//  echo 'Datenbank ' . $db_name . ' wurde erstellt!';
//  }
 // mysql_query($db_name);

$create= "CREATE DATABASE  " . $db_name . " DEFAULT CHARACTER SET latin1 COLLATE latin1_german1_ci";
 if (mysql_query ($create, $link)) {
echo 'Database created successfully.';
}
 else {
echo "Error! ".mysql_error()."
 ";
 }


//	$create_table = "CREATE TABLE acc (
//        		id INT( 255 ) NOT NULL AUTO_INCREMENT ,
//		user VARCHAR( 50 ) NOT NULL default '',
//		pass VARCHAR( 50 ) NOT NULL default '',
//        		site VARCHAR( 75 ) NOT NULL default '',
//		PRIMARY KEY ( `id` ) ;
//	mysql_db_select ('userdata');
//	mysql_query ($create_table, $link);
}
?>
```


Überprüfe ob überall etwas eingegeben wurde und nur dann versuchst du den connect usw


----------



## r3ddragon (21. Juni 2007)

es geht so auch nicht, die Fehlermeldung komm sofort wie ich die seite lade.
Für mich sie es so aus, das er einfach das Script nach unter durchjagt ohne auf die daten oben zu warten.

MfG R3D


----------



## ssurfer (21. Juni 2007)

Du solltest zuerst überprüfen ob der Submit-Button gedrückt wurde.
Falls ja führe dein Script aus, wenn nicht zeige das Formular an.


----------



## r3ddragon (21. Juni 2007)

ja genau das meine ich, wie kann ich das überprüfen ?


----------



## Layna (21. Juni 2007)

Hmmm.... ok, ich habe 'ne weile nichts mehr in PHP gemacht... aber: Warum SOLLTE er warten? 
Scripte laufen nun einmal von oben bis unten durch, tun sie immer.
Wenn etwas NICHT passieren soll muss man es an Irgedn eine Bedingung binden:


```
if (isset($_POST["user"])){
 ...ratterdurch
}
```


----------



## r3ddragon (21. Juni 2007)

weil das sript schon durchläuft , bevor es die wichtigen daten hat


----------



## Rambomaster (21. Juni 2007)

Versuchs mal mit if(isset($_POST['register'])) Damit überprüfst du ob der Submitbutton gedrückt wurde.


```
<html>
Install Daten
<form action="<?php echo $PHP_SELF ?>" method="POST">
Db.user:<input name="user" size="15" maxlength="30" value="" type="text"></br>
Db.passwort:<input name="password" size="15" maxlength="20" value="" type="text"></br>
Db.Adresse:<input name="address" size="15" maxlength="20" value="" type="text"></br></br>

<input type="submit" name="register" value="register">
</html>

<?php
if(isset($_POST['register'])) {
/*DB-DATEN*/
$error = 0;
    if(!empty($_POST['user'])){
		$db_user = $_POST['user'];
		echo OK;
    } else $error = 1;
	
    if(!empty($_POST['password'])){
		$db_pass = $_POST['password'];
		echo OK;
    } else $error = 1;
	
    if(!empty($_POST['adress'])){
		$db_host = $_POST['adress'];
		echo OK;
    } else $error = 1;
	
$db_name = "userdata";

/*Verbindung zur Datenbank wird hergestellt*/
$link = mysql_connect($db_host, $db_user, $db_pass) or die ("Keine Verbindung zum Server");

//     if (mysql_create_db($db_name)){
//  echo 'Datenbank ' . $db_name . ' wurde erstellt!';
//  }
 // mysql_query($db_name);

$create= "CREATE DATABASE  " . $db_name . " DEFAULT CHARACTER SET latin1 COLLATE latin1_german1_ci";
if (mysql_query ($create, $link)) {
	echo 'Database created successfully.';
}


//    $create_table = "CREATE TABLE acc (
//                id INT( 255 ) NOT NULL AUTO_INCREMENT ,
//        user VARCHAR( 50 ) NOT NULL default '',
//        pass VARCHAR( 50 ) NOT NULL default '',
//                site VARCHAR( 75 ) NOT NULL default '',
//        PRIMARY KEY ( `id` ) ;
//    mysql_db_select ('userdata');
//    mysql_query ($create_table, $link);
}
?>
```


----------



## r3ddragon (21. Juni 2007)

```
<html>
Install Daten
<form action="<?php echo $PHP_SELF ?>" method="POST">
Db.user:<input name="user" size="15" maxlength="30" value="" type="text"></br>
Db.passwort:<input name="password" size="15" maxlength="20" value="" type="text"></br>
Db.Adresse:<input name="address" size="15" maxlength="20" value="" type="text"></br></br>

<input type="submit" name="Go Install" value="register">
</html>

<?php
if(isset($_POST['register'])) {
/*DB-DATEN*/

    if(isset($_POST['user'])){
$db_user = $_POST['user'];
    echo OK;

             if(isset($_POST['password'])){
$db_pass = $_POST['password'];
    echo OK;

             if(isset($_POST['adress'])){
$db_host = $_POST['adress'];
    echo OK;

    $db_name = "userdata";

/*Verbindung zur Datenbank wird hergestellt*/
$link = mysql_connect($db_host, $db_user, $db_pass)
   or die ("Keine Verbindung zum Server");

//     if (mysql_create_db($db_name)){
//  echo 'Datenbank ' . $db_name . ' wurde erstellt!';
//  }
 // mysql_query($db_name);

$create= "CREATE DATABASE  " . $db_name . " DEFAULT CHARACTER SET latin1 COLLATE latin1_german1_ci";
 if (mysql_query ($create, $link)) {
echo 'Database created successfully.';
}
 else {
echo "Error! ".mysql_error()."
 ";
 }



?>
```

Parse error: syntax error, unexpected $end in C:\xampplite\htdocs\php\install.php on line 50

line 50 is die letzte


----------



## Michael Engel (21. Juni 2007)

Merke : Fehler auf der letzten Zeile sind in der Regel nicht geschlossene { ( [ " oder '

in deinem Script eben hatten 4 mal eine } gefehlt:


```
<html>
Install Daten
<form action="<?php echo $PHP_SELF ?>" method="POST">
Db.user:<input name="user" size="15" maxlength="30" value="" type="text"></br>
Db.passwort:<input name="password" size="15" maxlength="20" value="" type="text"></br>
Db.Adresse:<input name="address" size="15" maxlength="20" value="" type="text"></br></br>

<input type="submit" name="Go Install" value="register">
</html>

<?php

/*DB-DATEN*/
if(isset($_POST['register'])) { 
    if(isset($_POST['user'])){
$db_user = $_POST['user'];
    echo OK;
    }
             if(isset($_POST['password'])){
$db_pass = $_POST['password'];
    echo OK;
             }
             if(isset($_POST['adress'])){
$db_host = $_POST['adress'];
    echo OK;
             }
    $db_name = "userdata";

/*Verbindung zur Datenbank wird hergestellt*/
$link = mysql_connect($db_host, $db_user, $db_pass)
   or die ("Keine Verbindung zum Server");

//     if (mysql_create_db($db_name)){
//  echo 'Datenbank ' . $db_name . ' wurde erstellt!';
//  }
 // mysql_query($db_name);

$create= "CREATE DATABASE  " . $db_name . " DEFAULT CHARACTER SET latin1 COLLATE latin1_german1_ci";
 if (mysql_query ($create, $link)) {
echo 'Database created successfully.';
}
 else {
echo "Error! ".mysql_error()."
 ";
 }
}
             

?>
```


----------



## r3ddragon (22. Juni 2007)

ich habe gleich brauch aber noch mal hilfe.

Wenn ich die seite lade kommen folgende Meldungen:

Warning: mysql_pconnect() [function.mysql-pconnect]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\xampplite\htdocs\php\install.php on line 43
Nicht verbundenAccess denied for user 'ODBC'@'localhost' (using password: NO)

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:\xampplite\htdocs\php\install.php on line 51
Error! Access denied for user 'ODBC'@'localhost' (using password: NO)

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:\xampplite\htdocs\php\install.php on line 66
Error! Access denied for user 'ODBC'@'localhost' (using password: NO)
Konnte Verbindung zur Datenbank nicht schliessen


```
<head>
<title>Install routine</title>
</head><html>
Install Daten
<form action="<?php echo $PHP_SELF ?>" method="POST">
Db.user:<input name="user" size="15" maxlength="30" value="" type="text"></br>
Db.passwort:<input name="password" size="15" maxlength="20" value="" type="text"></br>
Db.Adresse:<input name="address" size="15" maxlength="20" value="" type="text"></br>
</br><b><font color="#FF0000">ACHTUNG:</font></br> Das der Benutzername gesendet wurde, heißt nicht das er richtig ist!<br>Gleiches gilt für das Password!</b></br></br>
<input type="submit" name="register" value="Go Install">
</br></br></br>
</html>

<?php

/*DB-DATEN*/
if(isset($_POST['register'])) {

    	if(isset($_POST['user'])){
		$db_user = $_POST['user'];
     	echo "Username gesendet <br>";
        		}
 		else {
	echo "Error! ".mysql_error()."<br>";
 		}
	}

         if(isset($_POST['password'])){
		$db_pass = $_POST['password'];
    	echo "Password gesendet<br>";
             	}
		 else {
	echo "Error! ".mysql_error()."<br>";
 	}

        // if(isset($_POST['adress'])){
		$db_host = $_POST['adress'];
     	echo "Address gesendet <br>";

        		$db_name = "userdata";
    		$tb_name = "acc";

if ($link = mysql_pconnect($db_host, $db_user, $db_pass)){
   echo 'Verbindung erfolgreich aufgebaut<br>';
   }
   else {
   echo "Nicht verbunden".mysql_error()."<br>";
   }

$create_db = "CREATE DATABASE  " . $db_name . " DEFAULT CHARACTER SET latin1 COLLATE latin1_german1_ci";
 if (mysql_query ($create_db, $link)) {
echo 'Database created successfully.<br>';

}
 else {
echo "Error! ".mysql_error()."<br> ";
 }

$db_select = @mysql_select_db($db_name);
$create_tb = "CREATE TABLE " . $tb_name . " (
`id` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`user` VARCHAR( 50 ) CHARACTER SET latin1 COLLATE latin1_german1_ci NOT NULL ,
`pass` VARCHAR( 50 ) CHARACTER SET latin1 COLLATE latin1_german1_ci NOT NULL ,
`site` VARCHAR( 100 ) CHARACTER SET latin1 COLLATE latin1_german1_ci NOT NULL
) ENGINE = MYISAM ";
 if (mysql_query ($create_tb, $link)) {
echo 'Tables created successfully.<br>';
}
 else {
echo "Error! ".mysql_error()."<br>";
 }
$db_close = @mysql_close($link);

if($db_close)
  echo 'Verbindung zur Datenbank geschlossen';
else
  echo 'Konnte Verbindung zur Datenbank nicht schliessen';
?>
```

wer kann mir sagen wo die Fehler liegen? Es fehlen doch sicher wieder nur irgendwo sonderzeichen 
ich sehe aber net wo.


----------



## Rambomaster (22. Juni 2007)

Du musst if(isset($_POST['register'])) {  um alles machen wo du irgendetwas mit der DB machst. 

Übrigens empfehle ich dir deinen Code etwas besser zu formatieren. Mit deiner jetzigen Darstellung kann man Fehler nur sehr schlecht erkennen. Vielleicht liegts aber auch am Codefenster des Forums, dann kannst du natürlich nichts dafür.


----------



## r3ddragon (27. Juni 2007)

wie meinst du das ? Wo überall ?


----------



## Michael Engel (27. Juni 2007)

Total verwucherter code ,) en wenig entwirrt..

die if($_POST) abfrage sehr viel erweitert, einiges umgeschoben. Eingerückt und so weiter. Aber du solltest dir echt ein wenig mehr Ordnung angewöhnen, das lässt sich teilweise ziemlich schwer lesen.

Bist du sicher das du ein pconnect auf die Datenbank möchtest? Bei Install Scripten wird es in der regel ja nicht der fall sein das eine persistente Datenbank-Verbindung erstellt wurde :> Und Neue Datenbanken anlegen darf auch nicht jeder User. Man weis ja nicht genau was du im endeffekt damit vor hast ,)

```
<?php

/*DB-DATEN*/
if(isset($_POST['register'])) {
    if(isset($_POST['user'])){
        $db_user = $_POST['user'];
        echo "Username gesendet <br>";
    }
    
    if(isset($_POST['password'])){
        $db_pass = $_POST['password'];
        echo "Password gesendet<br>";
     }
    if(isset($_POST['adress'])){
        $db_host = $_POST['adress'];
        echo "Address gesendet <br>";
    }
    $db_name = "userdata";
    $tb_name = "acc";

    if ($link = mysql_connect($db_host, $db_user, $db_pass)){
        echo 'Verbindung erfolgreich aufgebaut<br>';
        $create_db = "CREATE DATABASE  " . $db_name . " DEFAULT CHARACTER SET latin1 COLLATE latin1_german1_ci";
        if (mysql_query ($create_db, $link)) {
            echo 'Database created successfully.<br>';
        } else {
            echo "Error! ".mysql_error()."<br> ";
        }
        $db_select = @mysql_select_db($db_name);
        $create_tb = "CREATE TABLE " . $tb_name . " (
        `id` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
        `user` VARCHAR( 50 ) CHARACTER SET latin1 COLLATE latin1_german1_ci NOT NULL ,
        `pass` VARCHAR( 50 ) CHARACTER SET latin1 COLLATE latin1_german1_ci NOT NULL ,
        `site` VARCHAR( 100 ) CHARACTER SET latin1 COLLATE latin1_german1_ci NOT NULL
        ) ENGINE = MYISAM ";
        
        if (mysql_query ($create_tb, $link)) {
            echo 'Tables created successfully.<br>';
        } else {
            echo "Error! ".mysql_error()."<br>";
            
        }
        $db_close = @mysql_close($link);
        if($db_close)   echo 'Verbindung zur Datenbank geschlossen';
        else            echo 'Konnte Verbindung zur Datenbank nicht schliessen';
    } else {
        echo "Nicht verbunden".mysql_error()."<br>";
    }
}
?>
```


----------

