Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

Wo ist der Fehler im Script?





Frage

[code] <html> <head> <?php if ($gesendet) { $db = mysql_connect("localhost", "user", "passwort") or die("Datenbank konnte nicht konnektiert werden!"); mysql_select_db("datenbank") or die("Fehler beim Öffnen der Datenbank! Sie haben nicht die entsprechenden Dateirechte vergeben."); $sqlab = "insert tl_claninfo"; $sqlab .= "(clank, clanl, leader, mail,"; $sqlab .= " icq, passwort, homepage) values "; $sqlab .= "('$clank', '$clanl', $leader, $mail, '$icq', '$passwort', '$homepage')"; mysql_db_query("tl_claninfo", $sqlab); $num = mysql_affected_rows(); if ($num>0) echo "Es wurde 1 Datensatz hinzugefügt<p>"; else { echo "Es ist ein Fehler aufgetreten, "; echo "es wurde kein Datensatz hinzugefügt<p>"; } mysql_close($db); } ?> </head> <body> Geben Sie einen vollständigen Datensatz ein und senden Sie das Formular ab: <form action = "eingabe.php" method = "post"> <input name="clank"> Clan-Kürzel<p> <input name="clanl"> Clanname<p> <input name="leader"> Leader<p> <input name="mail"> mail des Leaders<p> <input name="icq"> Icq des Leaders<p> <input name="passwort"> gewünschtes Passwort<p> <input name="homepage"> Homepage<p> <input type="submit" name="gesendet"> <input type="reset"> </form> Alle Datensätze <a href="uf04.php">anzeigen</a> </body> </html> beachten ![/code]

Antwort 1 von semi

Bei der Methode POST im Formular musst Du die übergebenen Daten aus dem Hashtable (assoziatives Array) $_POST auslesen (gilt ab PHP 4.2)
z.B:

$clank  = $_POST['clank'];
$clanl  = $_POST['clanl'];
$leader = $_POST['leader'];
usw.


Antwort 2 von CAMEL

hmmm....
das ist aber komisch, da ich mir ein PHP 4.0 Buch gekauft habe, wo das so ungefähr drin stand.
Aber wenn du so nett bist, kannst du das Script so ändern, das es richtig ist und mir per mail schicken?
Wäre super nett
Danke

Antwort 3 von semi

Sag lieber, was nicht funktioniert ich habe keine Lust extra irgendwelche Datenbanken dafür anzulegen.
Gibt es irgendwelche Fehlermeldungen?
Ändere mal zum Test den Eintrag: method = "post" in method = "get".

Antwort 4 von CAMEL

Er gibt nur das hier aus

Es ist ein Fehler aufgetreten, es wurde kein Datensatz hinzugefügt

Antwort 5 von semi

Hast Du es mit method="get" versucht? Nanu?

Antwort 6 von CAMEL

ja, habe ich versucht, kommt immer noch der Fehler
hier wie die Tabelle aufgebaut ist, vielleicht ist da ein Fehler drin

  Feld  Typ Attribute Null Standard Extra Aktion 
   id  int(11)   Nein    auto_increment  Ändern  Löschen  Primärschlüssel  Index  Unique  Volltext  
   clank  char(55)   Nein      Ändern  Löschen  Primärschlüssel  Index  Unique  Volltext  
   clanl  char(55)   Nein      Ändern  Löschen  Primärschlüssel  Index  Unique  Volltext  
   leader  char(55)   Nein      Ändern  Löschen  Primärschlüssel  Index  Unique  Volltext  
   mail  char(55)   Nein      Ändern  Löschen  Primärschlüssel  Index  Unique  Volltext  
   icq  int(11)   Ja  NULL    Ändern  Löschen  Primärschlüssel  Index  Unique  Volltext  
   passwort  char(10)   Nein      Ändern  Löschen  Primärschlüssel  Index  Unique  Volltext  
   homepage  char(55)   Nein      Ändern  Löschen  Primärschlüssel  Index  Unique  Volltext  
 markierte:     Oder    




Antwort 7 von semi

Nur ein Feld kann einen Primärschlüssel haben.
Was für Server setzt Du ein? mySQL?

Versuche das hier:

echo "clank=$clank<br><br>";
echo $sqlab . "<br><br>";
mysql_query ($sqlab, $db)
    or die (mysql_error());
an Stelle von
mysql_db_query("tl_claninfo", $sqlab);



Antwort 8 von semi

Noch etwas. Erst jetz ist es mir aufgefallen.
Was für ein Buch war das, wo so viel Unsinn drin steht?

<head>
<?php
...
...
?>
</head>
Das würde bedeuten, dass die Ausgabe im Head-Bereich der Seite erfolgt!


Antwort 9 von semi

Du hast Email.

Antwort 10 von draack

Hi!

@semi: Unsinn. Natürlich kann ein Primärschlüssel über mehrere Felder gehen (Kombinationsschlüssel).
POST ist GET bei Formularfeldern IMMER vorzuziehen. GET erlaubt nur eine (sehr) begrenzte Datenmenge - da es über die URL kodiert wird (was wiederum eigene Probleme mit sich bringt).

@CAMEL: Bitte nicht einfach den HTML-Text von MyPHPAdmin kopieren. Wenn Du die Beschreibung einer Tabelle brauchst, gibst Du besser "DESC <Tabellenname>" in der SQL-Box ein. Was Du produziert hast, ist komplett unverständlich.

Lass Dir doch einfach mal mit
echo $sqlab;
anzeigen, welches SQL-Statement wirklich zusammengebaut wird.

Die Ausgabe von Text im <head>-Bereich ist wirklich Unsinn.

Ciao!
Volker.

Antwort 11 von semi

@draack
Ist klar, dass man einen zusammengesetzten Primärschlüssel verwenden kann. Aber nicht jedes Feld getrennt als Primärschlüsselfeld deklarieren.
So sieht es aber in Antwort 6 aus.


Antwort 12 von hollowsphere

Hi Camel,

nehme mal an, Du hast das Skript oben 1:1 vom Original kopiert. Dann fehlen im Insert-Befehl bei den Variablen $leader und $mail die Hochkommata.

Gruss Andreas



Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: