Antworten auf deine Fragen:
Neues Thema erstellen

Array aus Datenbank weiterverwenden

BlackHawk3

Aktives Mitglied

Hi,
wie kann ich mein Array, dass ich aus der DB bekomme weiter verwenden in einem anderen PHP-Skript?

Code:
<?php  //Verbindung mit Server und Datenbank

	$verbindung	=	mysql_connect ( "localhost", "root", "" );
	
	if ( !$verbindung )
	{
		echo ("Es konnte keine Verbindung mit der Server hergestellt werden.");
		die;
	}
	
	mysql_select_db ( "battleday" );


?>

<?php
	
	$query = "SELECT Nickname FROM login";
	
	$result = mysql_query ( $query );
	
	while ( $nickname = mysql_fetch_row ( $result ))
		{
			echo $nickname[0];
		}
?>

Angezeigt wird mir jetzt Name1Name2. Da dieser Part aber übern dem HTML Kopf steht sehr unpraktisch. Wie bekomm ich Name1 und Name2 getrennt als neue Variable hin, die ich später in einem anderen Script wieder verwenden kann?

Liebe grüße
 

sokie

Mod | Web

AW: Array aus Datenbank weiterverwenden

was heisst 'später'?
Wenn du es in dem skript an späterer Stelle benutzen willst, kannst du statt des echo die Ausgabe in einer Variblen speichern und später per echo ausgeben:
PHP:
    $ausgabe = "";
    while ( $nickname = mysql_fetch_row ( $result ))
        {
            $ausgabe .= $nickname[0]."<br />\n"; //nur aus Beispiel
        }
?>
dann kannst du einen html-teil ausgeben um dann weiter unten wieder einen php teil anzulegen um die inhalte auszugeben:
HTML:
<div>
<? echo $ausgabe ?>
</div>
 

BlackHawk3

Aktives Mitglied

AW: Array aus Datenbank weiterverwenden

löst das mein Problem? Eigentlich ist das ja total leicht mit den Arrey aber irgendwie bin ich zu doof glaub ich.

Wenn ich das jetzt so wie es dasteht ausgebe würde ich doch wieder "Name1Name2" bekommen.

Es geht darum... (auch wenn es mega unprofessionell und so ist, aber es dient nur meinem knowledge).

Ich habe die Dateien login.php, funktion_login.inc.php, und ersteinmal checklogin.

login.php:
Beinhaltet das Formular mit Nickname und Passwort. Mit dem Abschickenbutton wird beides per "post" an checklogin.php geschickt.

funktion_login.inc.php:
enthält die DB-Abfrage und soll Kontrollieren, ob das eingebene Kennwort und der Nickname mit dem Wert aus der DB übereinstimmt.

checklogin.php:
Soll ausgeben, ob die Abfrage aus funktion_login wahr ist oder nicht und dann einen dementsprechenden Text mit Link zur nächsten Seite ausgibt.
in deren kopf ist die datei funktion_login.inc.php eingebettet per include.


Als fazit soll halt rauskommen, dass ich 2 User in der Datenbank habe, und jenachdem welcher User sich gerade angemeldet hat einen anderen Link dann bekommt als Weiterleitung.

Bisher hab ich es nicht geschafft das Ergebniss aus der DB so zu trennen, dass ich es für meine Abfragen nutzen kann.
 

sharkandy

Noch nicht viel geschrieben

AW: Array aus Datenbank weiterverwenden

Meinst du mit Trennen vielleicht eher das Folgende?

$query = "SELECT Nickname FROM login";
$result = mysql_query ( $query );
unset($namensliste); // Nur aus Sicherheit, falls die Variable vorher schon genutzt wurde
while ($nickname = mysql_fetch_row ( $result ))
{
$namensliste[] = $nickname[0];
}

Dann könntest du später in deinem Script auf die Namen zugreifen, z.B.:
foreach ($namensliste AS $name)
{
// Tu was mit $name
}

Gruß

Andreas
 

BlackHawk3

Aktives Mitglied

AW: Array aus Datenbank weiterverwenden

So wenn ich jetzt dein COde mit einbaue...

Code:
<?php  //Verbindung mit Server und Datenbank

	$verbindung	=	mysql_connect ( "localhost", "root", "" );
	
	if ( !$verbindung )
	{
		echo ("Es konnte keine Verbindung mit der Server hergestellt werden.");
		die;
	}
	
	mysql_select_db ( "battleday" );


