Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

folgende Fehlermeldung erhalte ich jetzt:


Parse error: parse error, unexpected T_VARIABLE in C:\FoxServ\www\php_dateien\datenbank\05Formular\eintragen.php on line 22
[/PHP]

so habe ich das jetzt in meinem Programm stehen:

[PHP]
$sql = "insert into adresse(fname, sname, email) ";
$sql .= "Values ("$HTTP_GET_VARS['fname']", "$HTTP_GET_VARS['sname']", "$HTTP_GET_VARS['email']")";

habe ich das jetzt so richtig geschrieben?

  • Antworten 57
  • Erstellt
  • Letzte Antwort

Top-Benutzer in diesem Thema

Geschrieben

Hi,

ich mach das immer so:

$sql .= "Values ('".$HTTP_GET_VARS["fname"]."', '".$HTTP_GET_VARS["sname"]."', '".$HTTP_GET_VARS["email"]."')";

Aber die einfachen und doppelten Anführungsstriche kannst du beliebig einsetzen. Es muss halt nur nachher ein konsistenter String rauskommen. ;)

Gruß Jaraz

PS: Jetzt weiss ich wieder, warum ich PreparedStatements in Java so Liebe. :D

Geschrieben

ein Wunder es geht!

danke Jarez!

schon wieder eine Frage:

wenn ich Datensätze lösche, dann fängt er trotzdem z. B. Stand ist 40 und ich habe die letzten 10 Datensätze gelöscht, warum fängt er dann beim 41 an und nicht bei 30?

Geschrieben

ein Wunder es geht!

danke Jarez!

schon wieder eine Frage:

wenn ich Datensätze lösche, dann fängt er trotzdem z. B. Stand ist 40 und ich habe die letzten 10 Datensätze gelöscht, warum fängt er dann beim 41 an und nicht bei 30?

Geschrieben
Originally posted by DFBL-Benjamin

danke Jarez!

Auch wenn es nur ein Nick ist, ich heisse Jaraz. :D

Originally posted by DFBL-Benjamin

schon wieder eine Frage:

wenn ich Datensätze lösche, dann fängt er trotzdem z. B. Stand ist 40 und ich habe die letzten 10 Datensätze gelöscht, warum fängt er dann beim 41 an und nicht bei 30?

Weil das kein Zaehler ist, sondern ein Wert zur eindeutigen Identifizierung eines Datensatzes. Es kann ja sein, das du in anderen Tabellen drauf verzweigst. Wenn du dann löscht, besteht die Beziehung nicht mehr. Normalerweise sollten sowas zwar nicht passieren aber noch viel schlimmer ist es, wenn du nun die ID nochmal vergibst. Dann wird aus Babybrei auf einmal Domestos und das wollen wir doch wohl nicht. ;)

Gruß Jaraz

Geschrieben

sorry, das ich dich falsch geschrieben habe!

ist klar!

kann man dann später z. B. wenn die Zeile gelöscht wurde, nicht mehr verwendet werden?

wie kann ich z. B auf ein Feld zugreifen?

Beispiel:

ID Interpret Min

1 andere Tabelle z.B Interpreten da möchte ich die Nr. 5 haben 5:44

wie muss ich den Zugriff programmieren, das dann da die Zahl des Interpreten drinsteht?

die Nr. ist gleich der ID in der Tabelle Interpret!

Geschrieben

wenn ich es jetzt folgender Maßen eingebe, dann bringt er mir einen Fehler:

insert into urlaub(id_mitarbeiter, Resturlaub)

values(???, 30);

was muss ich da bei den Fragezeichen schreiben, wenn die ID, die ich benötige in der Tabelle "mitarbeiter" drin steht und der 2 Mitarbeiter gemeint ist.

in der Tabelle Mitarbeiter heißt die Spalte folgender Maßen: ID_mitarbeiter!

ich hoffe, mir kann jemand helfen?

  • 3 Wochen später...
Geschrieben

schon wieder so ein Problem mit der Eingabe der Daten und dann Weiterverarbeitung, das soll dann so wie ein Login überprüfung sein:

login.php


