# script für Datenbankeintrag/abfrage klappt nicht - finde den Fehler nicht



## germanius (4. Juni 2004)

Hallo
php und mysql ist für mich noch was neu, aber hatte mir u.a. das Buch von Kevin Yank reingezogen, nur daß es dennoch nicht richtig geht...es erfolgt scheinbar kein Eintrag in die Datenbank und ich sehe den/die Fehler nicht...

Hier der code von reg_insert.php:

<? 
include ('db_connect.php');
mysql_select_db(db123456);

$eintrag = "INSERT INTO adressdaten (vname, nname, ansprechpartner,
firma, strasse, nr, plz, ort, land, telefon, fax, email, url, username, passwort, bankname, blz, konto_nr) VALUES ('$vname', '$nname', '$ansprechpartner', '$firma','$strasse','$nr','$plz','$ort','$land','$telefon','$fax','$email','$url','$username','$passwort','$bankname','$blz','$konto_nr')";
$eintragen = mysql_query($eintrag);
// $info="echo("<p>Daten erfolgreich gespeichert</p>")";
// print $info
?>
ist der $ falsch bei den values ?

hier das formular zur datenabnahme:

<html>

<head>
<title>Kundenregistrierung</title>
</head>

<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">
<p> Registrierung als Kunde:</p> 
<form method="post" action="reg_insert.php">
<table border="1" width="500">
<tr>
<td width="169">
<p> </p>
</td>
<td width="315">
<p> </p>
</td>
</tr>
<tr>
<td width="169">
<p>Ihr Vorname</p>
</td>
<td width="315">
<p>

<input type="text" name="$vname">

</td>
</tr>
<tr>
<td width="169">
<p>Ihr Nachnahme</p>
</td>
<td width="315">
<p><input type="text" name="$nname"></p>
</td>
</tr>
<tr>
<td width="169">
<p>Weiterer Ansprechpartner</p>
</td>
<td width="315">
<p><input type="text" name="$ansprechpartner"></p>

</td>
</tr>
<tr>
<td width="169">
<p>Firmenname</p>
</td>
<td width="315">
<p><input type="text" name="$firma"></p>

</td>
</tr>
<tr>
<td width="169">
<p>Strasse / Nr</p>
</td>
<td width="315">
<p><input type="text" name="$strasse"> <input type="text" name="$nr" size="4"></p>

</td>
</tr>
<tr>
<td width="169">
<p>PLZ / Ort</p>
</td>
<td width="315">
<p><input type="text" name="$plz" size="8"> <input type="text" name="$ort"></p>

</td>
</tr>
<tr>
<td width="169">
<p>Land</p>
</td>
<td width="315">
<p><input type="text" name="$land"></p>

</td>
</tr>
<tr>
<td width="169">
<p>Telefon</p>
</td>
<td width="315">
<p><input type="text" name="$telefon"></p>

</td>
</tr>
<tr>
<td width="169">
<p>Fax</p>
</td>
<td width="315">
<p><input type="text" name="$fax"></p>

</td>
</tr>
<tr>
<td width="169">
<p>Email</p>
</td>
<td width="315">
<p><input type="text" name="$email"></p>

</td>
</tr>
<tr>
<td width="169">
<p>Internet</p>
</td>
<td width="315">
<p><input type="text" name="$url"></p>

</td>
</tr>
<tr>
<td width="169">
<p>LoginName</p>
</td>
<td width="315">
<p><input type="text" name="$username"></p>

</td>
</tr>
<tr>
<td width="169">
<p>Paßwort</p>
</td>
<td width="315">
<p><input type="text" name="$passwort"></p>

</td>
</tr>
<tr>
<td width="169">
<p>Bankname</p>
</td>
<td width="315">
<p><input type="text" name="$bankname"></p>

</td>
</tr>
<tr>
<td width="169">
<p>Bankleitzahl</p>
</td>
<td width="315">
<p><input type="text" name="$blz"></p>

</td>
</tr>
<tr>
<td width="169">
<p>KontoNr</p>
</td>
<td width="315">
<p><input type="text" name="$konto_nr"></p>
</td>
</tr>
<tr>
<td width="169">
<p> <input type="reset" name="delete" value="Daten löschen"></p>
</td>
<td width="315">
<p> <input type="submit" name="daten_eintragen " value="Speichern"></p>
</td>
</tr>
</table>
</form>


</body>

</html>

Ist im Formular ein Fehler drin ?

hier die Abfrage:
<?
include ('db_connect.php');
mysql_select_db(db123456) or die("Auswahl der Datenbank fehlgeschlagen");

