| 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! |
 |

16-07-2010, 12:32
|
|
FoLLoW_M3
Registrierter Benutzer
|
|
Registriert seit: Jul 2010
Beiträge: 6
|
|
MySQL Datenbank auslesen via PHP
Hallo liebe Community,
ich versuche gerade eine MySQL-Tabelle mit PHP auszulesen, allerdings spuckt das Ganze nichts aus...
Vielleicht könnt ihr mir auf die Sprünge helfen, manchmal sieht man ja bekannterweise den Wald vor lauter Bäumen nicht - danke schonmal!
Hier der Inhalt der index.php:
PHP-Code:
<?php $db = @new mysqli('***', '***', '***', '***'); if (mysqli_connect_errno()) { die ('Konnte keine Verbindung zur Datenbank aufbauen: '.mysqli_connect_error().'('.mysqli_connect_errno().')'); } $sql = 'SELECT * FROM users'; $result = $db->query($sql); if (!$result) { die ('Etwas stimmte mit dem Query nicht: '.$db->error); } echo 'Die Ergebnistabelle besitzt '.$result->num_rows." Datensätze<br />\n"; ?>
Auch mit dem Folgenden habe ich es probiert:
PHP-Code:
<?php $db = @new mysqli('***', '***', '***', '***'); if (mysqli_connect_errno()) { die ('Konnte keine Verbindung zur Datenbank aufbauen: '.mysqli_connect_error().'('.mysqli_connect_errno().')'); } $sql = 'SELECT *UserID, UserName, UserMail FROM users'; $result = $db->query($sql); if (!$result) { die ('Etwas stimmte mit dem Query nicht: '.$db->error); } echo 'Die Ergebnistabelle besitzt '.$result->num_rows." Datensätze<br />\n"; ?>
Das einzige Ergebnis ist dies:
"Die Ergebnistabelle besitzt 1 Datensätze"
LG
|

16-07-2010, 12:34
|
|
streuner
Registrierter Benutzer
|
|
Registriert seit: Aug 2009
Ort: Lüneburg
Beiträge: 403
|
|
Hi.
Mit num_rows fragst Du ja auch die Anzahl ab. Hier siehst Du, wie du mit mysli_query arbeitest:
PHP: mysqli::query - Manual
und
PHP: mysqli_result::fetch_array - Manual
streuner
__________________
Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.
"Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"
|

21-07-2010, 10:36
|
|
FoLLoW_M3
Registrierter Benutzer
|
|
Registriert seit: Jul 2010
Beiträge: 6
|
|
Danke für Deine Hilfe, das habe ich nun hingekriegt.
Aber jetzt habe ich noch ein anderes Problem, bei dem ich noch keine Lösung gefunden habe.
Ich möchte für einen Adminbereich die Zugangsberechtigung so ändern, dass nur der User mit der UserID=1 diesen aufrufen kann. Folgdendes habe ich probiert:
PHP-Code:
if ($userid = 1) {
Header("Location: login.php"); exit(); }
Die Variable ist definiert, der Nutzer mit userid=1 auch vorhanden, aber auch userid=2 hat Zugang - funktioniert das überhaupt so, wie ich es mir vorstelle?
Bin für jeden Tipp / jede Hilfe / jeden Link dankbar!
LG
|

21-07-2010, 10:50
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Ort: Dresden
Beiträge: 5.457
|
|
Hallo,
du musst zwischen Vergleich und Zuweisung streng unterscheiden. setzt den Inhalt der Variable auf 1.
dagegen vergleicht die beiden Werte
Gruß,
Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

