php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 03.04.2009, 21:34  
Erfahrener Benutzer
 
Registriert seit: 11.03.2009
Beiträge: 102
xstefxanx befindet sich auf einem aufstrebenden Ast
Standard datenbank abfrage mit php

hi,

hab folgenden quelltext:

PHP-Code:

<?php
    
if( isset($_POST['datum']) ){
    include 
'config.inc.php';

    
$datum $_POST['datum'];
    
$spiele $_POST['spiele'];
    
$faktor $_POST['faktor'];

    
$spieler1 = array($_POST['spieler1'],$_POST['punkte1'],$_POST['strafen1'],$_POST['einkauf1'],$_POST['sonstiges1']);
    
$spieler2 = array($_POST['spieler2'],$_POST['punkte2'],$_POST['strafen2'],$_POST['einkauf2'],$_POST['sonstiges2']);
    
$spieler3 = array($_POST['spieler3'],$_POST['punkte3'],$_POST['strafen3'],$_POST['einkauf3'],$_POST['sonstiges3']);
    
$spieler4 = array($_POST['spieler4'],$_POST['punkte4'],$_POST['strafen4'],$_POST['einkauf4'],$_POST['sonstiges4']);
    
$spieler5 = array($_POST['spieler5'],$_POST['punkte5'],$_POST['strafen5'],$_POST['einkauf5'],$_POST['sonstiges5']);

    
$sql "UPDATE
                Runden
        SET
                Spiele = $spiele,
                Faktor = $faktor,
                Spieler1 = $spieler1,
                Spieler2 = $spieler2,
                Spieler3 = $spieler3,
                Spieler4 = $spieler4,
                Spieler5 = $spieler5,
        WHERE
            ID = 1;"
;

    echo 
$sql;

    
$result mysql_query($sql) or die( 'Error[SELECT|User]: <br />
                                                           <pre>' 
$sql '</pre>
                                                           <br />
                                                           MySQL-Error: ' 
mysql_error() );
    }

?>
das skript liefert als ausgabe bspw:

UPDATE Runden SET Spiele = 16, Faktor = 0.5, Spieler1 = Array, Spieler2 = Array, Spieler3 = Array, Spieler4 = Array, Spieler5 = Array, WHERE ID = 1;

allerdings ändert sich in der datenbank nichts? was ist denn hier das problem? wenn die abfrage nicht stimmen würde müsste er doch eine fehlermeldung bringen. d.h. die abfrage müsste korrekt übermittelt werden. warum ändert er dann den datensatz in meiner datenbank nicht?
xstefxanx ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 03.04.2009, 21:38  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.706
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Kann zwei Gründe geben:
  • Syntaxfehler, da ist ein Komma zu viel
  • Bedingung ist FALSE

Bitte mache dich aber erstmal über SQL-Injections und darüber, was Google ist, schlau.
__________________
Refining Linux Advent Calendar series “24 Outstanding ZSH Gems
Manko10 ist offline  
Alt 04.04.2009, 01:31  
Erfahrener Benutzer
 
Registriert seit: 13.05.2006
Beiträge: 466
Curanai ist zur Zeit noch ein unbeschriebenes Blatt
Standard

DAS habe ich schon lange nicht mehr gesehen ... also jetzt "sowas"!!!

Syntaxfehler u. a., da Strings (tippe ich zumindest bei Spieler1 - 5) irgendwie sowas wie " oder ' haben sollten und diese auch entsprechend aufbereitet (htmlentities, mysql_(real_)escape_string usw.) werden.

Und tendenziell stehe ich nicht auf ";" am Ende von Queries via PHP ... ^^
__________________
Manche Menschen sind wie Schnitzel - nicht zäh, aber beidseitig bekloppt!
Curanai ist offline  
Alt 04.04.2009, 10:57  
Erfahrener Benutzer
 
