PHP simpler code, wo ist der fehler?

Crashdowns

Ensign
Registriert
Juni 2010
Beiträge
138
Hallo Leute, ich sitze mitlerweile seit 3h vor dem simplen anfänger problem eine datenbankabfrage auszuführen und dann auszugeben. hört sich nicht schwer an, funktioniert aber aus irgendwelchen gründen nicht.

hier mal der code
PHP:
<?php
$verbindung = mysql_connect ("localhost",
"root", "")
or die ("keine Verbindung möglich.
 Benutzername oder Passwort sind falsch");

mysql_select_db("north_america")
or die ("Die Datenbank existiert nicht.");


$abfrage = "SELECT uni FROM europe";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
   {
   echo "$row->uni <br>";
   }


?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>test</title>
</head>

<body>


</body>
</html>

wenn ich das so ausführen lasse kommt folgendes ergebnis zurück


wenn ich die daten mit der phpmyadmin konsole abfrage bekomme ich die richtigen ergebnisse, nur die ausgabe mit diesen php befehlen funktioniert nicht. bitte sagt mir wo ich meinen dämlichen fehler versteckt habe, ich zweifle hier schon langsam an meiner zurechnungsfähigkeit!!!:freak:

PS: ich arbeite mit dreamweaver CS5 und XAMPP
 
ist ewig her, seit ich php geschrieben habe, aber der fehler liegt definitiv hier:
Code:
echo "$row->uni <br>";

anscheinend wird der echo befehl nicht beendet, dh das semikolon scheint irgendwie noch zum string zu gehören... eine idee die ich hätte, wäre, die ausgabe vorher komplett in eine variable zu speichern und dann nur diese variable auszugeben via echo, so sollte sich der fehler zumindest weiter eingrenzen lassen.
 
Probier es mal bitte mit:
PHP:
if($ergebnis)
    {
        while($row = mysql_fetch_object($ergebnis))
            {
                echo $row->uni . '<br />';
            }
    } else {
        echo 'Fehlerhaftes Ergebnis';
    }

# oder gleich #
$ergebnis = mysql_query($abfrage) or mysql_error();
 
Zuletzt bearbeitet:
Wird denn etwas simples wie

PHP:
<?php phpinfo(); ?>

ausgeführt, oder kommt da auch nur ein Klartext des Codes?
 
Wie wärs mit mit:

PHP:
while($row = mysql_fetch_array($ergebnis) {
  echo $row['spaltenname'] . "<br>";
}
 
@Zhen
Wenn schon, dann schon:
PHP:
while($row = mysql_fetch_array($ergebnis, MYSQL_ASSOC) {
  echo $row['spaltenname'] . '<br />';
}
Ich würde ' immer anstelle von " benutzten, wo es nicht absolut notwendig ist.
Bei längeren Codes (>20000 Zeilen) gibt es einen Leistungsverbesserung dadurch.

Ergänzung:
PHP.net schrieb:
Diese Eigenschaft steht seit PHP 3.0.7 zur Verfügung. MYSQL_BOTH ist der Standard für diesen Paramater.
Seltsam. Ich benutzte PHP 5.3 und kriege mit mysql_fetch_array() IMMER nur ein nummerisches Array zurück...
 
@Zhen
hatte ich vorher auch schonmal, leider keine besserung (sowohl mit " also auch mit ')

@phiilipp
bringt mir eine weiße seite wenn ich in ein neues php dokument deine codezeile eingebe

@eagle
wogenau soll ich den teil jetz einfügen?
 
Also bei mir hat es bislang immer mit "mysql_fetch_array($result)" funktioniert. Es gab nur eine Situation glaub ich wo ich dann wirklich mysql_fetch_row($result) hernehmen musst weil das andere nicht funktioniert hat...

oder war es genau andersrum? ^^ naja auf jedenfall klappt bei mir mit ..._array($result) die ganze sache perfekt.
 
Den Teil des ersten Codes nach der Deklaration von $ergebnis.

Wenn bei <?php phpinfo(); ?> nicht eine ewig lange Seite mit Versionsnummer, Eigenschaften und Einstellungen etc. erscheint, hast du vermutlich keinen PHP-Server...oder es ist abgeschaltet.

WO befindet sich dein PHP-Dokument und wie genau öffnest du es mit dem Browser?
Bitte doch nicht mit Doppelklick oder so...?

@Zhen
Siehe bitte meine Ergänzung oben ;)
 

Anhänge

  • phpinfo()_1299169102948.png
    phpinfo()_1299169102948.png
    32,9 KB · Aufrufe: 198
Zuletzt bearbeitet:
also, es schaut so aus als ob xampp aus irgendwelchen gründen nicht richtig arbeitet. ich werd mich morgen abend nochmal ransetzen um das genauer auszukundschaften. aber schonmaal danke für eure hilfe.
oder hat jmd noch eine andere art und weis um seine website lokal zu testen (nur falls mich xampp weiter mobbt)?
 
Hallo,

mach doch mal htmlspecialchars($row->uni). Ich kann ja leider nicht in deine Datenbank sehen.
 
Hast du im Hintergrund Skype laufen?

@geisterfahrer
Hast du eigentlich die andere Beiträge gelesen?
 
Zuletzt bearbeitet:
Also ich habe mal eben deinen Quellcode als .htm Datei gespeichert und direkt geöffnet: Ich bekomme das gleiche angezeigt wie du. Mit dem PHP-Code hat das also erstmal nichts zu tun, sondern nur, das PHP Code bei dir anscheinend überhaupt nicht bearbeitet wird. Das stellt natürlich mehrere Fragen: Korrekte Dateiendung? Auch wirklich über den Webserver aufgerufen (http://localhost/ etc.. und nicht C:\sonstwas)?

Davon abgesehen, auch wenn ich jetzt länger nichts mit PHP zutun hatte: "$row->uni" könnte evtl. nicht funktionieren. Variablen in Strings sind ok, aber nicht der -> Operator. Aber das kann ich jetzt nicht 100%iger Sicherheit sagen.
 
Dass der PHP-Code nicht interpretiert wird, ist nun bereits seit einigen Beiträgen common-sense. Der Themenersteller scheint aber sein Problem bereits gelöst zu haben, anders ist zumindest nicht erklärbar, warum er sich nun in Schweigen hüllt.

@Eagle: Wäre Port 80 belegt, würde nicht mal der Klartext vom Code angezeigt, da der Apache blockiert wird. Hier greift PHP nicht. Ich vermute, unser Programmierlehrling öffnet seine Datei einfach direkt im Browser (File -> Open) ;)
@geisterfahrer: $obj->var ist durchaus zulässig. Nennt sich OOP.
 
@philippgerard
Das vermutete ich schon bereits vorhin doch:
Ich schrieb:
WO befindet sich dein PHP-Dokument und wie genau öffnest du es mit dem Browser?
Bitte doch nicht mit Doppelklick oder so...?
;)

"$obj->var" ist glaub ich aber falsch, $obj->var ;) Die Gänsefüsschen sollten da nicht hin. Zumindest gab's bei mir damals damit Probleme. Auch wenn hier die Gänsefüsschen nicht gemeint sind :D
 
Zu dem Problem mit Skype: Bei Skype in den Einstellung unter Verbindung einfach die Option "Port 80 und 4xx als Alternative für eingehende Verbindungen benutzen" wegmachen.
 
also, nachdem mir in der letzten woche alles mögliche um die ohren geflogen ist, habe ich jetzt endlich wieder Zeit für die website. also das problem lag offensichtlich an xampp. die aktuellste version war anscheinend nicht kompatibel, also hab ich eine version drunter genommen und nun funktioniert alles wunderbar.
die auswahlliste mit den einträgen aus der datenbank füllen ging auch ohne probleme.
nächstes ziel ist es jetz das die nachfolgende auswahlliste berücksichtigt was in der ersten angeklickt wurde und dem entsprechend eine bestimmte tabelle lädt. in mehreren websites und tutorials wurde empfohlen das per onchange zu machen, leider erschloss sich mir noch nicht genau wie ich dies in meinen vorhandenen code einfügen kann. ich hoffe wieder auf kreative vorschläge;)