$abfrage = ("SELECT vname, nname ansprechpartner,
firma, strasse, nr, plz, ort, land, telefon, fax, email, url, username, passwort, bankname, blz, konto_nr * FROM adressdaten");
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
echo $row->url;
echo $row->nname;
echo $row->vname;
echo $row->firma;
}
Paßt das alles zusammen ? wo fehlert da was ?

Vielen Dank für Hilfe, da ich den Fehler nicht ersehe...und es bald online bringen muß...
mfg
Germanius


----------



## Chocobanana (4. Juni 2004)

Also ich würd mal hinter das "connect" ein "or die ("Keine Verbindung")" einbauen, damit kannst du dann mal feststellen ob du bei den Verbindungsparametern einen Fehler drin hast.

Immer wenn ich den Fehler hatte, dann hab ich mal die einzufügenden Werte rausgenommen und nur einen Eintrag machen lassen. Also

INSERT INTO tbl_tabelle (Feld) VALUES (Wert)

Ähm, andere Frage: Wo kommen die Variablen her die du einfügen willst? Hast du auch mit $_REQUEST['Variable'] vom HTML Formular geholt?

Wenn du mit "post" Daten an ein php Script schickst, musst du die bevor du damit arbeiten kannst "zuteilen".

Also wenn du im HTML Formular die Variable "name" schickst, dann musst im Zielscript die Variable so zuweisen:

$name=$_REQUEST['name'];

Und erst dann kannst du diese verwenden!

*Hoffentlich mein letzter Edit dieses Beitrags ;-)


----------



## germanius (4. Juni 2004)

Hi
ups, das request war mit unbekannt , ich dachte, das wird automatisch übergeben durch action.
Ich werds mal umfummeln...
Danke
till later


----------



## BenKioo (4. Juni 2004)

@ Chocobanana

wo ist der  eigentlich der Unterschied zwischen $_REQUEST['var'] und dem $HTTP_POST_VARS['var'] ? gibts noch andere Möglichkeiten an die Werte des Formulars dranzukommen ? 

ps : bin auch Anfänger


----------



## germanius (4. Juni 2004)

Ok, hatte es geändert, es kommt kein Fehler beim Eintragen, aber die Daten spuckt er dennoch nicht aus - wird es wie folgt eingefügt ?


reg_insert.php:

<? 
include ('db_connect.php');
mysql_select_db(db123456);

$vname=$_REQUEST['vname'];
$nname=$_REQUEST['nname'];
$ansprechpartner=$_REQUEST['ansprechpartner'];
$firma=$_REQUEST['firma'];
$strasse=$_REQUEST['strasse'];
$nr=$_REQUEST['nr'];
$plz=$_REQUEST['plz'];
$ort=$_REQUEST['ort'];
$land=$_REQUEST['land'];
$telefon=$_REQUEST['telefon'];
$fax=$_REQUEST['fax'];
$email=$_REQUEST['email'];
$url=$_REQUEST['url'];
$username=$_REQUEST['username'];
$passwort=$_REQUEST['passwort'];
$bankname=$_REQUEST['bankname'];
$blz=$_REQUEST['blz'];
$konto_nr=$_REQUEST['konto_nr'];

  $eintrag = "INSERT INTO adressdaten (vname, nname, ansprechpartner,
   firma, strasse, nr, plz, ort, land, telefon, fax, email, url, username, passwort, bankname, blz, konto_nr) VALUES ('$vname', '$nname', '$ansprechpartner', '$firma','$strasse','$nr','$plz','$ort','$land','$telefon','$fax','$email','$url','$username','$passwort','$bankname','$blz','$konto_nr')";
  $eintragen = mysql_query($eintrag) or die(mysql_error());
  // $info="echo("<p>Daten erfolgreich gespeichert</p>")";
  // print $info
  ?>
was ist da falsch ?


----------



## Chocobanana (4. Juni 2004)

> _Original geschrieben von BenKioo _
> *@ Chocobanana
> 
> wo ist der  eigentlich der Unterschied zwischen $_REQUEST['var'] und dem $HTTP_POST_VARS['var'] ? gibts noch andere Möglichkeiten an die Werte des Formulars dranzukommen ?
> ...



HTTP_POST_VARS ist soweit ich weiß früher verwendet worden. Seit den neuen PHP Versionen  auch REQUEST

Du kannst die Daten aber auch mit $_GET['Variable'] bearbeiten.

@germanius:

