• Hallo Besucher!

    Du bist neu im Forum? Dann registriere dich hier, um Diskussionen beizutreten oder eigene Themen zu erstellen. Für die Registrierung ist es erforderlich, dass du einen Spielaccount bei Die Stämme hast.

    Andernfalls kannst du dich hier direkt einloggen.

    Falls du dein Passwort vergessen hast, kannst du hier ein neues Passwort anfordern.

MySqli - Datenbanktabelle anlegen

DeletedUser

Gast
Hab das jetzt mal in eine Passwortabfrage umgebaut, nur bekomme ich einen Parse Error in Zeile 22 gemeldet:

Das sieht man schon am Syntaxhighlightning - es fehlt ein das schließende ' bei deinem SQL-Statement.

Hat dein Editor kein Syntaxhighlightning, solche banalen Fehler findet man mit sowas normalerweise auf Anhieb? :|
 

DeletedUser86497

Gast
Doch ich hab Syntax Highlighting ich habs einfach übersehen danke
 

DeletedUser86497

Gast
Also mein Code sieht jetzt so aus:
PHP:
<?php
@$db = new mysqli('localhost', 'root', 'root', 'diestaemme');

if($db->connect_errno)
{
    printf("Verbindung fehlgeschlagen: %s\n", $db->connect_error);
    exit();
}

$user = $_GET['user'];
    
$sql = 'SELECT * FROM users WHERE "$user"';
$ergebnis = $db->query($sql);

// Ausgabe-Array anlegen
$output = array();

while ($zeile = $ergebnis->fetch_object())
{
     // Werte zuweisen
    $output[] = array(
                        'user'    => $zeile->user,
                        'pass'    => $zeile->pass
                     );
}

$ergebnis->close();
$db->close();

    
$pass = $_GET['pass'];

// Ergebnis ausgeben
foreach ($output as $row)
    {
        if ($pass == $row['pass'])
            {
                
                echo "Passwort Korrekt!";
            }else{
                echo " Falsches Passwort!";
                
            }
        
    }


?>

Und ich bekomme einfach eine leere Seite zu Gesicht :|
 

DeletedUser

Gast
ist irgendwie logisch, wenn niergendwo der befehl zu irgendeiner Ausgabe gemacht wird ;)
Du speicherst die Benutzerdaten nur in einem Array.
Du kannst entweder testweite mal ein print_r($output); machen oder das mit der foreach-Schleife von Gödda-gödz.
Aber ich verstehe nicht, warum der Umweg über fetch_object() gemacht weird, um ein Object zu bekommen...ein fetch_all(); und man hätte alles direkt in einem Array ohne while-Schleife...
 

DeletedUser86497

Gast
Ich versteh nur noch Bahnhof von dem was ich hier probiere. Nichts funktioniert und die funktionsweise einer foreach-Schleife versteh ich trotz verschiedener Tutorials immer noch nicht :(
 

DeletedUser

Gast
Dann empfehle ich dir, dein PHP-Buch nochmal komplett durchzugehen, bevor du das Kapitel Datenbanken erreichst, weil die Grundlagen sind unerlässlich! Wenn du die sachen beherrschst, ist mysql und co auch kein großes problem...nur so sachen wie Schleifen braucht man IMMER! es ist so als ob man in der Mathematik kein Multiplizieren kann :S
 

DeletedUser86497

Gast
Dann empfehle ich dir, dein PHP-Buch nochmal komplett durchzugehen, bevor du das Kapitel Datenbanken erreichst, weil die Grundlagen sind unerlässlich! Wenn du die sachen beherrschst, ist mysql und co auch kein großes problem...nur so sachen wie Schleifen braucht man IMMER! es ist so als ob man in der Mathematik kein Multiplizieren kann :S

Ich kann die Grundlagen nur nicht die foreach-Schleife für die hab ich noch keine Erklärung gefunden die ich verstehe. Außerdem brauche ich das ganze für ein Projekt im Alleingang...
 

TimLim

Gast
die foreach Schleife geht ein Array durch.

PHP:
foreach($array as $arraykey=>$arrayinhalt)
{

}
$array ist das Array welches durchgegangen wird. $arraykey wird jedesmal mit dem Schlussel des Arrays belegt. $arrayinhalt ist der inhalt..

PHP:
$array = array('eins', 'zwei'=>'2', 'drei'=>'3');
foreach($array as $arraykey=>$arrayinhalt)
{
  echo $arraykey . '=>' . $arrayinhalt . '<br>';
}

gibt folgendes aus:

0=>eins
zwei=>2
drei=>3

Es geht auch so:

PHP:
foreach($array as $arrayinhalt)
{
}

Variablennamen sind die selben wie oben, daher sollte das selbsterklärend sein.



Auch ich denke, dass du vorher noch ein bisschen üben solltest, bevor es daran geht....

Hoffe hab nix falsches erzählt. Ist vllt verständlicher...
 

DeletedUser86497

Gast
Ich bin 14, meine Englischkenntnisse reichen nicht um das zu verstehen :|

EDIT: Ups, da ist eine Antwort dazwischen die ich nicht gesehen habe danke
 
Zuletzt bearbeitet von einem Moderator:

DeletedUser86497

Gast
die foreach Schleife geht ein Array durch.

PHP:
foreach($array as $arraykey=>$arrayinhalt)
{

}
$array ist das Array welches durchgegangen wird. $arraykey wird jedesmal mit dem Schlussel des Arrays belegt. $arrayinhalt ist der inhalt..

PHP:
$array = array('eins', 'zwei'=>'2', 'drei'=>'3');
foreach($array as $arraykey=>$arrayinhalt)
{
  echo $arraykey . '=>' . $arrayinhalt . '<br>';
}

gibt folgendes aus:



Es geht auch so:

PHP:
foreach($array as $arrayinhalt)
{
}

Variablennamen sind die selben wie oben, daher sollte das selbsterklärend sein.



Auch ich denke, dass du vorher noch ein bisschen üben solltest, bevor es daran geht....

Hoffe hab nix falsches erzählt. Ist vllt verständlicher...

Ich bin dir so unendlich dankbar endlich einer der mir erklären konnte wie die foreach-Schleife funktioniert vielen vielen dank!
 

DeletedUser86497

Gast
drum konntest du's mir so gut erklären ich bin auch 14^^:mrgreen:
 

TimLim

Gast
mein allererstes Programmiertut. Damals in XAMPP eingebettet. :) *in Erinnerungen schwelg* Damit kann man wirklich gut anfangen mit PHP. :)

