php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 03.01.2009, 21:00  
Erfahrener Benutzer
 
Registriert seit: 02.01.2009
Beiträge: 189
beta02 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Könntest du mir diesen Abschnitt erklären:
PHP-Code:
UNIQUE KEY `idx1` ( `id_abstimmung` , `id_wer` ) 
Für was soll das gut sein? Wie kann ich per PHP auf dies zugreifen?
beta02 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 03.01.2009, 21:15  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Damit wird ein Index für die Tabelle angelegt. Das ist sowas wie ein Schlagwort-Register für die Tabelle.
"Datensätze mit x=1 stehen auf Seite 3,6,8,12,17,1099 und 4711"
Wenn Du eine Abfrage zum Beispiel mit WHERE x=1 hast, muss MySQL nicht alle Datensätze durchgehen und die Werte vergleichen, sondern nur im Index nachsehen, wo die entsprechenden Datensätze stehen.

UNIQUE bedeutet, dass es nur eine Seiteangabe (also nur einen Datensatz mit genau diesem Indexeintrag) geben darf.
Wenn Du einen neuen Datensatz einfügst, prüft MySQL, ob es bereits einen solchen Index gibt (bei UNIQUE). Wenn ja, schreibt es den Datensatz nicht in die Tabelle sondern liefert einen Fehlercode.

( `id_abstimmung` , `id_wer` ) bedeutet, dass der Index aus zwei Feldern zusammengesetzt ist. Die Werte der Felder werden dafür mehr oder weniger direkt aneinander gehängt. Also id_abstimmung=abc , id_wer=xyz -> Eintrag im Index=abcxyz


Ist aber erstmal nicht so wichtig ...das kommt noch
David ist offline   Mit Zitat antworten
Alt 03.01.2009, 21:47  
Erfahrener Benutzer
 
Registriert seit: 02.01.2009
Beiträge: 189
beta02 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Für die Bewertung müsste ich doch bei id_wer ja die IP speichern. Aber in die Datenbank kann man ja gar nicht IP speichern oder doch? Wenn ja wie?

Ich wollte es so speichern:

// IP in Datenbank speichern
$ipadress = $_SERVER['REMOTE_ADDR'];
$eintrag = "INSERT INTO tl_rater (id_wer) VALUES ('$ipadress')";
$eintragen = mysql_query($eintrag);

In der Datenbank steht aber nur der Anfang, nämlich 217162

Was sollte besser in die Datenbank bei id_wer? Wie kann man dieses Bewertungsmodul jetzt am besten programmieren?
beta02 ist offline   Mit Zitat antworten
Alt 03.01.2009, 21:50  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Das war doch nur ein Beispiel. Vielleicht hast Du gar kein id_wer. Dann kann halt jeder so oft abstimmen, wie er oder sie lustig ist
Wenn Du die IP als Zeichenkette (217.162.x.y) speicherst, muss das Feld in der Tabelle natürlich auch entsprechende definiert sein. Nicht als INT(10) sondern zum Beispiel als varchar(15) (für IPv4).
David ist offline   Mit Zitat antworten
Alt 03.01.2009, 22:07  
Erfahrener Benutzer
 
Registriert seit: 02.01.2009
Beiträge: 189
beta02 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hey du bist einfach hammer! Jetzt habe ich es geändert in varchar(15) und es funktioniert.

Jedoch neues Problem:

PHP-Code:
// Bewertungsnummer
$bewertungsnr 1;
$eintrag "INSERT INTO tl_rater (id_bewertungsnr) VALUES ('$bewertungsnr')";
$eintragen mysql_query($eintrag);

// IP in Datenbank speichern
$ipadress $_SERVER['REMOTE_ADDR'];
$eintrag "INSERT INTO tl_rater (id_wer) VALUES ('$ipadress')";
$eintragen mysql_query($eintrag);

// Daten von Website werden in Datenbank gespeichert
$eintrag "INSERT INTO tl_rater (value) VALUES ('$value')";
$eintragen mysql_query($eintrag); 
Wenn ich das Formular abschicke erzeugt es in der Datenbank jetzt 3 Reihen in denen immer nur ein Datenfeld besetzt ist. Sozusagen es macht für jeden "Auftrag" eine neue Reihe. Ich möchte aber das es nur eine Reihe erstellt mit 3 ausgefüllten Datenfeldern.

Weist du an was das liegt?
beta02 ist offline   Mit Zitat antworten
Alt 03.01.2009, 23:13  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Mit INSERT legst Du einen neuen Datensatz an - jedes Mal.
Deshalb musst Du auch alle Felder "in einem Rutsch" angeben, die da rein sollen, nicht drei mal hintereinander ein einzelnes Feld.
Wenn Du Zeichenketten in die SQL-Abfrage einbringst
Zitat:
VALUES ('$value')
musst Du dafür sorgen, dass diese nicht die SQL-Syntax durcheinander bringen können, siehe sql injections - Google Search
Wenn Du Zahlen hast, musst Du sicherstellen, dass es wirklich Zahlen sind. (Oder Du behandelst sie einfach auch wie Zeichenketten und übergibst sie auch mit '..' an mysql)


PHP-Code:
<?php
$mysql 
mysql_connect('..''..''..') or die(mysql_error());
mysql_select_db('..'$mysql) or die(mysql_error())

$bewertungsnr 1// kein Zweifel: eine Zahl ;-)
$ipadress mysql_real_escape_string($_SERVER['REMOTE_ADDR'], $mysql);
$value mysql_real_escape_string('???'$mysql);

$sql "
    INSERT INTO
        tl_rater
        (id_bewertungsnr, id_wer, value)
    VALUES
        ($bewertungsnr, 'ipadress', $value)
"
;
mysql_query($sql$mysql) or die(mysql_error());
echo 
'Anzahl eingetragener Datensätze: 'mysql_affected_rows($mysql);
David ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
GUI-Tool kann sich nicht mit MySql verbinden KWitt72 PHP Tipps 2008 3 21.12.2008 16:56
[Erledigt] MySQL - ERROR 1044 bei erstellen einer Datenbank _youngenterpriser_ Datenbanken 2 05.02.2008 17:56
Mysql Server Einstellunen Optimieren pchero Datenbanken 3 01.05.2007 19:50
[Erledigt] Kein Zugriff über ODBC mit der IP-Adresse auf MySql DB Datenbanken 4 09.02.2006 11:04
[Erledigt] Zu blöd um MySQL in PHP einzurichten? Apache Server PHP Tipps 2006 18 30.01.2006 23:39
Mysql 4.1.x unter php 4.3.9 Datenbanken 3 15.11.2005 13:49
[Erledigt] Schnittstelle zwischen PHP und MySQL klappt net !!! Datenbanken 16 16.10.2005 14:24
[Erledigt] not allowed to connect to this MySQL server PHP Tipps 2005-2 2 23.09.2005 18:34
mysql_result(): supplied argument is not a valid MySQL PHP Tipps 2005-2 4 25.08.2005 14:44
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
MYSQL läuft nur wenn /tmp auf 777 Datenbanken 5 06.07.2005 08:38
mysql root passwort vergessen Datenbanken 1 29.05.2005 11:33
[Erledigt] Access denied for user: '@localhost' / SYSTEM@localhost Datenbanken 0 10.11.2004 20:35
[Erledigt] tabellen verknuepfen und ergebnisse ueber link ausgeben PHP Tipps 2004 3 21.09.2004 06:04
PHP5 &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp; MySQL Datenbanken 5 01.08.2004 05:47

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql schlagwortregister

Alle Zeitangaben in WEZ +1. Es ist jetzt 01:41 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum