Variable mit PHP in Mysql schreiben/lesen.

Megamorph

Mitglied
Hallo an alle,
vorab: ich lerne erst seit letzten Montag PHP ^_^
vielleicht etwas früh für Mysql, aber ich brauche es dringend...
Könnt ihr mir evtl helfen?
Mit phpmyadmin habe ich eine Tabelle mit 3 Feldern erzeugt.
Tabellenname:'Tablle1'
Feld1 heißt: 'Feld1'
Feld2 heißt: 'Feld2'
Feld3 heißt: 'Feld3'
so weit so gut...
dann erstelle ich eine Index.php zum Abfragen der Daten :

Code:
<form action="action.php" method="post">
Eingabe Feld1:<input type="text" name="a" />
Eingabe Feld2:<input type="text" name="b" />
Eingabe Feld3:<input type="text" name="c" />
<input type="submit" />                                  // Button zum abschicken
</form>

Beim klicken auf 'submit' bekommt der user die nächste Seite 'action.php'
Code:
In Feld1 hast du <?php echo $_POST['a']; ?> eingegeben!<br>
In Feld1 hast du <?php echo $_POST['b']; ?> eingegeben!<br>    //Ausgabe
In Feld1 hast du <?php echo $_POST['c']; ?> eingegeben!
<?php
$nr1 = $_POST['a'];
$nr2 = $_POST['b'];           //um eine komische Fehlermeldung zu umgehen
$nr3 = $_POST['c'];
?>
<?php           //nur wenn ich das PHP hier unterbreche, kam keine Fehlermeldung
$db = mysql_connect("host","username","passwort");  //natürlich mit richtigen Werten ;-)
mysql_select_db("Datenbankname",$db);

$sql = "INSERT INTO ogame (Feld1,Feld2,Feld3)  VALUES ('$nr1','$nr2','$nr3')";
$result = mysql_query($sql,$db);
?>

So! Es kommt zwar keine Fehlermeldung, aber ich weiß nicht wirklich, ob das nun in der Datenbank drin ist. Also habe ich auch noch eine Ausgabe geschrieben: 'auslesen.php'

Code:
<?php
$db = mysql_connect("host","username","passwort");  //natürlich mit richtigen Werten ;-)
mysql_select_db("Datenbankname",$db);

$sql = "SELECT Feld1,Feld2,Feld3 FROM Tabelle1 ORDER BY DESC;";
$result = mysql_query($sql);

// so jetzt die Schleife um die ersten 10 Datensätze auszugeben:

$row = 1;
echo "Inhalt der DB (0 bis 10):<br />\n";
while($row < 11) {
    
  echo "Ausgabe Feld1: "$row['Feld1']." Ausgabe Feld2: ".$row['Feld2']."Ausgabe Feld3: ".$row['Feld3']."<br />\n";
$row = $row + 1;
}
?>

Die nötigen html Tags wie Html , Body, ... habe ich jetzt hier ausgelassen.

So nun mein Problem: Er gibt mir nur aus:
INhalt der DB (0 bis 10):
Ausgabe Feld1: Ausgabe Feld2: Ausgabe Feld3:
Ausgabe Feld1: Ausgabe Feld2: Ausgabe Feld3:
Ausgabe Feld1: Ausgabe Feld2: Ausgabe Feld3:
...

Aber wo sind die Datensätze
Habe ich sie überhaupt reingeschrieben? Oder liegt da schon der Fehler?
Vielleicht liegt das Problem auch beim Auslesen?
Ich habe 0 Ahnung. Bitte helft mir :-)
mfg
 
Nun du hast die Datensätze schon in der Datenbank, sonst würde das bei der Ausgabe nicht angezeigt werden. Du wunderst dich warum jetzt aber hinter Ausgabe Feld1: nicht der Inhalt steht?

Das liegt ganz einfach daran, weil du nirgends definiert hast, dass die $row eine Funktion zum ausleßen ist ;)

Schau dir einmal http://www.php.net/mysql_fetch_array an und dir wird geholfen ..

Gruß

EDIT: Och menne @ Gumbo :-)
 
erstmal danke für die schnelle Hilfe! :)

Wenn ich das richtig verstanden habe (was zu bezweifeln ist) muss der Code dann so lauten:

Code:
<?

mysql_connect("host","xxxx","xxx");

mysql_select_db(xxx);

$sql = "SELECT Feld1,Feld2,Feld3 FROM Tabelle1 ORDER BY DESC;";
$result = mysql_query($sql);

echo "Inhalt der Datenbank:<br />\n";
while($row = mysql_fetch_assoc($result)) {            //hier meine Änderung
    
    echo "Ausgabe Feld1" :$row['Feld1']." Ausgabe Feld2 ".$row['Feld2']." Ausgabe Feld3 ".$row['Feld3']."<br />\n";
$row = $row + 1;
}
?>

