• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

PHP und SQL

Hausmeister76

Adams Parmäne
Registriert
17.08.04
Beiträge
1.300
Heyho Jungs....

Ich brauch mal fix ein tritt gegens Schienbein.... ich ärgere mich hier mit meiner Datenbank und einem PHP Script herum....

Ich veruche ein paar Daten aus einer SQL Datenbank mithilfe von PHP auf einer Website anzuzeigen, es treten aber Fehler auf, mit denen ich "noch" ;) nichts anfangen kann....

Code:
<?php

$db_name="Datenbank";
$db_server="localhost";
$db=mysql_connect($db_server,"","");
  $db_select=mysql_select_db($db_name);
  $result=mysql_query("SELECT * FROM Tabelle"); 
  for($x=0;$x<mysql_num_rows($result);$x++) { 
    $str_1 = mysql_result($result,$x,"Tabelle.Name"); 
    echo "id: $str_1 <br>"; 
    $str_2 = mysql_result($result,$x,1); 
    echo "gruppe: $str_2 <br><br>"; 
  }
?>

folgender Fehler tritt dabei auf:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /Library/WebServer/Documents/test2.php on line 8

Wenn ich nun das mysql_num_rows() durch eine Zahl ersetze zum Bsp.: 3 dann kommt folgende Fehlermeldung:

Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /Library/WebServer/Documents/test2.php on line 9
id:

Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /Library/WebServer/Documents/test2.php on line 11
gruppe: ........


wo liegt der Fehler?

thx....

so long....
 

Toddy

Wohlschmecker aus Vierlanden
Registriert
10.05.04
Beiträge
242
Was gibt denn ein "var_dump($db)" aus?
 

michis0806

Adams Apfel
Registriert
27.02.04
Beiträge
511
Also irgendwie kann ich mit deiner Methode nix anfangen... Ich würd's so machen:

<?php

$db_name="Datenbank";
$db_server="localhost";
$db=mysql_connect($db_server,"","") and mysql_select_db($db_name) or die("Datenbank konnte nicht verbunden werden");

$query=mysql_query("SELECT * FROM Tabelle");
while($data=mysql_fetch_row($query))
print("id: $data[0]<br />gruppe: $data[1]<br /><br />");

?>
 

master_p

Gast
Also wenn Deine Datenbankverbindung wirklich korrekt ist, dann sollte er auch keinen Fehler ausgeben. Ansonsten mach es mal so (und finde es auch deutlich übersichtlicher und Objektorientierte Programmierung finde ich [zumindest unter PHP] völlig sch...):

// DB-Verbindung

$query = "SELECT * FROM tabelle";
$res = mysql_query($query); // print mysql_error();
$num = mysql_num_rows($res);

for ($i=0; $i<$num; $i++) {
$row = mysql_fetch_array($res);

print "Dies ist eine $row['feld'].";
}

Wenn Du das "print mysql_error();" wieder aktivierst, dann wird er Dir die MySQL-Fehlermeldung auswerfen. Ansonsten mal mit phpMyAdmin den Query ausführen und schauen, ob der überhaupt korrekt ist.
 

Hausmeister76

Adams Parmäne
Registriert
17.08.04
Beiträge
1.300
also besten Dank für eure Mühen.....

Die Version von mischis0806 funktioniert tadellos....

deine master_p bringt einen Fehler bei print "Dies ist eine $row['feld'].";
und zwar:

parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' .....

aber warum geht meine "Version" nicht? komisch, komisch...

so long....
 

MACRASSI

Gelbe Schleswiger Reinette
Registriert
21.11.04
Beiträge
1.754
Also das das hier einen Fehler bringt ist ja klar:
print "Dies ist eine $row['feld'].";
denn wenn schon sollte es:

print "Dies ist eine".$row['feld'];

heißen.
Gruß Rasmus
 

Squart

Pomme Etrangle
Registriert
29.01.04
Beiträge
910
MACRASSI schrieb:
Also das das hier einen Fehler bringt ist ja klar:
print "Dies ist eine $row['feld'].";
denn wenn schon sollte es:

print "Dies ist eine".$row['feld'];

heißen.
Gruß Rasmus
Hm, da bin ich mir nicht sicher. Bei normalen Variablen (ohne einen String als Zugriff auf das Array) geht das auch. A'la print("Sie sind Besucher Nr. $nummer");

Ist zwar nicht schön, aber PHP finde ich auch so nicht schön :innocent:
 

Toddy

Wohlschmecker aus Vierlanden
Registriert
10.05.04
Beiträge
242
Squart schrieb:
Hm, da bin ich mir nicht sicher. Bei normalen Variablen (ohne einen String als Zugriff auf das Array) geht das auch. A'la print("Sie sind Besucher Nr. $nummer");[...]

Bei einem Array würde es so nicht funktionieren, entweder das Array außerhalb des Strings angeben, oder in geschweifte Klammern.
(print "Dies ist eine {$row['feld']}.")
 

mullzk

Linsenhofener Sämling
Registriert
04.01.04
Beiträge
2.529
bei einem assoziativen array funktioniert das parsing nicht, hingegen sind nummerierte arrays auch ohne geschweifte klammer möglich: echo "Dies ist eine $row[0]";
 

Hausmeister76

Adams Parmäne
Registriert
17.08.04
Beiträge
1.300
hi jungs.... hab nun leider an einer anderen Stelle ein Problem und zwar:

Auf einer Website soll der Benutzer in ein Formularfeld eine Kommazahl eingeben und die alte Kommazahl soll dann einfach in der Datenbank an einer bestimmten Stelle durch diese neue aktualisiert werden.

Ich hänge scheinbar an der SQL Anfrage:

Code:
mysql_query("UPDATE $Table SET Preis='".$_REQUEST['preis1']."' 
WHERE Nummer=1",$DatabasePointer);

denke da an die WHERE Klausel nur hab ich keine Ahnung, wie ich es ändern müsste, damit es funktioniert.

$Table ist die Tabelle in der Datenbank, der Preis wird hier durch den Aufruf der update.php (wo unter anderem dieser Quellcode drin steht) durch Klick auf ein Button übergeben. Nur wird dabei der Preis in der Datenbank nicht durch den neuen geändert.

Ich gehe doch recht in der Annahme, das ich in der update.php auf die Daten aus dem Formularfeld durch $_REQUEST darauf zugreifen kann.... diese update.php wird in der Datei login.php durch

Code:
<form action="update.php" method="post">
    <tr>
        <td align="center"><input maxlength="20" 
          name="preis1" size="15" type="text"></td>
    </tr>

aufgerufen, oder?

Was mache ich falsch?

thx schonmal

so long...
 

Hausmeister76

Adams Parmäne
Registriert
17.08.04
Beiträge
1.300
oh man.... manchmal ist das ganze doch einfacher als gedacht....

da ich das ganze unter opera immer ausprobiert habe und die Seite dadurch immer im Cache hatte, holte er die ganze Zeit die Seite aus dem Cache und da stand halt immer der alte Wert drin. nun habe ich mal ein neues Fenster geöffnet und die Adresse nochmal per Hand eingegeben und siehe da, es stand der neue Wert drin.... also manchmal könnt ich....

Also alles funzt und ist ok...

so long...