Variablenvergleich mit Mysql-tabelle

Alles, was PHP betrifft, kann hier besprochen werden.

Variablenvergleich mit Mysql-tabelle

Postby pauli » 21. April 2004 22:02

Kann mir jemand sagen, wie ich überprüfe, ob eine von PHP übergebene Variable in einer Tabelle vorhanden ist und sie ansonsten Hinzufüge?
pauli
 
Posts: 22
Joined: 21. April 2004 21:55

Postby BlackbirdHakke » 22. April 2004 06:51

Moin..

da gibts sicher verschiedene Wege..einer davon ist es, zB die ID der Zeile auszulesen, in der dein Begriff in einer Spalte vorkommt.

Code: Select all
$result="SELECT id FROM tabelle WHERE variale='$variable'";
// nun checken ob die id, also der Eintrag existiert
if(!$result) {
// existiert nicht, dann eintragen
$next_result="INSERT tabelle (variable) VALUES ('$variable')";
} else {
// existiert bereits
print "Eintrag bereits vorhanden";


Der Code ist aber nur schematisch zu sehen ;)

LG, Flo
~ich bin, denke ich~
Ishundia - das RPG
BlackbirdHakke
 
Posts: 89
Joined: 24. February 2004 08:51

Postby pauli » 22. April 2004 08:39

Danke, werds mal ausprobieren.
Was heiß schematisch?
pauli
 
Posts: 22
Joined: 21. April 2004 21:55

Postby BlackbirdHakke » 22. April 2004 09:48

Das du ihn nciht 1:1 übernehmen kannst ;) Ich kenne deinen Verwendungszweck nicht, und es fehlen zB der Verbindungsaufbau zum SQL Server etc ;)

Aber das Grundprinzip bzw die Abfrage ist drin.

LG, Flo
~ich bin, denke ich~
Ishundia - das RPG
BlackbirdHakke
 
Posts: 89
Joined: 24. February 2004 08:51

Postby pauli » 22. April 2004 10:38

BlackbirdHakke wrote:
Code: Select all

$next_result="INSERT tabelle (variable) VALUES ('$variable')";




$next_result=

Legt doch ne neue Variable an oder?
Wenn ich statt dessen die mysql-Anbindung hier einfüge, läuft es dann auch oder ist es günstiger diese variable zu nutzen um sie außerhalb der Schleife in die DB einzufügen?
pauli
 
Posts: 22
Joined: 21. April 2004 21:55

Postby BlackbirdHakke » 22. April 2004 11:14

Nö, das ist nur eine einfache Variable. Hab nur nen neuen Namen genommen, da ich nciht weiss, ob oder wie du result weiter verarbeiten würdest.

Die Anbindung musst du wie üblich davor öffnen und danach schliessen. Entweder bei beiden Anfragen oder global.

LG, Flo
~ich bin, denke ich~
Ishundia - das RPG
BlackbirdHakke
 
Posts: 89
Joined: 24. February 2004 08:51

Postby pauli » 22. April 2004 16:44

Mein skript sieht jetzt wie folgt aus und ist dafür gedacht, dass sich Leute registrieren können.

Code: Select all
<html>
<head>
<title>HandleReg</title>
</head>
<body>
<?php
//Legt DB-Zugriff fest
$Host="localhost";
$User="root";
$DBName="imperium";
$TableName="User";

$Link=mysql_connect ($Host,$User);

$Query="SELECT Benutzername from $TableName";
//Liest Benutzername aus
$Result=mysql_db_query($DBName,$Query,$LINK);
//Legt Ergebniss der Abfrage in Variable

mysql_connect ($Host, $User);

$result ="SELECT id FROM $TableName WHERE Benutzername = '       
          $Benutzername'";

if ($result) {
      header("Location: Login.php?Message=Invalid");
      exit;
      }
else { $next_result="INSERT $TableName (Benutzername) VALUES
      $Benutzername" );
//Hier müsste das Problem irgendwo liegen, hab aber schon ne ganze Menge probiert - nix funzt

print ("Du wurdest mit folgenden Daten registriert: <BR>
        $Vorname <BR>
        $Benutzername <BR>
        $Email <BR>
        <BR>
        Dein Passwort wird dir per E-Mail zugeschickt.");
}
mysql_close($Link);
header ("Location: Frame.html");
?>
</body>
</html>


Ich bekomme aber immer diese fehlermeldung:Parse error: parse error, unexpected ')' in C:\Programme\xampp\htdocs\HandleRegistrierung.php on line 31
pauli
 
Posts: 22
Joined: 21. April 2004 21:55

Postby Wiedmann » 22. April 2004 17:05

Code: Select all
falsch:
$Benutzername" );
               ^
richtig:
$Benutzername" };
               ^


Muß dir aber sagen, daß der Script so nicht funktionieren wird. Wie der Zugriff auf MySQL funktioniert solltest du vielleicht nochmal nachlesen.

Für problematisch halte ich zudem auch deine eingestreuten Header(). Die funktionieren so nur, weil beim XAMPP zufällig output_buffering = On ist. Wenn, dann solltest du das mit ob_start() und ob_end_flush() machen. Oder gleich ganz ohne lösen (wie will einer die Bestätigung lesen, wenn er sofort weitergeleitet wird?).
Last edited by Wiedmann on 22. April 2004 17:06, edited 1 time in total.
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby BlackbirdHakke » 22. April 2004 17:05

Achso...

Na das hätte ich dann ganz anders gelöst. Vorraussetzung ist, dass der Username in der Tabelle Unique ist.
Code: Select all
<....ausschnitt
//writes Data to Database table_adresse

$conn = mysql_connect($dbserver,$dbuser,$dbpass);
mysql_select_db($dbname,$conn);



$result = mysql_query("INSERT leckmich (id,name,pass,email,regdat) VALUES ('$id','$regname','$regpass','$regemail',NOW())");
                               mysql_close($conn);

//gives ok to user or not

if(!$result){
echo "uups, da ist wohl ein Name ,eine ID oder eine Emailadresse doppelt, probiers nochmal!";
} else {
echo "ok, User angelegt!<br>Du erh&auml;ltst eine Email mit einem Aktivierungslink.<br>Klicke hier um zur Startseite zu gelangen:<a href=index.php>Startseite</a>";
.....> rest code


Sieh dir das Beispiel mal an ;)

LG, Flo
~ich bin, denke ich~
Ishundia - das RPG
BlackbirdHakke
 
Posts: 89
Joined: 24. February 2004 08:51

Postby pauli » 27. April 2004 13:01

Hab das ausprobiert, aber bei mir funzt das nicht. Hab ziemlich lange
probiert und mit If - Abfragen probiert, bis wohin es klappt. Ich bin bis zu dem unten stehenden Code-Abschnitt gekommen, aber dann werden die Daten nie eingetragen. Hab auch die Tabelle mehrfach überprüft, dass die Spalten hin hauen, was der Fall ist.

Code: Select all
//writes Data to Database table_adresse

$query = "INSERT INTO user (Vorname,Benutzername,Passwort,Email)
VALUES ('$Vorname','$Benutzername','$Passwort','$Email',NOW())";

mysql_query($DBName,$Query,$conn);


[/code]
pauli
 
Posts: 22
Joined: 21. April 2004 21:55

Postby Wiedmann » 27. April 2004 14:18

1.) $query ist eine andere Variable als $Query
2.) Die wählst 4 Spalten aus und schreibst Werte in 5.
3.) Syntax von mysql_query() ist falsch:
resource mysql_query ( string Anfrage [, resource Verbindungs-Kennung])
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany


Return to PHP

Who is online

Users browsing this forum: No registered users and 10 guests