?>
<?php
$query = "SELECT Nickname FROM login";
$result = mysql_query ( $query );
unset($namensliste); // Nur aus Sicherheit, falls die Variable vorher schon genutzt wurde
while ($nickname = mysql_fetch_row ( $result ))
{
$namensliste[] = $nickname[0];
}

// Dann könntest du später in deinem Script auf die Namen zugreifen, z.B.:
foreach ($namensliste AS $name)
{
	echo $name;
}
?>

als Ergebnis bekomme ich logischerweise wieder Name1Name2. Aber ich möchte doch haben, dass zum schluss rauskommt variable1 = Name1 und variable2 = Name2. Das komische ist auch, finde ich, wenn ich zum Beispiel beim SQL eingebe:

$query = "SELECT * FROM login";

Dann bekomme ich in der Ausgabe nur noch den Primärschlüssel, anstatt volle Datensätze.

Und wenn ich zum Schluss zB eingebe

Code:
foreach ($namensliste AS $name)
{
	echo $name[0];
}

Dann kommen nur noch die Anfangsbuchstaben der beiden Nicknames in der Ausgabe.
Irgendwas mach ich doch falsch?
 

BlackHawk3

Aktives Mitglied

AW: Array aus Datenbank weiterverwenden

Ah nun ist endlich der stein gefallen^^ ich habs mal mitn assoc. array probiert hab mir dann die schlüssel anzeigen lassen und nun hab ich mein fehler gefunden^^ nun krieg ichs hin die einzelenen daten gekonnt zu filtern^^
 

sharkandy

Noch nicht viel geschrieben

AW: Array aus Datenbank weiterverwenden

Übrigens ein kleiner Tipp: Für derartige Analysen kann manchmal die Ausgabe einer Variaben (insbesondere wenn es sich um ein Array oder so handelt) per

var_dump($variable);

sehr hilfreich sein.
 

BlackHawk3

Aktives Mitglied

AW: Array aus Datenbank weiterverwenden

naja wenn wir nun schon das thema angefangen haben....

Code:
<?php
$query = "SELECT * FROM login";
$result = mysql_query ( $query );

$anzahl = mysql_num_rows ( $result );
echo "Anzahl der Datensaetze: " .$anzahl."<br><br>";



	while  ( $datensatz = mysql_fetch_array ( $result ) )
	{


	foreach ( $datensatz as $schluessel => $wert )
	{
		echo "Schluessel: " .$schluessel. "Wert: " .$wert."<br>";
		$name = $datensatz["Nickname"];
				
	}
	}

?>

<?php echo $name; ?>

Das Skript funktioniert perfekt für einen Datensatz, aber da ich die Namen der Leute in jeweils einer neuen Variable haben will klappt das nicht so gut, da $name ja immer der eintrag vom letzten datensatz ist.
ich habe das problem so gelöst:

Code:
<?php

// Liest die User und die Passwörter aus

$sql = "SELECT * FROM login";
$result = mysql_query ( $sql );


$anzahl = mysql_num_rows ( $result );

	for ( $i=1; $i <= $anzahl; $i++ )
	{
	
		$datensatz = mysql_fetch_array ( $result );
	
		foreach ( $datensatz as $schluessel => $wert )
		{
			if ( $datensatz["Nickname"] == "Name1" )
			{
				$user1 = "Name1";
			}
			elseif ( $datensatz["Nickname"] == "Name2" )
			{
				$user2 = "Name2";
			}
			if ( $datensatz["Kennwort"] == "pass1" )
			{
				$kennwort1 = "pass1";
			}
			elseif ( $datensatz["Kennwort"] == "pass2" )
			{
				$kennwort2 = "pass2";
			}
		}
	}
?>



<?php

//Sicherheitsabfrage

if ( ($user1 == $_POST["nickname"]) && ($kennwort1 == $_POST["passwort"]) )
{
	$login1 = "Herzlich Willkommen " .$_POST["nickname"];
}
elseif ( ($user2 == $_POST["nickname"]) && ($kennwort2 == $_POST["passwort"]) )
{
	$login2 = "Herzlich Willkommen " .$_POST["nickname"];
}
else
{
	$badlogin = "Falsches Login";
}
?>