hehe. Hab damit auch geübt. Aber nicht als erstes. Damals hatte ich nichtmal xampp, sondern habs über ein freewebspace gemacht :D
 

DeletedUser86497

Gast
Nächstes Problem:

Das Script soll die Koordinaten des Dörfer mit ID 1 auslesen und ausgeben:

PHP:
<?php
mysql_connect("localhost", "314159265358979", "********")
    or die("Keine Verbindung möglich: " . mysql_error());
mysql_select_db("doerfer");

$result = mysql_query("SELECT x_koordinate, y_koordinate FROM doerfer WHERE 1");

while ($row = mysql_fetch_array($result)) {
    printf ($row["x_koordinate"], $row["y_koordinate"]);
}

?>

bekomme aber folgende Fehlermeldung:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in ******* on line 8

Wo hab ich nen Fehler gemacht?
 

TimLim

Gast
WHERE 1?
was soll den eins sein?
schaue dir mal die funktion mysql_error an, gibt ne bessere Fehlermeldung ;-)
 

DeletedUser

Gast
Nächstes Problem:

Das Script soll die Koordinaten des Dörfer mit ID 1 auslesen und ausgeben:

PHP:
<?php
mysql_connect("localhost", "314159265358979", "********")
    or die("Keine Verbindung möglich: " . mysql_error());
mysql_select_db("doerfer");

$result = mysql_query("SELECT x_koordinate, y_koordinate FROM doerfer WHERE 1");

while ($row = mysql_fetch_array($result)) {
    printf ($row["x_koordinate"], $row["y_koordinate"]);
}

?>

bekomme aber folgende Fehlermeldung:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in ******* on line 8

Wo hab ich nen Fehler gemacht?

PHP:
<?php
mysql_connect("localhost", "314159265358979", "********")
    or die("Keine Verbindung möglich: " . mysql_error());
mysql_select_db("doerfer") or die(mysql_error());

$result = mysql_query("SELECT x_koordinate, y_koordinate FROM doerfer WHERE dorf_id=1") or die(mysql_error());

if($row = mysql_fetch_array($result)) {
    printf ($row["x_koordinate"], $row["y_koordinate"]);
}
else {
    die("Dorf#1 nicht vorhanden");
}

?>

Was gibt das als Ausgabe?

WHERE 1?
was soll den eins sein?
schaue dir mal die funktion mysql_error an, gibt ne bessere Fehlermeldung ;-)

Das ist ne True-Bedingung -> sinnlos, aber dürfte keine fehler verursachen.

Der Primärschlüssel

Die Where-Bedingung wird nicht mit dem Primärschlüssel verglichen, sondern für sich n jeder Zeile auf True oder False überprüft. True = Satz wird angezeigt; False = wird nicht angezeigt

MfG Dömel
 

DeletedUser86497

Gast
PHP:
<?php
mysql_connect("localhost", "314159265358979", "********")
    or die("Keine Verbindung möglich: " . mysql_error());
mysql_select_db("doerfer") or die(mysql_error());

$result = mysql_query("SELECT x_koordinate, y_koordinate FROM doerfer WHERE dorf_id=1") or die(mysql_error());

if($row = mysql_fetch_array($result)) {
    printf ($row["x_koordinate"], $row["y_koordinate"]);
}
else {
    die("Dorf#1 nicht vorhanden");
}

?>

Was gibt das als Ausgabe?

Jetzt steht nur noch "Access denied for user '314159265358979'@'%' to database 'doerfer'", warum weis ich selbst nicht.
 
Oben