Fehler!, aber wo?

BladeNeo

Erfahrenes Mitglied
Hi Leute,

hab hier ne DB die nicht richtig will... also kurz gesagt, es wird alles eingetragen außer nick und icq, aber wieso? ich kann echt kein Fehler sehen...

Folgende Einträge sind in der DB:
id - tinyint(3)
vorname varchar(50)
name varchar(50)
email varchar(50)
tel varchar (20)
nick varchar (50)
icq varchar (50)
plz varchar (50)
ort varchar (50)
NULL alle "ja" außer id
standart alle NULL außer id
id auto-increment

MfG,
BladeNeo
PHP:
<html>
<body>
<?
if ($_POST['submit']) {
$db = mysql_connect("localhost", "root");
mysql_select_db("db",$db);
$sql = "INSERT INTO kunden (vorname,name,email,tel,nick,icq,plz,ort) VALUES ('$vorname','$name','$email','$tel','$nick','$icq','$plz','$ort')";
$result = mysql_query($sql,$db);
echo "Ihr Daten wurden abgeschickt! Vielen Dank!<br><br>";
}
else {
?>

<form method="post" action="<? echo $HTTP_SERVER_VARS['PHP_SELF']  ?>">
<table border="0" align="center">
<tr>
</tr><tr>
<td>Vorname</td>
<td><input type="text" name="vorname" value="<? echo $vorname ?>" size="50"></td>
</tr><tr>
<td>Name</td>
<td><input type="text" name="name" value="<? echo $name ?>" size="50"></td>
</tr><tr>
<td>E-mail</td>
<td><input type="text" name="email" value="<? echo $email ?>" size="50"></td>
</tr><tr>
<td>Telefon bzw. Handy</td>
<td><input type="text" name="tel" value="<? echo $tel ?>" size="50"></td>
</tr><tr>
<td>Nickname / ICQ-Nr</td>
<td><input type="text" name="nick" value="<? echo $nick ?>" size="50">
<input type="text" name="icq" value="<? echo $icq ?>" size="20"></td>
</tr><tr>
<td>PLZ Ort</td>
<td><input type="text" name="plz" value="<? echo $plz ?>" size="5">
<input type="text" name="ort" value="<? echo $ort ?>" size="40"></td>
</tr><tr>
<td>&nbsp;</td>
<td><input type="submit" name="submit" value="Abschicken"></td>
</tr>
</table>
</form>
<?
}
?>
</body>
</html>
 
1. Du solltest auf die Variablen, die aus dem Formular nicht einfach durch (Beispiel 'nick') $nick zugreifen, sondern lieber $_POST['nick'] verwenden
2. Lass nach dem Bestätigen des Formulars doch einfach mal kontrollweise deine Variablen ausgeben
PHP:
echo '<pre>';
print_r($_POST);
echo '</pre>';

Mehr kann ich auf den ersten Blick nicht finden...
 
Hi ludz,

danke! mit dem $_POST['nick'] funktioniert alles.. aber wieso eigentlich nicht ohne?

Und ich hätte noch ne Frage...
ich vergebe ja jedem Eintrag ne "ID".. wie könnte ich eine Tabelle machen in der nur ver Vor/ Nachname erscheint und mit einem klick darauf ein neues Fenster mit genaueren Daten (wie tel-nr u.s.w) erscheint..
Ich müsste ja irgendwie mit dem klick auf den submit-button die id übergeben und diese id müsste dann ausgelesen werden.. könnte mir jemand da ein Bsp. geben?

MfG,
BladeNeo
 
Zuletzt bearbeitet:
Und ich hätte noch ne Frage...
ich vergebe ja jedem Eintrag ne "ID".. wie könnte ich eine Tabelle machen in der nur ver Vor/ Nachname erscheint und mit einem klick darauf ein neues Fenster mit genaueren Daten (wie tel-nr u.s.w) erscheint..
Ich müsste ja irgendwie mit dem klick auf den submit-button die id übergeben und diese id müsste dann ausgelesen werden.. könnte mir jemand da ein Bsp. geben?
Du gibst den Vor- und Nachnamen einfach als Link aus, der zu einer Detailseite führt und dabei die ID der entsprechenden Person mittels GET übergibt (...detailseite.php?kunden_id=1234).
Auf der Detailseite liest du diese ID aus ($_GET['kunden_id']) und gestaltest dementsprechend deine Abfrage an die Datenbank ( "SELECT * FROM kunden WHERE kunden_id = '".$_GET['kunden_id']."'"). Dann brauchst du nur noch das Ganze ausgeben.

Bsp.:
PHP:
//Übersichtsseite
<?php
$sql = mysql_query("SELECT kunden_id, name, vorname FROM kunden ORDER BY name");
while ($row = mysql_fetch_array($sql)) {
    echo '<a href="detailseite.php?kunden_id='.$row['kunden_id'].'">'.$row['name'].', '.$row['vorname'].'</a><br />';
}
?>

//detailseite.php
<?php
if (!$_GET['kunden_id']) {
    echo 'Keine ID übergeben!';
} else {
    $kunden_id = mysql_escape_string($_GET['kunden_id']);
    $sql = mysql_query("SELECT * FROM kunden WHERE kunden_id = '".$kunden_id."'");
    $row = mysql_fetch_array($sql);
    // Ausgabe gestalten
    echo '<pre>';
    print_r($row);
    echo '</pre>';
}
?>

Anmerkung: Du musst natürlich die richtige Bezeichnung deines ID-Feldes in der DB verwenden (ich habe dafür einfach kunden_id benutzt).
 
Hi @ all,

@ludz: Danke erstmal für die ausfürliche Antwort.. ich krieg da aber die Fehlermeldung:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource
in dieser Zeile:

PHP:
while ($row = mysql_fetch_array($sql)) {

ich kann da aber ehrlich gesagt keinen Fehler entdecken...!?

MfG,
BladeNeo
 
Hast du auch das Feld kunden_id richtig benannt (in deinem Falle dann wohl einfach nur ´id´)?
Lass dir mal mit echo mysql_error(); den Fehler ausgeben.
 
Hi Ludz,

ja ich *** hab vergessen statt kunden_id id einzugeben *arggghhh*

Danke für die AW..

Wie interpretierst du die Fehlermeldungen eigentlich wenn ich fragen darf?

[EDIT]
hab auch noch mysql_connect und datenbank auswählen in den Anfang reingehauen, da er mit echo mysql_error(); rausbrachte, dass keine DB ausgewählt sei..

[EDIT2]
Kannst du mir bitte noch sagen wie ich die Daten in so'ner Tabelle ausgeben kann:

<table border="1" cellspacing="0" cellpadding="3" align="center">
<tr>
<td><b>Vorname</b></td>
.....
</tr>
<? while ($daten = mysql_fetch_array($result)) { ?>
<tr>
<td><? echo $daten[vorname]; ?></td>
.....
</tr>

MfG,
BladeNeo
 
Zuletzt bearbeitet:
Wie interpretierst du die Fehlermeldungen eigentlich wenn ich fragen darf?
Wie meinst du das genau?

Bzgl. der Darstellung in einer Tabelle:
PHP:
//Übersichtsseite 
<?php 
$sql = mysql_query("SELECT kunden_id, name, vorname FROM kunden ORDER BY name"); 

//Ausgabe
echo '<table border="1" cellspacing="0" cellpadding="3" align="center">
<tr><td><b>Kunde</b></td></tr>';
while ($row = mysql_fetch_array($sql)) { 
    echo '<tr><td><a href="detailseite.php?kunden_id='.$row['kunden_id'].'">'.$row['name'].', '.$row['vorname'].'</a></td></tr>'; 
} 
echo '</table>';
?>
Ich hoffe, du meintest das so.
 
Nee, jetzt gibt er mir nur: Kunde aus, mehr nicht.

Die erste Idee von dir gibt ja den Array aus, was nicht so praktisch ist da steht dann nämlich:
Code:
Array
(
    [0] => 16
    [id] => 16
    [1] => Matze
    [vorname] => Matze
    [2] => Mustermann
    [name] => Mustermann
    [3] => email@mustermann.de
    [email] => email@mustermann.de
    u.s.w
)
Ich hätte gerne die ganzen Sachen in ner Tabelle.. so dass es übersichtlich ist.

MfG,
BladeNeo
 
Zurück