kostenloser Webspace werbefrei: lima-city


Zwei Abfragen hintereinander aus zwei versch. Tabellen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    robert-giebel

    Kostenloser Webspace von robert-giebel

    robert-giebel hat kostenlosen Webspace.

    Hallo,
    wie der Titel schon sagt möchte ich zwei MySQL Abfragen hintereinander abfragen, wobei jede eine andere Tabelle in der gleichen Datenbank abfragt.
    Kurze Erklärung, um den folgenden Code besser zu verstehen. Ich betreibe eine Seite, auf der man sich anmelden muss. Dort soll es nun einen extra gesicherten Bereich geben. Um den zu betreten braucht der Benutzer einen Sicherheitscode, der ihm als Email zugesendet werden soll. Die zwei Abfragen brauch ich, um in der ersten Abfrage die Email-Adresse zu erfragen, welche in der Tabelle 1 steht. Und in der zweiten Abfrage zu erfragen, wie viele Sicherheitscodes aus Tabelle 2 noch verfügbar sind. Der erste freie Sicherheitscode soll dann in der Email an der den Benutzer gesendet werden. Ok, hier der Code dazu:

    include("config.php");
    		if($connection)
    		{
    			if ($selection)
    			{					
    				//Pruefen der eingegebenen Daten
    				$query = "SELECT `Email` FROM `accounts` WHERE `username` = '$user'";		
    				$abfrage = mysql_query($query);
    							
    				$check_user = mysql_num_rows($abfrage);
    				if($check_user == 1)
    				{
    					//Setzen der Email-Adresse, nach erfolgreicher Abfrage
    					$email = $abfrage;
    					mysql_close();
    					
    					if($connection)
    					{
    						if($selection)
    						{
    							$query2 = "SELECT * FROM `key` WHERE `status` = '0'";
    							$abfrage2 = mysql_query($query2);
    							
    							if($abfrage2)
    							{
    								while($row = mysql_fetch_assoc($abfrage2))
    								{
    									echo "$row->['key']<br>";
    
    								}
    							}
    					        (Hier steht der Code für die Email, den ich jetzt entfernt habe :) )
    					
    						} else 
    						{
    							echo "Keine Datenbank ausgewält.";
    						}
    					}else
    					{
    						echo "Verbindung zur Datenbank nicht möglich.";
    					}
    				} else
    				{
    					echo "Mehrere User markiert.";
    				}
    			}else
    			{
    				echo "Erste Datenbank konnte nicht gefunden werden.";
    			}
    		}else
    		{
    			echo "Verbindung nicht möglich.";
    		}
    	}

    An der Datei "config.php" kann es schon mal nicht liegen, weil diese auch bei anderen Seiten funktioniert.
    Folgender Code, sollte mir die Abfrageergebnisse anzeigen:
    echo "Email: " .$email ."<br>";
    echo mysql_num_rows($abfrage2);

    Die Anzeige sieht dann aber so aus:

    Email: Resource id #4

    Ich hoffe, ihr könnt mir weiterhelfen.
    Wenn ihr noch weitere Informationen braucht, um zu helfen, sagt bescheid. :)

    Danke schonmal,
    Robert.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Du musst eine der mysql_fetch-Funktionen anwenden, dann sollte das gehen. SQL-Querry gibt Dir nur eine Resoucre zurück.

    Zb:
    mysql_fetch_row($abfrage2);


    Mit nen bissl Suchen findest Du hier bei Lima auch schon die passende Antwort darauf. Schau mal hier der letzte Beitrag von ggame, da sind auch ein paar Links zu diesem Thema.

    http://www.lima-city.de/thread/mysql-ausgabe-resource-id-5

    Gruß und schönen Sonntag
    Marco
  4. Autor dieses Themas

    robert-giebel

    Kostenloser Webspace von robert-giebel

    robert-giebel hat kostenlosen Webspace.

    Danke, für deine Antwort, dir auch einen schönen Sonntag :)
    mit mysql_fetch_row($abfrage2); hat es nicht geklappt, dafür bekomme ich nun eine Email-Adresse angezeigt.
    $email = mysql_result($abfrage, 0);

    Damit hat es geklappt :) , aber jetzt habe ich immer noch das Problem, dass ich keinen Key angezeigt bekomme.
    $key = mysql_result($abfrage2, 0);
    echo $key;

    Es wird einfach nichts angezeigt :( Die Ausgabe sieht dann folgendermaßen aus:
    Email: ******@******.de

    Theoretisch müsste jetzt noch der erste freie Key aus der Abfrage angezeigt werden.
  5. Versuch es mal so.
    while ($row = mysql_fetch_array ($abfrage2))
    
    	  { 
    			$key = $row[key];
    			echo $key . "<br>";								  
    	  }


    Wobei Du beachten musst, das
    key
    ein reserviertes Wort ist und somit Maskiert werden muss.
    Siehe hier:
    https://dev.mysql.com/doc/refman/5.1/de/reserved-words.html

    Ich versuche solche Bezeichner immer zu vermeiden um mir den Stress zu ersparen.

    Gruß Marco
  6. Autor dieses Themas

    robert-giebel

    Kostenloser Webspace von robert-giebel

    robert-giebel hat kostenlosen Webspace.

    Irgendwie funktioniert der Teil mit der Abfrage der freien Sicherheitscodes immer noch nicht :(
    if($connection)
    {
    	if($selection)
    	{
    		$query2 = "SELECT * FROM `key` WHERE `status` = '0'";
    		$abfrage2 = mysql_query($query2);
    							
    		if($abfrage2)
    		{
    			while ($row = mysql_fetch_row($abfrage2))
    			{ 
    			        $code = $row['code'];
    				echo $code ."<br>";                                 
    			}
    		}
    		 //Hier steht das Script zum Email versenden.
    	} else 
    	{
    		echo "Keine Datenbank ausgewält.";
    	}
    }else
    {
    	echo "Verbindung zur Datenbank nicht möglich.";
    }

    Ich weiß nicht, warum mir nichts angezeigt wird. Es gibt keinen Fehler und keine andere Ausgabe.

    Beitrag zuletzt geändert: 23.3.2014 16:57:20 von robert-giebel
  7. bei lima musst du die fehleranzeige einschalten. das geht so:
    <?php
    error_reporting(E_ALL | E_STRICT);
    ini_set('display_errors', true);
    und zwar wie du sehen kannst, gleich am anfangs der file.
  8. Autor dieses Themas

    robert-giebel

    Kostenloser Webspace von robert-giebel

    robert-giebel hat kostenlosen Webspace.

    Danke für den Tipp!!
    Endlich funktioniert's! es lag an der while-Schleife statt:
    while ($row = mysql_fetch_row($abfrage2))
    			{ 
    			        $code = $row['code'];
    				echo $code ."<br>";                                 
    			}

    muss dort folgendes stehen:
    while ($row = mysql_fetch_array($abfrage2))
    			{ 
    			        $code = $row['code'];
    				echo $code ."<br>";                                 
    			}

    Also vielen Dank, an euch beide :) :wave:
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!