21-07-2010, 11:18
|
|
FoLLoW_M3
Registrierter Benutzer
|
|
Registriert seit: Jul 2010
Beiträge: 6
|
|
Stimmt, darüber habe ich mir schon Gedanken gemacht, aber auch mit
hat userid=2 Zugriff. Der Fehler muss also woanders liegen.
Hier mal der obere Teil aus meiner index.php
PHP-Code:
<?php session_start();
$db_link = mysql_connect ("localhost", "root", "");
$db_sel = mysql_select_db( "gld" ) or die("Auswahl der Datenbank fehlgeschlagen");
$sql = "SELECT UserID FROM users WHERE UserSession='".session_id()."'"; $db_erg = mysql_query( $sql ); if ( ! $db_erg ) { die('Ungültige Abfrage: ' . mysql_error()); } while ($zeile = mysql_fetch_array( $db_erg, MYSQL_ASSOC)) { $userid = $zeile['UserID']; } echo"<p />"; if($userid == 1) {
Header("Location: login.php"); exit(); } else {
Das geht sicherlich auch schöner... Habe ich da vielleicht einen Denkfehler??
Danke
|

21-07-2010, 11:50
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.208
|
|
Warum speicherst du die User ID nicht einfach in der Session? Wozu der Umweg über die Datenbank?
|

21-07-2010, 14:59
|
|
FoLLoW_M3
Registrierter Benutzer
|
|
Registriert seit: Jul 2010
Beiträge: 6
|
|
@h3ll
Ich habe die Variable nun in der Session gespeichert, aber trotzdem erfolgt keine Änderung.
Mit
PHP-Code:
<?php echo $userid ?>
wird mir die korrekte ID angezeigt, doch die Abfrage
PHP-Code:
if ($userid == 1) {
Header("Location: login.php"); exit(); }
liefert nicht das, was sie soll, eben dass man mit ID=2 nicht durch kommt.
Noch jemand Lösungsansätze für mich?
|

21-07-2010, 15:03
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.208
|
|
Dein Code sagt, dass User mit der ID 1 auf login.php weitergeleitet werden. Mal davon abgesehen, dass du keine absolute URL angibst (was nämlich falsch ist), ist das so korrekt?
|

21-07-2010, 15:11
|
|
FoLLoW_M3
Registrierter Benutzer
|
|
Registriert seit: Jul 2010
Beiträge: 6
|
|
Danke, das war wohl der entscheidende Hinweis. Ich habe die Abfrage falsch herum gestellt, sodass jeder den Inhalt sehen konnte. Was mich dabei allerdings wundert, auch mit ID=1 wurde alles angezeigt?
Nunja, danke ^^ Ich sollte einfach die Augen genauer aufmachen =)
|

28-07-2010, 10:51
|
|
FoLLoW_M3
Registrierter Benutzer
|
|
Registriert seit: Jul 2010
Beiträge: 6
|
|
Ich brauche nochmal Eure Hilfe.
Und zwar möchte ich die ausgelesenen Tabellen der MySQL-Datenbank per PHP bearbeiten. Folgendes habe ich mir überlegt:
- jede Zeile erhält eine Checkbox und am Ende kann man alle markierten Datensätze "bearbeiten" also einer UserID zuordnen
Dazu dieser Code:
PHP-Code:
echo '<table border="0" width="100%">'; echo "<tr>"; echo "<td><b>Auswahl</b></td>"; echo "<td><b>IP</b></td>"; echo "<td><b>Absender</b></td>"; echo "<td><b>Empfänger</b></td>"; echo "<td><b>Erste</b></td>"; echo "<td><b>Letzte</b></td>"; echo "<td><b>Anzahl</b></td>"; echo "</tr>"; echo "<tr>"; while ($zeile = mysql_fetch_array( $db_erg, MYSQL_ASSOC)) { echo "<td><form method='POST' action='zuordnen.php'> <input type='checkbox' name='zuordnen[]' value='an'></td>"; echo "<td>". $zeile['ip'] . "</td>"; echo "<td>". $zeile['sender'] . "</td>"; echo "<td>". $zeile['recipient'] . "</td>"; echo "<td>". $zeile['first'] . "</td>"; echo "<td>". $zeile['last'] . "</td>"; echo "<td>". $zeile['n'] . "</td>"; echo "<td>". $zeile['UserID'] . "</td>"; echo "</tr>"; }
echo "</table>"; echo "Auswahl der UserID "; echo "<input type='text' name='UserID' value='Userid eintragen' />" . "<input type='submit' name='Submit' value='zuordnen' /></form>";
echo "<p />";
Und die zuordnen.php:
PHP-Code:
if (!isset ($_POST['zuordnen'])) $_POST['zuordnen']= "an"; { mysql_query("UPDATE *** SET UserID='".$_POST['UserID']."' "); }
*** wurden eingefügt
Was liefert ".print_r( $_POST, true )."?
PHP-Code:
Array ( [zuordnen] => Array ( [0] => an [1] => an )
[UserID] => 2 [Submit] => zuordnen )
Ich habe die ersten beiden Datensätze ausgewählt, aber überall wird die "UserID" auf 2 geändert. Wenn ich keinen Datensatz auswähle, passiert nichts.
Ich komme nicht wirklich weiter... Vielleicht kann mir nochmal jemand auf die Sprünge helfen.
Danke
|

28-07-2010, 11:24
|
|
derHund
PHP Master
|
|
Registriert seit: Aug 2003
Ort: Hundehütte
Beiträge: 5.293
|
|
Gib im Formular bei mal die ID des Eintrags als Index an, nach dem Absenden aktualisierst du alle Datensätze, die den übergebenen IDs entsprechen. Dazu durchläufst du das zuordnen-Array, packst alle IDs ein eigenes Array und kannst dann bei der WHERE-Klausel 'WHERE id IN (...)' verwenden.
Dass momentan alle Datensätze geändert werden, liegt schlicht daran, dass du in der UPDATE-Anweisung keine Bedingung angibst ...
__________________
Die Zeit hat ihre Kinder längst gefressen: hund (back in black) | ??? | ??? | ...
|
|
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
|