Werden die Daten in die DB geschrieben? Wenn nicht versuch mal nur eine Variable einzutragen.

mit mysql_fetch_object kann ich dir leider nich helfen. Aber versuch doch mal $row=mysql_fetch_array($ergebnis, MYSQL_ASSOC);
echo $row['Variable'];


----------



## germanius (4. Juni 2004)

@choco:
danke, wie es aussieht, trägt er gar keine Daten ein 
Verstehe ich nicht.
Er gibt auch keine Fehler raus.
Wenn ich in phpmyadmin nachsehe, wird die die Grundstruktur, also die Tabellenspaltenfelder angezeigt, aber keine Daten darin per Formular übertragen.

woran liegts noch ?
habe ich das request falsch eingetragen oder in der Abfrage ohne die $s ?


----------



## Chocobanana (4. Juni 2004)

Wenn nichts eingetragen wird, dann denk ich das nicht alle Variablen "gefüllt sind". Daher nochmal mein Tip. Vereinfache das Eintragen und probier nur eine Variable in die Datenbank zu schreiben, funktioniert das, dann kannst du sicher sein, dass es generell funktioniert und alle Befehle funktionieren.
So, wenn die eine Variable ordnungsgemäß in der DB ist kannst du nun entweder Schritt für Schritt weitere Variablen hinzufügen und immer wieder schaun ob er sie einträgt, dann wirst du bald auf den Übeltäter stoßen.
Alternativ kannst du auch die Variablen checken:

if (isset($Variable)){
  echo ("Inhalt der Variable:".$Varbiable);
}
else {
 echo ("Variable existiert nicht");
}

DA gibts aber natürlich mehrere Möglichkeiten.


----------



## markes (5. Juni 2004)

das ganze geht auch viel einfacher...
probier mal den code hier aus. ist nichts 100 %iges aber sollte funktionieren.
Die html Optimierung muss ich dir überlassen, sieht noch ein wenig wild aus alles...
achso, schreib das mal noch in deine db_connect.php und achte darauf, das sie im richtigen verzeichniss liegt..


```
$tab_anmeldung = "adressdaten";
```

muss ja nicht gleich jeder wissen, wie du deine datenbank tabellen nennst.
ich würde es aufjedenfall so machen mit allen daten die du für die db brauchst.
hier ein bsp.:


```
<?php
$db_server = "localhost";
$db_name = "test";
$db_user = "root";
$db_pass = "";  
$tab_anmeldung = "adressdaten";        
?>
```