Das funktioniert zwar und erfüllt auch die Problemstellung, da es nur ein Login für 2 Personen sein soll, doch glaube ich ist das reichlich unschön.

PS: Wie kann man den Code hier farbig darstellen?
 
Zuletzt bearbeitet:

sharkandy

Noch nicht viel geschrieben

AW: Array aus Datenbank weiterverwenden

Hallo Blackhawk3,

ich denke die Intention ist es zu prüfen, ob sich ein User anmelden darf oder nicht (und ob sein Kennwort richtig ist). Schu dir mal das Codebeispiel an:

<?php
unset($kennwort);
$sql = "SELECT Kennwort FROM login WHERE Nickname='" . mysql_escape_string($_POST["nickname"]) . "' ";
if (!$result = mysql_query($sql))
{
//Falls ein Fehler auftritt ...
echo "<br>" . $sql . "<br>";
echo "<b>" . mysql_error() . "</b>\n";
echo "<br>";
}
else
{
if ($row=mysql_fetch_array($result))
{
$kennwort = $row["Kennwort"];
}
}

if (isset($kennwort) && ($kennwort===$_POST["passwort"]))
{
echo "Herzlich Willkommen " . $_POST["nickname"] . "<br>";
}
else
{
die("Falsches Login");
}
?>

Vielleicht hilft es dir weiter. Die Anmeldung an die Datenbnk fehlt am Anfang und natürlich das was du nach erfolgreicher Anmeldung am Ende tun willst.

Was übrigens generell nicht so Klasse ist, ist das die Kennwörter dann im Klartext in der Datenbank stehen, aber das führt hier dann wohl zu weit.

Gruß

Andreas
 

BlackHawk3

Aktives Mitglied

AW: Array aus Datenbank weiterverwenden

ja ich werd mich nach dem WE mal drum kümmern =) danke sehr dafür...

aber soll auch keine profi lösung sein, ist mein erstes größeres php+sql projekt und soll halt vorrangig zum verstehen dienen, um dann ein gutes fundament zu haben und darauf aufzubauen.
 

BlackHawk3

Aktives Mitglied

AW: Array aus Datenbank weiterverwenden

Warum nimmt man hier "($kennwort===$_POST["passwort"])" an, dass die beiden identisch sind? würde ($kennwort==$_POST["passwort"]) nicht auch reichen??? ich meni es ist doch eigtl gar nicht möglichen das das kennwort und das eingegbene wort, wenns gleich ist ein anderer datentyp ist?
 

sharkandy

Noch nicht viel geschrieben

AW: Array aus Datenbank weiterverwenden

Das ist nur zur Sicherheit, weil bei == auch "" und "0" als gleich erkannt werden! Und auch "0"=="00000000" ist wahr!

Bei === ist es aber ungleich ...
 
Z

Zoidbert

Guest

AW: Array aus Datenbank weiterverwenden

Hi

BlackHawk3 meinte doch:
Als fazit soll halt rauskommen, dass ich 2 User in der Datenbank habe, und jenachdem welcher User sich gerade angemeldet hat einen anderen Link dann bekommt als Weiterleitung.

also ich denke dass du folgendes suchst...

PHP:
<?php
$sql = "SELECT * FROM login";
$abf = mysql_query ($sql);
$erg = mysql_fetch_array($abf);

// Nur Beispielhaft...
if(LOGIN ERFOLGREICH)
{
     $userid = $erg['id'];
     echo "Ihr Login ist erfolgreich!"                  //Auf der index.php oder wo auch immer wird dann das userid weiter verarbeitet.
     echo "Bitte klicken sie <a href='index.php?userid=$userid'>Hier</a> um auf ihre Seite zu gelangen.";
}
else
{
     echo 'Login fehlgeschlagen!';
}
?>

mfg Zoidbert
 

BlackHawk3

Aktives Mitglied

AW: Array aus Datenbank weiterverwenden

@ zoidbert...
ja genau darauf solls im endeffekt hinauslaufen.... aber ich glaub dafür sollte ich mir die Sessions nochmal besser anschauen. Ich wollte zwar ursprünglich die links so verbauen das jeder user sein eigenes interface hat um einträge auf die datenbank machen kann.... also zb name1admin.php und name2admin.php .... das ist vll der leichteste weg... aber der gefällt mir nicht wirklich...
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.620
Beiträge
1.538.373
Mitglieder
67.544
Neuestes Mitglied
janusbarman
Oben