<html>
<head>
<title>Termin- und Urlaubsplaner</title>
<meta name="author" content="Benjamin Gaus_2">
<meta name="generator" content="Ulli Meybohms HTML EDITOR">
</head>
<body bgcolor="#FFFFFF" link="#0000FF" alink="#0000FF" vlink="#0000FF">
<font size="2" color = "#0040FF">
<h2 align="center">Login-Formular</h2>
<br>
<form action=verarbeiten.php method=get target=>
<table border=0 align=center width=20%>
<tr>
<td width=50%><font size=4 color=#0040FF>Benutzername: </font></td>
<td width=50%><input type=Text name=benutzername size=10 maxlength=10></td>
</tr>
<tr>
<td width=50%><font size=4 color = #0040FF>Passwort:</font></td>
<td width=50%><input type=Password name=passwort size=10 maxlength=10></td>
</tr>
</table>
<table border=0 align=center width=20%>
<tr>
<td align=center width=50%><input type=Submit name=login></td>
<td align=center width=50%><input type=reset></td>
</tr>
</table>
</form>
</font>
</body>
</html>
[/PHP]

verarbeiten.php

[PHP]
<?php
/*
* Ueberpruefen ob die Zugangsdaten korrekt waren
*
*/

// Zugangsdaten zur Datenbank
$conn = mysql_connect("localhost","benjamin","********");

// Wechsel der Datenbank
mysql_select_db(projekt_bkik);

// Mysql-Befehl zum Ueberpruefen der Zugangsdaten mit den Datenbank-Daten
$sql = "select * from mitarbeiter where ";
[B] $sql .= "(((id = '".$HTTP_GET_VARS['benutzername']"') or (name = '".$HTTP_GET_VARS['benutzername']."')) ";
$sql .= "and (passwort = '".$HTTP_GET_VARS['passwort']."'))";[/B]

$result = mysql_query($sql, $conn);
?>

und es kommt folgende Fehlermeldung Zeile 15 ist die, die Schwarz hervorgehoben ist!

Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in C:\FoxServ\www\intern\projekt_hp\login\verarbeiten.php on line 15

was habe ich jetzt falsch gemacht?

gibt es irgendwo eine Fehlerbeschreibung bei Mysql bzw. PHP-Fehler?

Geschrieben

habs auch schon herausgefunden, wo ich mir das nochmal näher angeschaut habe!

jetzt habe ich das Programm verarbeiten.php erweitert


$result = mysql_query($sql, $conn);

if($result)
{
echo "eingelogt!";
}
else
{
echo "Ihre eingegebenen Daten stimmen nicht überein mit den Daten in der Datenbank!";
}
[/PHP]

die Funktion mysql_query soll mir true zurückliefern, macht es aber nicht. Weil bei select-Anweisungen zeigt der Zeiger auf die Ergebnisliste und gibt mir dann nicht wie ich das gerne hätte true zurück so wie bei insert, update oder delete!

was könnte ich dann nehmen, das ich true erhalte?

oder ist die Methode, so wie ich das machen will zuumständlich?

wie löst ihr das bei einem Login-Formular?

Geschrieben

Moin !

mit dem Befehl

$anzahl = mysql_num_rows($result)

kriegst Du die Anzahl der gefundenen Datensätze zurück, bei 0 ist es halt nicht vorhanden

Ich mach das ähnlich, da meine Passwörter verschlüsselt gespeichert werden, lese ich das Passwort zu dem User aus der Datenbank in eine Variable und vergleiche die dann mit dem eingegebenem (das dann natürlich vorher auf die gleiche Weise verschlüsselt wird).

gruß

Christian

Geschrieben

habe das jetzt so gemacht, wie ich das vermute, das du das so meinst!

und dann kommt folgende Fehlermeldung:

Parse error: parse error, unexpected T_IF in C:\FoxServ\www\intern\projekt_hp\login\verarbeiten.php on line 21

verarbeiten.php


<?php
/*
* Ueberpruefen ob die Zugangsdaten korrekt waren
*
*/

// Zugangsdaten zur Datenbank
$conn = mysql_connect("localhost","benjamin","*******");

// Wechsel der Datenbank
mysql_select_db(projekt_bkik);

// Mysql-Befehl zum Ueberpruefen der Zugangsdaten mit den Datenbank-Daten
$sql = "select * from mitarbeiter where ";
$sql .= "id = ".$HTTP_POST_VARS['benutzername']." or name = ".$HTTP_POST_VARS['benutzername']." ";
$sql .= "and passwort = ".$HTTP_POST_VARS['passwort']." ";

$result = mysql_query($sql, $conn);
$anzahl = mysql_num_rows($result)

if($anzahl)
{
echo "eingelogt!";
}
else
{
echo "Ihre eingegebenen Daten stimmen nicht überein mit den Daten in der Datenbank!";
}
?>
[/PHP]

was habe ich jetzt da falsch programmiert?

Geschrieben

dafür kommt jetzt der Fehler:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\FoxServ\www\intern\projekt_hp\login\verarbeiten.php on line 19

was hat der schon wieder zu bedeuten!

und dann kommt noch als Ausgabe, dass die eingegenen Daten die falschen seien!

Geschrieben

Das heisst, daß die SQL-Anweisung warscheinlich fehlerhaft ist und nicht korrekt ausgeführt wurde, und somit auch kein Ergebnis in $result geschrieben wurde. Daher kommt die Fehlermeldung bei num_rows ($result ist ja leer) und die Ausgabe mit den falschen Daten (als Folge ist $anzahl ja auch leer).

Hab auch Deinen Fehler denk ich gefunden: wenn Du unter SQL Strings vergleichst, müssen diese in Gänsefüßchen/Hochkomma stehen, also müsste das ganze dann so ausschauen:

$sql .= "id = '".$HTTP_POST_VARS['benutzername']."' or name = '".$HTTP_POST_VARS['benutzername']."' ";

$sql .= "and passwort = '".$HTTP_POST_VARS['passwort']."' ";

lass Dir in so einem Fall am besten immer einmal den kompletten SQL-String per Echo ausgeben, dann kann man sehr gut sehen woran es liegt.

Geschrieben

jetzt gehts!

aber der große Hit ist es halt noch nicht!

weil er sagt mir manchmal, wenn ich falsche Zugangsdaten eingebe, das ich trotzdem eingeloggt bin, aber das darf doch normalerweise nicht sein!

was ist sicherer? eine Zugangszahl wie 100 oder der Name des Kontoinhabers?

ich möchte die Sicherste Art nehmen!

und dann sollte es wenn ich das schaffe mit SSL übertragen werden!

Geschrieben

Na sicherer ist denk ich mal, eine ID, die mit AUTO_INCREMENT erzeugt wurde. Außer du hast die Namensspalte UNIQUE gesetzt... Aber ich denke mal, dass es besser ist, die ID zu nehmen.

The HotkeyM

Geschrieben

Soweit ich weiß, fängt das immer mit 1 an...

Aber da gibts Trick 17c:

PHP-Script, dass 100 Datensätze erstellt und gleich wieder löscht

Danach bleibt AUTO_INCREMENT eigentlich auf 101 stehen (als nächste ID)

The HotkeyM

Geschrieben

ich habe jetzt herausgefunden, warum das nicht so genau ging mit dem Passwort!

ich hatte nur 4 Zeichen, dann habe ich das Doppelte genommen und es ging dann auch nur, bei den Passwörtern sich einzuloggen!

jetzt meine Frage.

wie bekomme ich, wenn die Anmeldung OK war, auf die Hauptseite, den Namen, des USERs, der dann Einträge z. B. tätigen kann.

in login.php werden die Daten eingetragen und in verarbeiten.php wird überprüft ob man eingeloggt wird oder nicht, dann wird man weitergeleitet (index.php), wenn man eingeloggt ist auf die Startseite meiner Projektarbeit. Meine Frage: Wie bekomme ich dann den Namen auf die andere Seite?

wie kann ich das Lösen?

das der Namen auf der Startseite dann steht?

Geschrieben

Warum speicherst du die daten nicht in ner session oder nem cookie? da kann man dann die daten immer wieder ausgeben... ich machs z.b. immer über sessions, registriere den datensatz über session_register("Datensatz") dann geht sowas...

The HotkeyM

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...