```
<? 
include ('db_connect.php');
mysql_select_db(db123456);

$eintrag = "INSERT INTO $tab_anmeldung (vname, nname, ansprechpartner, firma, strasse, nr,
									    plz, ort, land, telefon, fax, email, url, username, passwort,
										bankname, blz, konto_nr)
                               VALUES ('$vname', '$nname', '$ansprechpartner', '$firma','$strasse',
							           '$nr','$plz','$ort','$land','$telefon','$fax','$email','$url',
									   '$username','$passwort','$bankname','$blz','$konto_nr')";
//Abfrage ob User schon eingetragen wurde									   
$abfrage = mysql_query("select * from $tab_anmeldung where email = '$email'"); 
   if(mysql_num_rows($abfrage) > 0) {$error .=" Der Benutzer $name mit der Email $email wurde bereits eingetragen";} 
     else { 
      $eintragen = mysql_query($eintrag)or die(mysql_error());
       echo "Daten erfolgreich eingetragen";
       } 
?>
<html>

<head>
<title>Kundenregistrierung</title>
</head>

<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">
<p> Registrierung als Kunde:</p> 
<form method="post" action="<? $PHP_SELF ?>">
  <table border="1" width="">
    <tr>
      <td width="101"> 
        <p> </p>
</td>
      <td width=""> 
        <p> </p>
</td>
</tr>
<tr>
      <td> 
        <p>Ihr Vorname</p>
</td>
      <td> 
        <p>

          <input name="vname" type="text" id="vname">

</td>
</tr>
<tr>
      <td> 
        <p>Ihr Nachnahme</p>
</td>
      <td> 
        <p>
          <input name="nname" type="text" id="nname">
        </p>
</td>
</tr>
<tr>
      <td> 
        <p>Weiterer Ansprechpartner</p>
</td>
      <td> 
        <p>
          <input name="ansprechpartner" type="text" id="ansprechpartner">
        </p>

</td>
</tr>
<tr>
      <td> 
        <p>Firmenname</p>
</td>
      <td> 
        <p>
          <input name="firma" type="text" id="firma">
        </p>

</td>
</tr>
<tr>
      <td> 
        <p>Strasse / Nr</p>
</td>
      <td> 
        <p>
          <input name="strasse" type="text" id="strasse">
           
          <input name="nr" type="text" id="nr" size="4">
        </p>

</td>
</tr>
<tr>
      <td> 
        <p>PLZ / Ort</p>
</td>
      <td> 
        <p><input type="text" name="plz" size="8"> <input type="text" name="ort"></p>

</td>
</tr>
<tr>
      <td> 
        <p>Land</p>
</td>
      <td> 
        <p><input type="text" name="land"></p>

</td>
</tr>
    <tr> 
      <td>
<p>Telefon</p>
</td>
      <td> 
        <p><input type="text" name="telefon"></p>

</td>
</tr>
<tr>
      <td> 
        <p>Fax</p>
</td>
      <td> 
        <p><input type="text" name="fax"></p>

</td>
</tr>
<tr>
      <td> 
        <p>Email</p>
</td>
      <td> 
        <p><input type="text" name="email"></p>

</td>
</tr>
<tr>
      <td> 
        <p>Internet</p>
</td>
      <td> 
        <p><input type="text" name="url"></p>

</td>
</tr>
<tr>
      <td> 
        <p>LoginName</p>
</td>
      <td> 
        <p><input type="text" name="username"></p>

</td>
</tr>
<tr>
      <td> 
        <p>Paßwort</p>
</td>
      <td> 
        <p><input type="text" name="passwort"></p>

</td>
</tr>
<tr>
      <td> 
        <p>Bankname</p>
</td>
      <td> 
        <p><input type="text" name="bankname"></p>

</td>
</tr>
<tr>
      <td> 
        <p>Bankleitzahl</p>
</td>
      <td> 
        <p><input type="text" name="blz"></p>

</td>
</tr>
<tr>
      <td height="30"> 
        <p>KontoNr</p>
</td>
      <td> 
        <p><input type="text" name="konto_nr">
        </p>
</td>
</tr>
<tr>
      <td> 
        <p> <input type="reset" name="delete" value="Daten löschen"></p>
</td>
      <td> 
        <p> <input type="submit" name="daten_eintragen " value="Speichern">
        </p>
</td>
</tr>
</table>
</form>


</body>

</html>
```


----------



## germanius (6. Juni 2004)

Hallo Markes & Co

danke für deine Mühe und Tipps.
Es tritt leider mit deinem Script der Fehler auf, daß er die Daten nicht in die Datenbank einträgt, wenn ich mit phpmyadmin nachsehe.

Er trägt es sozusagen leer ein, bei nr z.b. setzt er eine null und läßt den rest weg bzw. leer.

weißt du noch was dazu ?

Vielen Dank
mfg
Germanius


----------



## germanius (6. Juni 2004)

*merci*

hi
jetzt klappt es, ich hatte die $s vergessen beim insert...

<? 
include ('db_connect.php');
mysql_select_db(db123456);


$vname=$_REQUEST['vname'];
$nname=$_REQUEST['nname'];
$ansprechpartner=$_REQUEST['ansprechpartner'];
$firma=$_REQUEST['firma'];
$strasse=$_REQUEST['strasse'];
$nr=$_REQUEST['nr'];
$plz=$_REQUEST['plz'];
$ort=$_REQUEST['ort'];
$land=$_REQUEST['land'];
$telefon=$_REQUEST['telefon'];
$fax=$_REQUEST['fax'];
$email=$_REQUEST['email'];
$url=$_REQUEST['url'];
$username=$_REQUEST['username'];
$passwort = $_REQUEST['passwort']; 
$passwort1 = md5(passwort);

$bankname=$_REQUEST['bankname'];
$blz=$_REQUEST['blz'];
$konto_nr=$_REQUEST['konto_nr'];

   $eintrag = "INSERT INTO daten (vname, nname, ansprechpartner,
   firma, strasse, nr, plz, ort, land, telefon, fax, email, url, username, passwort, bankname, blz, konto_nr) VALUES ('$vname', '$nname', '$ansprechpartner', '$firma','$strasse','$nr','$plz','$ort','$land','$telefon','$fax','$email','$url','$username','$passwort','$bankname','$blz','$konto_nr')";
   $eintragen = mysql_query($eintrag) or die(mysql_error());

  ?>

Danke nochmal
besten Gruß
Germanius
*jetzt kommt nur noch der umfangreiche "Rest" der Datenbank dran * ;-)))


----------

