|
|
hummelchen
ich habe eine tabelle mit
CREATE TABLE `mitglieder` (
`id` int(11) NOT NULL auto_increment,
`password` longtext,
`nick` longtext,
PRIMARY KEY (`id`)
) TYPE=ISAM PACK_KEYS=1;
jede neuanmeldung bekommt eine id .
jetz möchte ich die id auslesen, aber so das diese id zu den jenigen nick gehört
zb : id=1 ist nick=test
id=2 ist nick=test2
mfg hummelchen
moonsword
mit perl oder php?
wäre wichtig, weil dann verschiebs ich nach cgi/perl
hummelchen
in perl
sorry wuste echt nicht wo ichs reinmachen solte
moonsword
ok, post ein beispiel und verschiebs
(ist auch ein bisschen komisch 
ist mir selber grad aufgefallen, hat auch schon ein bisschen gepasst 
)
wäre wichtig, weil dann verschiebs ich nach cgi/perl
das ist Konsole, kannst aber sicher umschreiben
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
|
#!/usr/bin/perl
use DBI;
#Verbindung herstellen
my $dbh = DBI->connect("DBI:mysql:$host:$db",$user,$pwd);
my $query = $dbh->prepare("SELECT id,nick FROM $tabelle");
#Query ausführen
$query->execute;
#Ausgabe
while(my ($id,$nick) = $query->fetchrow_array()){
print $id." mit dem Namen: ".$nick."\n";
}
|
|
Deises Beispiel ist aus dem Tutorial von artemis, dass scraper noch nicht freigegeben hat
*schieb*
hummelchen
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
|
my $sql = qq{select * from mit where id.nick = '$username'}; [COLOR=red]wers so richtig dan ich seste mal[/COLOR]
my $sth = $dbh->prepare($sql);
$sth->execute();
while(@ergebnis=$sth->fetchrow_array)
{
$user->{password} = $ergebnis[1];
$user->{nick} = $ergebnis[2];
[COLOR=red]wird mehr ausgelesen als die beiden sachen hier[/COLOR]
}
$sth->finish();
$dbh->disconnect(); |
|
also müste ich nur die id.nick so verknüpfen
der username ist das selbe wie der nick
klapt nicht so
moonsword
so heißt deine Tabelle "mit" ich weiß nicht obs stimmt, aber dein Query war falsch
so müsste es passen
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
|
my $sql = "select * from mit where nick = '$username'";
my $sth = $dbh->prepare($sql);
$sth->execute();
while(@ergebnis=$sth->fetchrow_array())
{
$user->{password} = $ergebnis[1];
$user->{nick} = $ergebnis[2];
}
$dbh->disconnect(); |
|
probiers mal so
artemis_TOAO
da du nur einen Eintrag willst kannst du auch
my @data = $dbh->selectrow_array($sql);
benutzen, ohne prepare,execute und while
hummelchen
stimmt tabelle heist mit solte die testtabelle sein
ja so klapts auch aber leider schreibt (komisch finde )das
jedes mal neu in die datenbank
deswegen wolte ich die id auslesen und den nick
so wen nick aktiv ist und auch seine id hat soll er dan die datenbank weiter auslesen
oder brauch ich nicht unbedinckt ne id ? soll aber besser sein las ich
PS: ich habe was vergesen lol
wen es den nick mit seiner id gibt ,soll er die daten speichern - somit brauch ich die id ja und auch zum löchen des nicks
artemis_TOAO
Ein primaray key ist besser wegen der Geschwindigkeit, das muss aber nicht zweingend eine ID sein, kann auch ein eindeutiger Name o.ä. sein.
Eine numerische ID bietet sich eben oft aufgrund des auto_inrements an.
Zum einfügen in die Datenbank:
Dazu können wir hier nicht viel sagen, da hier nie Code zum Einfügen sondern nur zum Auslesen gepostet wurde...
Ich rate einfach mal: du willst prüfen ob ein bestimmter Nick schon in der Datenbank vorhanden ist? Wenn ja soll nichts passieren ansonsten soll er gespeichert werden?
hummelchen
:genau so
ich vermute das speichern ist mein problem nicht das auslesen
ich poste mal das speichern aber ist echt nicht gut so denk ich 20 sachen werden da gepeichert-ich kürtze da mal ab
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
|
my $sql = qq[ INSERT INTO $DB_TABLE (id,password, nick,groupe,) VALUES (
NULL,
'$test->{password}',
'$test->{nick}',
'$test->{group}',
) ];
my $sth = $dbh->do($sql);
|
|
die $test->{werte} sind vom externen system
es sind 20 verschiedene werte zahlen aber auch email
die werden dan alle so gespeichert
in eine tabelle
id password nick group usw
artemis_TOAO also habe ich es richtig gemacht mit der id las darüber das man sowas machen sol habe da nehmlich keine feste bindungen das einzige wehre dan halt die ID
noch besser wehre wen id =nick ist solte er ne updat machen wen sich was ändert
bis jetz habe ich nur das insert hinbekommen
ich bin leider auch noch ziemlich neu mit perl balt nicht mehr hoffe ich
wegen (id,password, nick,groupe,) da in der datenbank group ein befehl ist und im externen system dies eine feste variabel ist hab ich das halt so gemacht '$test->{group}',
artemis_TOAO
Ein bisschen MySQL Basics:
1) prüfen ob ein Eintrag mit dem nick $nick vorhanden ist:
my ($cnt) = $dbh->selectrow_array("SELECT COUNT(*) FROM deinetabelle WHERE nick='$nick'");
if($cnt==0) {
# es ist ein neuer eintrag
} else {
#es existiert schon ein eintrag mit diesem nick
}
2) aktualisieren eines Eintrags mit dem nick $nick
$dbh->do("UPDATE deinetabelle SET spalte='neuerwert', anderespalte='andererneuerwert' WHERE nick='$nick'");
du solltest im Übrigen die Spalte als primary key nehmen, die du auch hier zum Zuordnen benutzt.
Hoffe das hilft dir ein bisschen
hummelchen
artemis_TOAO
super danke dir das hat sehr geholfen
den sode hab ich so übernommen
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
|
if($cnt==0) {
# es ist ein neuer eintrag
#hier habe ich mein insert eingebaut neuer user neuer eintrag
} else {
#es existiert schon ein eintrag mit diesem nick
# dies habe ich noch nicht benützt
}
{ |
|
sagt mal gibs den ne gutes buch wegen datenbanken speziell mysql in php und perl?
die 20 felder sind fest stehende daten
dan gibs noch custom felder also solche die der user nicht unbedingt braucht
wie würde man dies den machen in eine extra tabelle oder in die wo 20 feste felder sind
nur dashalt die coustom felder sehr groß werden könnten
zc felder _coustom
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
|
'nosmileys',
'birth_date',
'homepage',
'homepagetitle',
'points','onlinetime','newsletter','aim','msn','yim','linkname','link',
'linkname2','link2','linkname3','link3','textf','besch','userbild','hobby',
'ort','sternbild','sternbildid','muke','text','land',
'augenf','groesse','haar','motto','bgimg','plz','bg','wwwl','warns'
|
|
könnte man das peer arry in die datenbank schreiben das jeder extra übergeben wird oder alles auf einmal wie ich oben bein den 20 festenfelder gemacht habe direct
moonsword
Alle Datenbanken spricht man mit der Gleichen Sprache an, sprich SQL, Nur die Befehle sind in en einzelnen Sprachen anders.
http://mysql.com
ist ein guter Anlaufpunkt für SQL
artemis_TOAO
Bücher:
Datenbanken mit Perl: Programming the Perl DBI
und für MySQL die online Dokumentation bzw das entsprechende Buch (ich glaube MySQL - Das offizielle Handbuch, bin grad zu faul zum Regal zu gehen)
hummelchen
von oreilly -perl dbi
werde mir da gleich mal eins holen dan ist doch nicht so einfach mit den tabellen grade der erste schriet die datenbanken aufzubauen ist echt schwer und wen man sowas noch nie gemacht hat noch schlimmer und noch anfänger in perl
ich suche viel im www aber so richtig findet man da auch keine beispile wie sowas genau aus zusehn hat und wo man achten mus -nur das eben eine ID sehr wichtig sein könnte
hummelchen
artemis_TOAO
ging nicht wie du es mir erklert hattest
wen du zeit hast wieder können wir uns ja noch mal darüber unterhalten
man brauch ja nur die sachen load und save stat text in datenbank und löschen
was ich hinbekommen habe ist
save und load dies geht soweit muste doch alle variabeln angeben
wie ist es mit der id ?
eindeutige var
zur eindeutigkeit könnte man ne benutzer nehmen der wir in einer text datei gespeichert und dies hex verschlüsselt-der benutzer wird nicht in die datenbank gespeichert
somit braucht man doch keine id oder braucht man die wegen hochzählung
na langsam wirds für mich schwerer das alles
moonsword
| Zitat: |
hummelchen
zur eindeutigkeit könnte man ne benutzer nehmen der wir in einer text datei gespeichert und dies hex verschlüsselt-der benutzer wird nicht in die datenbank gespeichert |
wenn du aber den Namen des User nimmst, dann hast aber keine Eindeutigkeit mehr, da der Name öfters gewählt werden kann. Dann ist ja auch logischerweise die Hex-Verschlüsslung Gleich.
Dann wo willste des hinspeichern, die Verschlüsslung?
hummelchen
es ist ein chatsystem was ich in eine datenbank rein machen will alles was mit den nicks zu tun hat
das plugin speichert alles in eine textdatei ab
die eine datei sieht so aus
nick|benutzer dies wird fürdie übersetzung genommen wen man das dan benutzer als anmeldung benützt
inder anderen datei sind dan die daten drin des benutzers
sieht so aus
pswwd
nick
gruppe (admin oder so)
email
immer untereinander
PS: der chat arbeitet mit benutzer und nick
je nach den was man einstelt mus sich ein user mit nick oder benutzer anmelden
hat man nick aktiv dan wird der benutzt automatisch angelegt
deswegen dacht ich man könnte den benutzer auch nehemn
hoffe ihr habt mich jetzt verstanden -sage ja wird immer schwerer
ich habe mal die pm angehängt damit ihr auch malschauen könnt wie ich das meine
ist die originale wo ich noch keine änderungen gemacht hatte
infos was in datenbank rein soll hab ich da reingeschrieben
hummelchen
wie kan ich das machen mit dem löschen
des nicks aus der datenbank
ich habe die id und den dazugehörigen nick aber wie finde ich dan die id zum nick
my $wert=1;
my $nick ='testnick';
DELETE FROM mit WHERE id='$wer' or nick='$nick';
wehre dies richtig
es soll die zeile id des users mit demnick gelöscht werden
mfg hummelchen
artemis_TOAO
AND statt OR
|
|