Registriert seit: 11.03.2009
Beiträge: 102
xstefxanx befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Curanai Beitrag anzeigen
DAS habe ich schon lange nicht mehr gesehen ... also jetzt "sowas"!!!

Syntaxfehler u. a., da Strings (tippe ich zumindest bei Spieler1 - 5) irgendwie sowas wie " oder ' haben sollten und diese auch entsprechend aufbereitet (htmlentities, mysql_(real_)escape_string usw.) werden.

Und tendenziell stehe ich nicht auf ";" am Ende von Queries via PHP ... ^^
jetzt "funktionierts". naja also jetzt gibt er zumindest ne fehlermeldung aus . wie muss ich denn spalten definieren in denen ich ein array schreiben will?
er zeigt mir als fehlermeldung jetzt "MySQL-Error: Unknown column 'Array' in 'field list'" an.
xstefxanx ist offline  
Alt 04.04.2009, 11:59  
Erfahrener Benutzer
 
Registriert seit: 13.05.2006
Beiträge: 466
Curanai ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Du kannst meines Wissens nach kein Array aus PHP in der DB ablegen. Hier kannst Du Dir aber einen kleinen Trick aneignen, den ich selbst auch regelmäßig nutze - wer mich aber belehren, soll sich bitte melden!!!

Der "Trick" ...
PHP-Code:
$fuer_die_db ""// gegen NOTICE, falls wer fragt. ^^
for($a=0;$a<count($dein_array);$a++){
    if(
$a 0$fuer_die_db .= "|"// setzt ein "|" als Trenner in den String je Arrayfield ab 2. Position und nur wenn noch was folgt
    
$fuer_die_db .= $dein_array[$a];
}
echo 
$fuer_die_db
$fuer_die_db wird jetzt bspw. sowas zeigen: "a|b|c". Damit bekommst es gespeichert.

Darstellung:
PHP-Code:
$mein_array explode("|"$recordset_aus_db['so_heißt_meine_spalte']); 
Und schon sprichst Du mit $mein_array[0] (wäre hier "a"), $mein_array[1] (wäre hier b) usw. an ...

Korrigiert mich oder verbessert mich, wenn es zu umständlich ist ...
__________________
Manche Menschen sind wie Schnitzel - nicht zäh, aber beidseitig bekloppt!

Geändert von Curanai (04.04.2009 um 11:59 Uhr). Grund: Fehlerhafter Code korrigiert! (< statt =)
Curanai ist offline  
Alt 04.04.2009, 12:07  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Mit explode() hast Du immer ein Zeichen, dass Du nicht in diesem Feld speichern kannst (da es als Trenner benutzt wird). Mag angängig sein, da man irgendeiner Zeichen einfach ausschließen kann). Aber es gibt noch serialize() und json_encode(), bei denen man diese Beschränkung nicht hat.

Wenn Du einen komplexen, serialisierten Datentyp in MySQL speicherst, kann der Server natürlich nicht (sinnvoll) mit den Einzelwerten arbeiten. Wenn Du also zum Beispiel die Abfrage "...mit den meisten Punkten..." oder "...mit den wenigsten Strafen...." ausführen willst, musst Du alle Datensätze abrufen, von PHP auspacken lassen und dann bewerten. Wenn Du so etwas vorhast, solltest Du die Werte einzeln speichern.
David ist offline  
Alt 04.04.2009, 12:12  
Erfahrener Benutzer
 
Registriert seit: 13.05.2006
Beiträge: 466
Curanai ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Wenn Du Abfragen zwecks Sortieren usw. später vorhast, kann ich David guten Gewissens bestätigen ...
__________________
Manche Menschen sind wie Schnitzel - nicht zäh, aber beidseitig bekloppt!
Curanai ist offline  
Alt 04.04.2009, 13:14  
Erfahrener Benutzer
 
Registriert seit: 11.03.2009
Beiträge: 102
xstefxanx befindet sich auf einem aufstrebenden Ast
Standard

