php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2007

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 03.01.2007, 12:55  
Gast
 
Beiträge: n/a
Standard [Erledigt] Datenbank auslesen mit register_globals off

Hallo,

das hier ist mein erster Beitrag, iund ich hoffe, jemand hat einen Tip für mich. Ich habe das Forum durchsucht, leider keinen Hinweis auf mein Problem gefunden.

Ich habe ein Formular, welches in eine Datenbank geschrieben wird, und die Daten dann an einer anderen Seite zur Verfügung stehen. Es funktioniert alles perfekt, ich kann schreiben und auslesen. In dem Moment, als ich die register_globals auf off stelle (per .htaccess), kann ich zwar problemlos in die Datenbank schreiben, aber wenn ich auslesen will, bekomme ich eine leere Seite.

Ich nehme an, ich müsste auch hier alles mit $_POST auslesen, und habe verschiedene Möglichkeiten versucht, es will aber nichts funktionieren.

Hier der relevanter Code:
Code:
<?php
$result = mysql_query("SELECT * FROM work WHERE id='$id' limit 1 ") or die(mysql_error());
if(mysql_num_rows($result)>0){
while($zeige = mysql_fetch_assoc($result)){

	$id = $zeige["id"];
	$occup = htmlentities($zeige["occup"]);
	$last_n = htmlentities($zeige["last_n"]);
?>
Anzeigen in einer Tabelle:
Code:
  <?php
   if($sur_n){
	echo "<table class=\"tab\" border=\"1\" cellpadding=\"0\" cellspacing=\"0\">\n";
	echo "<tr><td colspan=\"2\"><img src=\"../dateiupload/".$filename."\" /></td>\n\n";
	echo "<td colspan=\"5\"><h2>".$last_n." ".$sur_n."

 ".$occup."
 
".$datum."</h2></td>\n";
?>
Es gibt insgesammt 340 Variablen und Felder.

Bitte um Hilfe, wo mache den fehler?

Grüße, Erwin
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 03.01.2007, 13:12  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

Ich nehme mal an die Id ($id) wird per URL(GET)/Post übergeben?

Dann musst du bei register_globals=OFF selbstverfreilich auch $_POST['id'] bzw. $_GET['id'] verwenden.

Schau dir am besten nochmal an was register_globals bedeutet und wie das mit den Übergabeparamtern funktioniert - dazu findest du bestimmt Tutorials/Anleitungen.


btw:
Usereingaben solltest du NIE ungeprüft in ein SQL-Query übernehmen. Verwende mysql_real_escape_string() bzw. wenn $id immer eine Zahl ist $id = (int) $_GET['id']...
Such mal nach SQL-Injections...
__________________
Today you...Tomorrow me.
agrajag ist offline  
Alt 03.01.2007, 13:27  
Gast
 
Beiträge: n/a
Standard

Ich weiss was register_globals bedeutet, und alle Benutzereingaben werden in dem Formular auch überprüft. Das was nicht funktioniert ist die Ausgabe des Formulars auf einer anderen Seite.
 
Alt 03.01.2007, 13:37  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

Zitat:
Zitat von Eka
Ich weiss was register_globals bedeutet, und alle Benutzereingaben werden in dem Formular auch überprüft. Das was nicht funktioniert ist die Ausgabe des Formulars auf einer anderen Seite.
Ah.

Dann hast du nicth den relevanten Code gepostet.

Dort ist weder ein Formular zu sehen noch irgendwelche $_GET/$_POST-Variablen.

Aus dem Quellcode oben ist dann genau nichts ersichtlich


Du schreibst also irgendwelche Formulareingaben in die Tabelle "work"? Und willst sie mit dem Code oben auslesen?

- Werden die Daten _wirklich_ in die Datenbank geschrieben (oder werden nur leere Felder erzeugt)?
- gibt es den Datensatz mit der ID $id?
__________________
Today you...Tomorrow me.
agrajag ist offline  
Alt 03.01.2007, 13:57  
Gast
 
Beiträge: n/a
Standard

Ja, so ist es. In die Tabelle work werden Daten aus Formular geschrieben, und es funktioniert, keine leere Felder. Den Code von dem Formular habe ich nicht gepostet, weil der in Ordnung ist und wird richtig überprüft.

Beispiel:
Code:
	<input name="app2_result" type="text" value="<?php if(isset($_POST['app2_result'])) echo (stripslashes ($_POST['app2_result']));?>" />
Plus habe ich noch andere Überprüfungen in einer include Datei. Wie gesagt, das ist nicht das Problem.

Wenn ich aber die Angaben von diesem Formular, das richtig in der Datenbank existiert auslesen will, dann erst funktioniert die Seite, auf der ich es auslese nicht. Es werden keine Daten ausgegeben, nicht mal die leere Tabelle. HTML ist ok, weil es alles funktioniert wenn register_globals auf on sind. Also muss es etwas damit zu tun haben.

Was ich nicht weiss ist, wie überprüfe ich mit $_POST Daten, die aus einer Datenbank kommen?

Danke, Erwin
 
Alt 03.01.2007, 14:05  
Erfahrener Benutzer
 
Registriert seit: 23.12.2003
Beiträge: 243
mAy^daY
Standard

Zitat:
Zitat von Eka
[...]Es werden keine Daten ausgegeben, nicht mal die leere Tabelle. HTML ist ok, weil es alles funktioniert wenn register_globals auf on sind. Also muss es etwas damit zu tun haben.[...]
Es wird also demnach kein HTML ausgegeben, also das Script wird abgebrochen?

Was sagt den error_reporting(E_ALL) dazu?
oder ein print_r($_POST) / print_r($_GET) ?
mAy^daY ist offline  
Alt 03.01.2007, 14:07  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

Ich versteh nicht was du damit meinst "wie überprüfe ich mit $_POST Daten, die aus einer Datenbank kommen?". Wenn Daten aus einer Datenbank kommen sind es keine _POST-Daten mehr.

Sorry wenn ich mich wiederhole und dir das stupide erscheint, aber du glaubst nicht was man hier alles schon erlebt hat:

Hast du wirklich schonmal (per phpmyadmin) in die Datenbank geschaut und gesehen, dass dort die Daten wie erwartet stehn?

Woher kommt $id in deinem Script aus dem ersten Posting? Wird die Schleife durchlaufen bzw. was liefert mysql_num_rows()?

Die Code-Zeile in deinem letzten Posting - woher kommt die? versuchst du dort etwas aus der Datenbank auszulesen/auszugeben - warum dann _POST?
__________________
Today you...Tomorrow me.
agrajag ist offline  
Alt 03.01.2007, 14:44  
Gast
 
Beiträge: n/a
Standard

Habe ich geschaut, ich frage doch nicht, bevor ich alles überprüft habe. In die Datenbank wird geschrieben. Der Code in dem vorherigem Posting war aus dem Formular, um zu zeigen dass überprüft wird.

error_reporting(E_ALL) sagt mir dass ich eine undefinierte Variable id habe, und zwar genau hier:
Code:
$result = mysql_query("SELECT * FROM workers1 WHERE id='$id' limit 1 ") or die(mysql_error());
und hier undefinierte variable sur_n
Code:
if($sur_n){
Wenn ich kein $_POST brauche beim auslesen aus einer Datenbank, warum funktioniert es dann nicht?
 
Alt 03.01.2007, 14:47  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

PHP-Code:
<?php
$result 
mysql_query("SELECT * FROM workers1 WHERE id='$id' limit 1 ") or die(mysql_error());
?>
ersetze diese Zeile oben mal durch folgende:
PHP-Code:
<?php
$result 
mysql_query(sprintf("SELECT * FROM workers1 WHERE id = %u LIMIT 1", @$_GET['id'])) or die(mysql_error()); 
?>
http://de.php.net/register_globals

Edit: Klammerfehler korrigiert
Zergling-new ist offline  
Alt 03.01.2007, 14:56  
Erfahrener Benutzer
 
Registriert seit: 23.12.2003
Beiträge: 243
mAy^daY
Standard

Zitat:
Zitat von Eka
[...]error_reporting(E_ALL) sagt mir dass ich eine undefinierte Variable id habe, und zwar genau hier:
Code:
$result = mysql_query("SELECT * FROM workers1 WHERE id='$id' limit 1 ") or die(mysql_error());
[...]
Na also, dann ist auch klar warum du nichts angezeigt bekommst, wenn $id undefiniert ist (also nicht existiert) kann auch kein Datensatz abgerufen werden.

Wie Zergling schon geschrieben hat, versuch doch mal $_GET['id'] oder $_POST['id'] vorausgesetzt dein Formularfeld hat auch den Namen "id".
mAy^daY ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
xyz aus function("xyz"); in Datenbank auslesen?! Nightuser PHP Tipps 2008 5 14.07.2008 05:45
prob mit datenbank auslesen ... counteam PHP Tipps 2008 22 06.07.2008 21:28
Variablen in Datenbank speichern und auslesen freehawk PHP-Fortgeschrittene 4 16.03.2008 17:22
[Erledigt] Aus Datenbank auslesen mit php PHP Tipps 2006 4 04.01.2006 18:17
beim auslesen von mysql datenbank bestimmte id nicht auslsen djrace PHP Tipps 2005-2 3 10.09.2005 13:32
Daten aus einer Datenbank auslesen Datenbanken 2 04.09.2005 19:13
[Erledigt] problem beim erstellen und auslesen einer datenbank PHP Tipps 2005-2 6 04.09.2005 16:55
Daten aus einer mySQL Datenbank auslesen GSJLink PHP Tipps 2005-2 6 25.07.2005 16:38
[Erledigt] Auslesen und Aktualisieren von einer MYSQL Datenbank PHP Tipps 2005-2 3 05.07.2005 14:39
Mail Adresse aus einer Datenbank auslesen? Stemmi Datenbanken 6 23.04.2005 23:24
Auslesen aus der Datenbank nixdorf PHP Tipps 2005 7 06.02.2005 21:40
auslesen aus datenbank und sortieren! PHP Tipps 2004-2 15 04.12.2004 15:56
Auslesen von Daten aus einer mysql Datenbank + Editieren vampsoftchef PHP Tipps 2004-2 5 15.11.2004 08:31
Datenstring aus datenbank auslesen PHP Tipps 2004 3 25.10.2004 01:19
[Erledigt] meta refresh beim auslesen aus einer Datenbank umgehen Datenbanken 1 14.09.2004 20:10

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql_fetch_assoc while register_globals = off, php post auslesen register globals, .htaaccess auslesen und in datenbank schreiben, h2 datenbank werte einlesen, h2 datenbanken auslesen, erwin datenbank auslesen, register_globals off datenbank, register_globals off post auslese, php problem register globals datenbank, wenn(und) auslesen, alle post variablen auslesen register_globals alternative, register_globals off mysql_query, auslesen welche datenbanken zur verfügung stehen, php daten update mit register_globals off, auslesen von datenbanken mit ordnung, mysql php informationen felder \leere tabelle\ auslesen, register_globals=off

Alle Zeitangaben in WEZ +1. Es ist jetzt 19:46 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.