PHP:
<?php require_once('Connections/Test_university.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

mysql_select_db($database_Test_university, $Test_university);
$query_Universiyt = "SELECT usa.university FROM usa";
$Universiyt = mysql_query($query_Universiyt, $Test_university) or die(mysql_error());
$row_Universiyt = mysql_fetch_assoc($Universiyt);
$totalRows_Universiyt = mysql_num_rows($Universiyt);
?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

mysql_select_db($database_Test_university, $Test_university);
$query_Fach = "SELECT washington.fach FROM Washington";
$Fach = mysql_query($query_Fach, $Test_Fach) or die(mysql_error());
$row_Fach = mysql_fetch_assoc($Fach);
$totalRows_Fach = mysql_num_rows($Fach);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Search Test</title>
</head>

<body>


<p>Universität:
  <select size="1">
    <option value="value">-- Bitte auswählen --</option>
    <?php
do {  
?>
    <option value="<?php echo $row_Universiyt['university']?>"><?php echo $row_Universiyt['university']?></option>
    <?php
} while ($row_Universiyt = mysql_fetch_assoc($Universiyt));
  $rows = mysql_num_rows($Universiyt);
  if($rows > 0) {
      mysql_data_seek($Universiyt, 0);
	  $row_Universiyt = mysql_fetch_assoc($Universiyt);
  }
?>
  </select>


</p>
Fach:<select>
  <option value="value">-- Bitte Auswählen --</option>
  <?php
do {  
?>
  <option value="<?php echo $row_Fach['fach']?>"><?php echo $row_Fach['fach']?></option>
  <?php
} while ($row_Fach = mysql_fetch_assoc($Fach));
  $rows = mysql_num_rows($Fach);
  if($rows > 0) {
      mysql_data_seek($Fach, 0);
	  $row_Fach = mysql_fetch_assoc($Fach);
  }
?>
</select>
</body>
</html>
<?php
mysql_free_result($Universiyt);
?>

Es wird in der ersten auswahlliste eine universität gewählt, in der zweiten soll dann das entsprechende fach wählbar sein.

PS: ich bin mir des rechtschreibfehlers bei (universiyt bewusst, ist beim rumtesten verschiedener möglichkeiten entstanden und ich habs erstmal so gelassen damit ich weiß in welchem code ich gerade rumspiele;) )

mfg crashdowns
 
Zuletzt bearbeitet:
Das onchange ist Javascript.
Du kannst mit PHP ein JSON als "Datenbank" mit uni->Fächer erstellen und dann per Javascript bei onchange die Werte für das zweite Auswahlfeld anpassen.
HTML:
<script>
db=({
//Per PHP erzeugen
"Mainz":["Mathe","Physik"],"Berlin":["Nix","Alles"]
//Ende PHP
});
 
function update(){
var selected=document.getElementById("uni").value;
var elem=document.getElementById("fach");
elem.innerHTML="";
for(var i=0;i<db[selected].length;++i)
elem.innerHTML+="<option value=\""+db[selected][i]+"\">";
}
</script>
<select id="uni" onchange="update()"><?php echo options...?></select>
<select id="fach"></select>
 
Zurück
Oben