das mit dem einzeln speichern ist halt so ein problem, da ich ja praktisch eine mehrdimensionale tabelle brauche, da ich ja für jedes datum die mitspieler brauche als spalte und für jeden dieser mitspieler 4 oder 5 einträge habe
xstefxanx ist offline  
Alt 04.04.2009, 13:30  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

siehe http://de.wikipedia.org/wiki/Normalisierung_(Datenbank)
David ist offline  
Alt 04.04.2009, 14:26  
Erfahrener Benutzer
 
Registriert seit: 11.03.2009
Beiträge: 102
xstefxanx befindet sich auf einem aufstrebenden Ast
Standard

ok, hab mir das mal durchgelesen. also ich stell das mal jetzt in meinen worten da wie ich das verstanden habe und wie das bei meiner db aussehen müsste:

vorher: tabelle mit feldern rundenID, datum, spiele, faktor, spieler1, ... , spieler5
wobei spieler1, ... , spieler5 jeweils arrays enthalten haben von folgender formName, Punkte,Strafen,Einkauf,Sonsitges)

nun: 2 tabellen: felder 1. tabelle: rundenID, datum, spiele, faktor, Name spieler1, ... , Name spieler5
felder 2. tabelle: rundenID, spielerName, Punkte, Strafen, Einkauf, Sonstiges

aber was ist in der 2. tabelle jetzt der schlüssel?


außerdem habe ich noch das problem, dass folgende abfrage:

UPDATE
Runden
SET
Spiele = $spiele,
Faktor = $faktor
WHERE
Datum = $datum

wenn ich sie über php durchführe keinen fehler ausgibt aber auch nichts in der db ändert. wenn ich nun WHERE Datum =$datum durch WHERE ID = 1 ersetze funktioniert alles, d.h. es muss an $datum liegen. wenn ich mir die variable ausgeben lasse erhalte ich 2009-01-30. genau das steht aber auch in dem entsprechenden db feld

Geändert von xstefxanx (04.04.2009 um 14:39 Uhr).
xstefxanx ist offline  
 


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
Problem mit Abfrage - join, inner join, distinct? Gachet01 Datenbanken 2 27.01.2011 06:49
[Erledigt] Datenbank abfrage geordnet anzeigen Octavian PHP Tipps 2009 10 22.03.2009 15:39
Ausdruck aus Datenbank Abfrage fulltilt PHP-Fortgeschrittene 5 09.02.2009 12:17
[Erledigt] Formular Problem (Datenbank Abfrage) halekin PHP Tipps 2009 2 14.01.2009 12:45
Wiemache ich eine Abfrage über 3 Tabellen??? djscaleo Datenbanken 8 05.01.2009 10:46
MySQL - Fehler in einfacher Abfrage oden Datenbanken 11 03.01.2009 20:03
Datenbank Frage (Abfrage) 22hase Datenbanken 24 16.12.2008 15:32
Zufallsbild -> Abfrage MySQL Datenbank nic_ Datenbanken 4 24.11.2008 12:43
access datenbank abfrage georg099 Datenbanken 4 02.09.2008 08:27
OOP - Datenbank Abfrage ... 7Style PHP Tipps 2008 5 13.02.2008 13:28
Ergebnis aus Abfrage in Datenbank einfügen BBieniek PHP Tipps 2008 1 11.01.2008 02:51
[Erledigt] IF() abfrage in variable packen PHP Tipps 2005 14 01.04.2005 17:23
[Erledigt] SQL Abfrage funzt nicht Datenbanken 2 04.02.2005 11:09
Datenbank Abfrage: Ergebnis nur Array maximus Datenbanken 2 20.01.2005 17:07
Datenbank Abfrage: Nur Array als Ergebnis maximus PHP Tipps 2005 7 20.01.2005 15:14

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php array datenbank, php where abfrage, php datenbank abfrage array, db sql spieler2 spieler strafe

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:28 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