| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |
|

25-02-2008, 20:41
|
|
wiriwa
Newbie
|
|
Registriert seit: Feb 2008
Ort: Germany
Beiträge: 15
|
|
Konstanten
Hallo,
ich bin ein Neuling in PHP und habe ein Problem. Da Konstanten überall verfügbar sind, möchte ich den db_connect über diese regeln.
So habe ich meine Variablen definiert:
define ('DB_NAME' , 'usr_xyz') ;
define ('DB_USER' , 'xyz_db');
define ('DB_SERVER' ,'localhost') ;
define ('DB_PASSWORD' , 'passwort' ) ;
ansprechen möchte ich sie über include ("db_connect.inc")
$db = @ mysql_connect ( DB_SERVER, DB_USER, DB_PASSWORD )
or die ( 'Konnte keine Verbindung zur Datenbank herstellen' );
--------------------------------------------------------
$db_check = @ mysql_select_db ( DB_NAME );
if ( $db )
{
echo 'Verbindung zur Datenbank wurde hergestellt';
}
----------------------------------------------------------------------
Dies funktioniert auch 1 mal und meine in einem Table abgelegten $Variablen werden korrekt ausgelesen.
Da nach Dateneingabe über ein Formular beim anschließenden INSERT INTO die Verbindung zur Datenbank nicht mehr besteht, rufe ich db_connect.inc wieder auf. Dann ist kein connect mehr möglich, da die Konstanten nur noch den Namen ausgeben also:
DB_NAME
'DB_USER
DB_SERVER
DB_PASSWORD
Als Errormeldung wird ausgegeben:
Warning: mysql_query(): Access denied for user 'www-data'@'localhost' (using password: NO) in /var
und
Warning: mysql_query(): A link to the server could not be established in /var/
Was mache ich hier falsch?
Ich wäre sehr dankbar wenn mir jemand auf die Spünge helfen könnte.
Im voraus recht herzlichen Dank
wiriwa
__________________
wiriwa
Geändert von Kropff (27-02-2008 um 11:18 Uhr)
|

25-02-2008, 20:47
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.307
|
|
1. kein db_connect.inc sondern db_connect.inc.php, sonst kann man deine zugangsdaten auslesen
2. kein @-zeichen in der entwicklungsphase benutzen -> $db = @ mysql_connect
3. immer mit or die arbeiten
4. ist das ein anderes script, wo du die formulardaten verarbeitest, oder dasselbe?
5. in welcher datei hast du die konstanten definiert?
gruß
peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

25-02-2008, 21:00
|
|
tontechniker
PHP Senior
|
|
Registriert seit: Jul 2005
Beiträge: 1.972
|
|
OffTopic:
Zitat:
|
3. immer mit or die arbeiten
|
Würde ich nicht als generelle Empfehlung aussprechen - Exceptions und vernünftige Error Handler sind doch wesentlich sinnvolller ...
|

25-02-2008, 21:21
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.307
|
|
Zitat:
|
Exceptions und vernünftige Error Handler sind doch wesentlich sinnvolller
|
aber nicht für anfänger ;-), das kommt später.
gruß
der anfängerversteher
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

25-02-2008, 21:26
|
|
wiriwa
Newbie
|
|
Registriert seit: Feb 2008
Ort: Germany
Beiträge: 15
|
|
1. kein db_connect.inc sondern db_connect.inc.php, sonst kann man deine zugangsdaten auslesen
2. kein @-zeichen in der entwicklungsphase benutzen -> $db = @ mysql_connect
3. immer mit or die arbeiten
4. ist das ein anderes script, wo du die formulardaten verarbeitest, oder dasselbe?
5. in welcher datei hast du die konstanten definiert?
Hallo Peter,
danke für deine schnelle antwort.
Zu deinem Punkt 1
da hier nur die varnamen gespeichert sind, habe ich daran nicht gedacht. werde deinen rat jedoch sofort befolgen.
zu 2
ich habe noch nie ein @-zeichen verwendet.
zu 3
wo sollte ich dabei OR DIE verwenden?
zu4
die formulardaten werden in einer includefile (habe auch schon mit einer php-file getestet) erfasst und über
<form action=sta_insert.php method=post>
und sollen mit INSERT INTO in die datenbank.
zu 5
die konstanten habe ich im startfile definiert.
nochmals herzlichen dank
gruß
wilhelm
__________________
wiriwa
|

25-02-2008, 21:40
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.307
|
|
zu 2:
siehe: $db = @ mysql_connect ( DB_SERVER, DB_USER, DB_PASSWORD )
zu 3:
hinter jeder(!) sql-abfrage!
zu 4
<form action="sta_insert.php" method="post"> -> anführungszeichen!
zu 5:
also in der db_connect.inc/db_connect.inc.php?
gruß
peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

25-02-2008, 22:39
|
|
wiriwa
Newbie
|
|
Registriert seit: Feb 2008
Ort: Germany
Beiträge: 15
|
|
zu 2:
siehe: $db = @ mysql_connect ( DB_SERVER, DB_USER, DB_PASSWORD )
zu 3:
hinter jeder(!) sql-abfrage!
zu 4
<form action="sta_insert.php" method="post"> -> anführungszeichen!
zu 5:
also in der db_connect.inc/db_connect.inc.php?
Hallo Peter,
zu 2
die db_connect habe ich irgendwo herkopiert und bislang die @-zeichen anscheinend ignoriert. habe sie jetzt entfernt.
zu 4
diese zeile hat ein formgenerator erzeugt und habe jetzt die anführungszeichen eingefügt.
dann erscheint folgender error
Parse error: parse error, unexpected T_STRING in /var/www/web9/html/_test/wo_start.php on line 677
zu 5
als startfile meinte ich die file mit welcher aus dem menu heraus das script gestartet wird. zuerst habe ich direkt in dieser definiert, inzwischen ist die definition in einer include. also nicht im db_connect.inc.php
mein aufruf lautet:
include ("k_para.inc.php")
include ("db_connect.inc.php")
der konstantenfehler ist immer noch vorhanden
Warning: mysql_query(): Access denied for user 'www-data'@'localhost' (using password: NO) in /var/www/
und
Warning: mysql_query(): A link to the server could not be established in /var/
gruß
wilhelm
__________________
wiriwa
|

25-02-2008, 22:58
|
|
Blackgreetz
PHP Junior
|
|
Registriert seit: Oct 2005
Beiträge: 901
|
|
Wäre irgendwie Sinnvoll z.b. bei 4. den Code zu sehen (nur reletanten Code::672-683)
Wäre generell sinnvoller auch z.b. ein query zu zeigen und zu zeigen, wo du alles inkludest..
mfg
|

25-02-2008, 23:27
|
|
wiriwa
Newbie
|
|
Registriert seit: Feb 2008
Ort: Germany
Beiträge: 15
|
|
Hallo blackgreez,
die zeilen 672 -683
</script>
<form action=stamm_ein.php method=post>
<input type=hidden name=ToMail value=wo@elektro-smile.de>
<DIV ID=EL1 style=\"position:absolute; left:4px;top:1059px;z-index:1\">
<input class=PS_4 type=Submit value=Senden onclick=\"return check_form()\">
</DIV>
<DIV ID=EL2 style=\"position:absolute; left:129px;top:1059px;z-index:2\">
<input class=PC_4 type=Reset value=Reset>
</DIV>
meine startfile
include ("k_def.inc.php" ) ;
include ("db_connect.inc.php") ;
include ("anz_para_def.inc.php") ;
include ("bas_anz.inc.php") ;
ich werde diese includefiles später in einem includeordner unterbringen zum test sind alle noch in einer directory
mfg
wilhelm
__________________
wiriwa
|

25-02-2008, 23:48
|
|
tontechniker
PHP Senior
|
|
Registriert seit: Jul 2005
Beiträge: 1.972
|
|
[list=1][*]Du hast immer noch keine Anführungszeichen ergänzt wie Kropff es dir empfohlen hat.[*]Die geposteten Zeilen stammen ziemlich sicher aus einer anderen Datei.[/list=1]
|

26-02-2008, 01:01
|
|
wiriwa
Newbie
|
|
Registriert seit: Feb 2008
Ort: Germany
Beiträge: 15
|
|
Hallo tontechniker,
wie ich in einer vorigen antwort geschrieben habe, ist nach einfügen der anführungszeichen folgender error erschienen
Parse error: parse error, unexpected T_STRING in /var/www/web9/html/_test/wo_start.php on line 677
aus diesem grunde habe ich sie wieder entfernt.
mfg
wilhelm
__________________
wiriwa
|

26-02-2008, 09:28
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.307
|
|
Code:
<form action=\"stamm_ein.php\" method=\"post\">
oder
Code:
<form action='stamm_ein.php' method='post'>
Zitat:
|
Warning: mysql_query(): Access denied for user 'www-data'@'localhost' (using password: NO)
|
hast du dir mal die konstanten ausgeben lassen?
gruß
peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

26-02-2008, 11:37
|
|
wiriwa
Newbie
|
|
Registriert seit: Feb 2008
Ort: Germany
Beiträge: 15
|
|
Hallo Peter,
bei dem form action habe ich definitiv die \ vergessen.
In der testphase gebe ich immer die variable aus.
wenn ich diese in einer include definiere wird vor dem ersten ansprechen das value auch ausgegeben. danach bekomme ich nur noch die bezeichnung. nun habe ich die konstante in der db_connect.inc.php definiert, das wollte ich eigentlich vermeiden, damit diese nicht bei jedem aufruf aufs neue definiert werden. Das funkt auch wieder nur einmal, obwohl nach dem INSERT INTO auch das value ausgegeben wird. Wenn ich jedoch bei diesem befehl die db in klarschrift stehen habe wird der datensatz angehängt. dies wollte ich jedoch nicht, denn dann muß ich bei jeder neuinstalltion in jedem schnipsel den dbnamen eingeben. da meine anwendung für unseren schützenverein ist und ich nicht ewig pressent bin habe ich auf konstant gesetzt.
grüße
wilhelm
__________________
wiriwa
|

26-02-2008, 11:46
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.307
|
|
poste noch mal die db_connect.php
gruß
peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

26-02-2008, 12:11
|
|
wiriwa
Newbie
|
|
Registriert seit: Feb 2008
Ort: Germany
Beiträge: 15
|
|
meine db_connect.inc.php
----------------------------------
<?php
/*
Connect zur Datenbank ---- PHP Skript
(c) 2008 by W. Rilling
stellt Connect zu Datenbank her */
define ('DB_NAME' , 'usr_xyz') ;
define ('DB_USER' , 'xyz_1);
define ('DB_SERVER' ,'localhost') ;
define ('DB_PASSWORD' , 'passwort' ) ;
$db = mysql_connect ( DB_SERVER, DB_USER, DB_PASSWORD )
or die ( 'Konnte keine Verbindung zur Datenbank herstellen' );
$db_check = mysql_select_db ( DB_NAME );
if ( $db )
{
echo 'Verbindung zur Datenbank wurde hergestellt';
}
?>
grüße
wilhelm
__________________
wiriwa
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|