SEO-Software von Suchmaschinenoptimierung.de

perl mysql

(hier klicken, um zum Original Thread zu gelangen)
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 Augenzwinkern ist mir selber grad aufgefallen, hat auch schon ein bisschen gepasst großes Grinsen )


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 Augenzwinkern
*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 Augenzwinkern
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

großes Grinsen

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 unglücklich
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
(hier klicken, um zum Original Thread zu gelangen)



Tipp: Ranking-Konzept.de - Das SEO-Forum (Forum rund um die Suchmaschinenoptimierung) der artaxo AG.
Das große Versicherungs ABC von Versicherung.de - mit allen Aspekten der Computerversicherungen!
Fan-Foren.de, die große Community mit Musikforum ist ab sofort online.