Jetzt kommt die Fehlermeldung:

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /usr/export/www/hosting/xxx/xxx/auslesen.php on line 20

Zeile 20 ist die:
Code:
while($row = mysql_fetch_assoc($result)) {

Liegt das an dem $result ?
 
Erweitere den Code mal wie folgt:
PHP:
<?php

	$link = mysql_connect('host', 'xxxx', 'xxx')
		or die('<p>Verbindung zum Datenbankserver schlug fehl!</p>');

	mysql_select_db('xxx', $link)
		or die('<p>Auswahl der Datenbank schlug fehl!</p>');

	$query = "
		SELECT
		        `Feld1`,
		        `Feld2`,
		        `Feld3`
		  FROM
		        `Tabelle1`
		";
	$result = mysql_query($query)
		or die('<p>Datenbankabfrage schlug fehl: '.mysql_error().'</p><pre>'.htmlspecialchars($query).'</pre>');

	echo '<p>Inhalt der Datenbank:</p>';
	while( $row = mysql_fetch_assoc($result) ) {
		echo '<p>Ausgabe Feld1: '.$row['Feld1'].'; Ausgabe Feld2: '.$row['Feld2'].'; Ausgabe Feld3 : '.$row['Feld3'].'</p>';
	}
	mysql_close($link);

?>
Die Abfrage enthielt übrigens noch einen Syntaxfehler.
 
ok, danke! Das Auslesen funktioniert! Ich habe einen Datensatz ausgelesen. Dann wollte ich mit index.php und action.php einen neuen Datensatz eintragen. Dann kam beim Auslesen wieder der selbe alte Datensatz. Per phpmyadmin habe ich alle Datensätze ich Feld1, Feld2 und Feld3 gelöscht, dann habe ich wieder mit index.php und action.php etwas reingeschrieben. Beim Auslesen kommt nur noch:

Inhalt der datenbank:

Also NOCH ein Fehler beim schreiben, den ich schon mal behoben hatte (es war ja ein wert drin), aber beim tüfteln wieder reingemacht habe?
 
Auch beim Eintragen solltest du das fehleranalytisch Anhängsel or die() benutzen:
PHP:
<?php 

	$link = mysql_connect('host', 'username', 'passwort')
		or die('<p>Verbindungsaufbau mit Datenbankserver schlug fehl!</p>');
	mysql_select_db('Datenbankname', $link)
		or die('<p>Auswahl der Datenbank schlug fehl!</p>');

	$query = "
		INSERT INTO
		        `ogame`
		  SET
		        `Feld1` = '".mysql_real_escape_string($_POST['a'])."',
		        `Feld2` = '".mysql_real_escape_string($_POST['b'])."',
		        `Feld3` = '".mysql_real_escape_string($_POST['c'])."'
		";
	$result = mysql_query($query, $link)
		or die('<p>Datenbankabfrage schlug fehl: '.mysql_error().'</p><pre>'.$query.'</pre>');

?>
 
joa,...gut ist erst einmal, dass es keinen Fehler gibt. Aber es ist immer noch nicht in der DB drin. ;(

index.php:

Code:
<html>
<head>
<title>PHP-Test</title>
</head>
<body background='start.jpeg'>
<br><br><br><br><br><br><br>
<form action="action.php" method="post" size="1">
                              
<select name="uni" class="Auswahl">
<option value="">Auswahl0</option>
<option value="">Auswahl1</option>
<option value="">Auswahl2</option>
<option value="">Auswahl3</option>

</select>
---
<input type="text" name="user" />-
<input type="PASSWORD" name="pw" />
<input type="submit" />
</form>

</body>
</html>

action.php

Code:
<html>
<head>
<title>PHP-Test</title>
</head>
<body>
<?php 

    $link = mysql_connect("xxx","xxxx","xxx") 
        or die('<p>Verbindungsaufbau mit Datenbankserver schlug fehl!</p>'); 
    mysql_select_db('xxx', $link) 
        or die('<p>Auswahl der Datenbank schlug fehl!</p>'); 

    $query = " 
        INSERT INTO 
                `ogame` 
          SET 
                `uni` = '".mysql_real_escape_string($_POST['uni'])."', 
                `user` = '".mysql_real_escape_string($_POST['user'])."', 
                `pw` = '".mysql_real_escape_string($_POST['pw'])."' 
        "; 
    $result = mysql_query($query, $link) 
        or die('<p>Datenbankabfrage schlug fehl: '.mysql_error().'</p><pre>'.$query.'</pre>'); 

?> 




</body>
</html>

Das Auslesen funktioniert jetzt :-)
Es kommt nirgens eine Fehlermeldung, aber es klappt auch nicht^^
 
Zurück