• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

was is alles flasch?

Status
Für weitere Antworten geschlossen.

philipp

Neues Mitglied
also... mein erstes PHP script. wirklich.. das absolut erste, ihr muesst mir helfen

datenbank wird l2adb heissen
usernameF und passF sind die variablen aus dem formular
CMS is die tabelle, in der die userdaten sind

vorallem die prüfung is glaub ich nicht richtig.. weil ich ned genau weiss, wie ich das machen soll, dass nur ein datensatz verglichen wird(wo der usernameF mit dem username übereinstimmt.

was hab ich da alles falsch?


Code:
<?php 
//Benutzerabfrage
if (isset($_POST[usernameF]))
{
	//Verbinden zu MySQL
	$dbcnx = @mysql_connect('localhost', 'root', '*****');
		if (!dbcnx) { exit('

Datenbankprogramm nicht erreichbar</p>'); }
	//Verbindung zur Datenbank
	if (!mysql_select_db('kaerntnerin')) {exit('

Datenbank nicht erreichbar</p>');}
	//Holen der Informationen
	$user = @mysql_query('SELECT username, pass FROM CMS');
	if (!$user) {exit('

Datenbank nicht erreichbar</p>');}
	while ($users = mysql_fetch_array($user))
	{
	$usernameDB = $users['username'];
	$passDB = $users['pass'];
	}
		//Pruefung
		if ($usernameF == $usernameDB and $passF == $passDB) { ?>
		
		
		
<?php }
else
{ exit('

Bitte tragen sie eine Benutzerkennung ein</p>'); }
?>
 
Werbung:
du suchst doch einen bestimmten datensatz oder? dann lege doch gleich im SQL befehl fest was du suchst:
Code:
SELECT [spalten] FROM ´[tabelle]´ WHERE ´[spalte_pw]´='[passwort]' AND ´[spalte_name]´='[name]' LIMIT 1;
 
if (!dbcnx)
was soll das werden? guck mal bitte genau hin

{ exit('

Datenbankprogramm nicht erreichbar</p>'); }
was sollen die klammern?

{exit('

Datenbank nicht erreichbar</p>');}
was sollen die klammern?

$user = @mysql_query('SELECT username, pass FROM CMS');
gib bitte die datenbank verbindung mit an

ansonsten schliesse ich mich prophets vorschlag an - die while schleife und das if sind dann vollkommen unnoetig
 
Werbung:
die fehler im code wurden schon erwähnt, aber dein Post-Titel ist noch falsch:
"was is alles flasch?" :mrgreen:

anstelle von

[php:1:912e005ac6]else
{ exit('

Bitte tragen sie eine Benutzerkennung ein</p>'); } [/php:1:912e005ac6]

kannst du auch (schon von niklasboelter erwähnt)

[php:1:912e005ac6]
else
exit('

Bitte tragen sie eine Benutzerkennung ein</p>');
[/php:1:912e005ac6]

verwenden. Die "{" und "}" bei if..else (auch bei schleifen: for, while, etc.) darfst du immer dann weglassen, wenn nur eine Anweisung folgt.

Greez Chris
 
besser ist es aber exit einen einzuruecken um die uebersicht zu wahren :)
 
Werbung:
joa - 5000 zeilen code und irgendwo fehlt eine } - das ist schon ziehmlich gemein
(da lob ich mir php-eclipse -automatische einrueckung und er zeigt immer die zugehoerige klammer an wenn man den cursor neben dem gegenstueck hat)
 
Werbung:
nein man kann es auch von hand machen (was aber bei grossen klammer haufen sehr sehr umstaendlich ist)
 
es gibt im internet auch freeware tools, die das für php machen...
allerdings ist es tortzdem noch sehr mühsam, den fehler zu finden
 
Code:
while ($users = mysql_fetch_array($user))
   {
   $usernameDB = $users['username'];
   $passDB = $users['pass'];
   }
      //Pruefung
      if ($usernameF == $usernameDB and $passF == $passDB) { ?>
      
      
      
<?php }

wenn du alle user durchläufst und die beiden vars immer gleich zuweist ist di wahrscheinlichkeit immer kleiner je mehr user du hast. wie ich schon sagte suche die über den von mir genannten mysql befehl einen passenden user raus und du hast sofort den richtigen. dann kannst du das auch über mysql_num_rows > 0 prüfen...
 
Werbung:
naja erstmal danke für die ganze hilfe.
das is aber ganz schön schwer alles :(, naja wird schon.

als editor kann ich euch "notepad2" von www.flos-freeware.ch empfehlen.

einfach super das ding

ich versuch grad "noch was schwereres"(für mich) zu programmieren... man is das verzwickt. und aus solchen büchern lernen is auch nicht leicht...

aber trotzdem danke
 
"if (!dbcnx)
was soll das werden? guck mal bitte genau hin "

edit: achja $ vergessen :D:D

jo, was denn?

if -> prüfung ->anweisung
das ! is ein "negations.." das macht aus "wahr" "falsch".
wenns so stimmt, dann soll das bewirken:

if *mysql-connect gelingt* (wird zu unwahr, also fehlgeschlagen)
dann kommt exit.

gelingt die verbindung nicht, wird wahr zu "wahr".. ach

keine ahnung, das stand so in meinem buch

"Kevin Yank - PHP und MySQL"
"schritt für schritt zur datenbankgestützten website"
 
philipp schrieb:
if *mysql-connect gelingt* (wird zu unwahr, also fehlgeschlagen)
dann kommt exit.

gelingt die verbindung nicht, wird wahr zu "wahr".. ach

wozu die if-abfrage?
Óò

[php:1:05826c2ea8]<?php
mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die("Verbindungsversuch fehlgeschlagen");
?>[/php:1:05826c2ea8]
 
Werbung:
philipp deine logik war mir klar - obwohl coenestesias loesung besser ist
ich spielte auf das fehlende $ an

ich wuerde solche fehlermeldungen eher mit
trigger_error() oder throw machen ;)
 
jo ich weiss, dass ich euch nix über php erzählen brauch :D .. ich bin schonwieder am verzweifeln, aber es wird langsam... mein jetziges problem: in zeile 37 stimmt was nicht, aber keine ahnung was...

Code:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\Dokumente und Einstellungen\Andrea\Eigene Dateien\xampp\htdocs\juniorcup\guestbook.inc.php on line 37

[php:1:9bbf01fa7a]
<?php
echo '
<h1>G&auml;stebuch</h1>


Willkommen im G&auml;stebuch!</p>
<fieldset>
<legend>Eintrag vornehmen?</legend>
<form action="index.php?go=GB" method="post">
<p align="left">Name:<input type="text" name="nam" />
E-M@il:<input type="text" name="EMA" />
<input type="submit" value="Eintragen" /></p>
<p align="left">Dein Eintrag:

<textarea cols="40" rows="7" name="posting" style="margin-left:38px"></textarea></p>
</form>
</fieldset>
';
if (isset($_POST['name' and 'EMA' and 'posting'])) {
@mysql_connect('localhost', 'root') or die("Datenbankprogramm reagiert nicht");
@mysql_select_db('juniorcup') or die("Datenbank nicht erreichbar");
$name = $_POST['name'];
$EMA = $_POST['EMA'];
$posting = $_POST['posting'];
$date = CURDATE();
@mysql_query('INSERT INTO eintraege SET
name = $name,
EMA = $EMA,
posting = $posting,
date = $date') or die("Daten konnten nicht eingef&uuml;gt werden"); } else {
echo 'Tragen sie bitte ihren Namen, ihre E-M@il und eine Nachricht ein'; }
@mysql_connect('localhost', 'root') or die("Datenbankprogramm reagiert nicht");
@mysql_select_db('juniorcup') or die("Datenbank nicht erreichbar");
while ($table = mysql_fetch_array(@mysql_query('SELECT name, EMA, posting FROM eintraege'))) {
echo '
<table class="GB" cellspacing="0px" cellpadding="0px">
<tr>
<td class="GBH">
<div class="gbhdiv">
'."$table['name'] schreibt(am $table['date'])".'
</div>
</td>
</tr>
<tr>
<td class="GBP">
<div class="gbpdiv">'."
$table['posting']".'
</div>
</td>
</tr>
<tr>
<td class="GBB">

</td>
</tr>
</table>
';}


?>[/php:1:9bbf01fa7a]

das is 37:
[php:1:9bbf01fa7a]<?php
'."$table['name'] schreibt(am $table['date'])".'
?>[/php:1:9bbf01fa7a]
 
Werbung:
so ist es richtig:

[php:1:ae05eb5e31]<?php
'.$table['name'].' schreibt(am '.$table['date'].')".'
?>[/php:1:ae05eb5e31]
variablen müssen nicht in " stehen ;) und hinten hast du was völlig verkehrt
 
OMG :D:D:D HAHAHA es funktioniert ... so zu 50% :D:D:D ich hab hier grad fast den PC abgewürgt. der hätte mir unbegrenzt mal den selben beitrag angezeigt, es war nur einer in der datenbank. also: der code: (wenn jemand von euch profis mal so freundlich wäre)

[php:1:61fd97f2af]
<?php
echo //FORMULAR
'
<h1>G&auml;stebuch</h1>


Willkommen im G&auml;stebuch!</p>
<fieldset>
<legend>Eintrag vornehmen?</legend>
<form action="index.php?go=GB" method="POST">
<p align="left">Name:<input type="text" name="name" />
E-M@il:<input type="text" name="EMA" />
<input type="submit" value="Eintragen" /></p>
<p align="left">Dein Eintrag:

<textarea cols="40" rows="7" name="posting" style="margin-left:38px"></textarea></p>
</form>
</fieldset>
';
//WENN eintrag uebermittelt wurde
if (isset($_POST['posting'])) {
//DANN mit MySQL verbinden
@mysql_connect('localhost', 'root') or die("Datenbankprogramm reagiert nicht");
//DANN Datenbank laden
@mysql_select_db('juniorcup') or die("Datenbank nicht erreichbar");
//Variablen Festlegen
$name = $_POST['name'];
$EMA = $_POST['EMA'];
$posting = $_POST['posting'];
//eintrag in der Datenbank vornehmen
@mysql_query("INSERT INTO eintraege SET
name = '$name',
EMA = '$EMA',
posting = '$posting',
date = CURDATE()") or die("Daten konnten nicht eingef&uuml;gt werden"); } else {
echo 'Tragen sie bitte ihren Namen, ihre E-M@il und eine Nachricht ein
'; }
//eintraege aus Datenbank holen - Verbinden mit Datenbank
@mysql_connect('localhost', 'root') or die("Datenbankprogramm reagiert nicht");
@mysql_select_db('juniorcup') or die("Datenbank nicht erreichbar");
//HTML der Gaestebucheintraege erzeugen
while ($table = mysql_fetch_array(@mysql_query('SELECT name, EMA, posting FROM eintraege'))) {
echo '
<table class="GB" cellspacing="0px" cellpadding="0px">
<tr>
<td class="GBH">
<div class="gbhdiv">
'.$table['name'].' schreibt(am '.$table['date'].')
</div>
</td>
</tr>
<tr>
<td class="GBP">
<div class="gbpdiv">'.$table['posting'].'</div>
</td>
</tr>
<tr>
<td class="GBB">

</td>
</tr>
</table>
';}
//ENDE GAESTEBUCH
?>



[/php:1:61fd97f2af]

kurz gesagt:
wie mach ich, dass PHP für jeden datensatz nur eine tabelle erzeugt?
die while schleife is da ein bischen.. oder ich bin da ein bischen ;).

beim ersten mal hab ichs 30sekunden laufen lassen.. das waren mindestens 10K tabellen
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben