Willkommen in der Webstatt Zum Webstatt Blog und Stories
Yado Yado am 08.07.07 13:43

Hallo,
Ich habe ein Script (weiter unten) welche Daten Anzeigen soll und Eintragen.
Nun möchte ich nach dem Eintragen jedoch die Daten zum Tier angezeigt bekommen, jedoch klappt das aus irgendeinen Grund nicht.
Ich vermute das der query irgendwelche Probleme macht. Ich hoffe mir kann wer Helfen.

<?php
// Zunächst brauchen wir eine Datenbankverbindung:
$verbindung = mysql_pconnect( "localhost", "", "" ) ; mysql_select_db("",$verbindung);

if (!$verbindung) // War die verbindung NICHT erfolgreich? -> Wenn ja: Fehler auswerfen und beenden
{
echo "<br><center><b>- Keine Verbindung zur Datenbank -</b></center>";
exit;
}

echo '
<form method="POST" action="daten2.php">
<select size="1" name="tierauswahl">
';



$query = mysql_query('select id,name from tier'); //Alle tiere aus datenbank laden
while($row = mysql_fetch_assoc($query)) //daten von jedem tier nacheinander in das array $row schreiben
{
echo '<option>'.$row['id'].' | '.$row['name'].'</option>'; //tiere in das formular (drop down) schreiben
}


echo '
</select>
<input type="submit" value="Absenden" name="auswahl">
</form>
';


if(isset($_POST['auswahl'])) //falls formular abgeschickt
{
$id = substr($_POST['tierauswahl'], 0, 1); // id ermitteln, id steht ja an erster stelle des strings

$query = mysql_query('select name,art,geboren from tier where id = '.$id); //nochmal die daten des einzelnen tieres mit der id aus der tabelle tier laden.
while($row = mysql_fetch_assoc($query)) //ins array schreiben
{
echo $id.' | '.$row['name'].' | '.$row['art'].' | '.$row['geboren']; //ausgeben
}

echo '<br/><br/>';

$query = mysql_query('select groesse,gewicht,datum from daten where tid = '.$id.' order by datum desc');
//jetzt alle daten raussuchen dessen tid = der gegeben id ist und sofort nach dem datum (timestamp) sortieren. desc gegen asc austauschen um sortierreihenfolge umzukehren.
while($row = mysql_fetch_assoc($query))
{
echo $row['groesse'].' | '.$row['gewicht'].' | '.date("d.m.Y",$row['datum']).'<br/>'; //alle gefundenen daten ausgeben
}
}

?>

<?php echo 'select name,art,geboren from tier where id = '.$id; ?>

<?php echo "Tier ID: ".$id; ?>

<form method="POST" action="<?php echo $PHP_SELF ?>">
<input type="hidden" name="tierauswahl" size="6" value="<?php echo $id; ?>" readonly><br>
Gr&ouml;&szlig;e:<input type="text" name="groesse" size="20"><br>
Gewicht: <input type="text" name="gewicht" size="20"> <br>
Datum: <input type="text" name="datum" size="20">
<p><input type="submit" value="Speichern" name="auswahl"><input type="reset" value="Zur&uuml;cksetzen" name="B2"></p>
</form>

<?php

if(isset($_POST['groesse']))
{
//Datum teilen
$teil = explode(".", $datum);


$tierid = $id;
$groesse = $groesse; // -"-
$gewicht = $gewicht; // -"-
$datum = mktime(0,0,0,$teil[1],$teil[0],$teil[2]); // -"-


$sqlkommando = "INSERT INTO $dbname (tid, groesse, gewicht, datum) VALUES ('$tierid', '$groesse', '$gewicht', '$datum')";


mysql_query($sqlkommando) or die("Error: " . mysql_error()); // Kommando 'sqlkommando' ausfuehren
// bei misserfolg beenden und fehlermeldung ausgeben

echo "Eintragung erfolgreich hinzugef&uuml;gt"; // Bestätigung ausgeben
}

?>

netcup.de Warum gibt es hier Werbung?
nuit nuit am 08.07.07 18:27

hihi....mhh...wie du deine option übergibst ist reichltich ungewöhnlich? und das funktioniert? du könntest dem option auch einfach einen namen geben und gut ist...und der name ist die ID ;) dann kannst du das einfach über $_POST['tierauswahl'] machen

und dann lass dir mal: mysql_error() ausgeben

und dann: RÜCK EIN!!!

und dann: Schreib mal die SQL-Selected Words gross, also: SELECT id,name FROM table WHERE id=1

oder so...
warum? ->dies dient alles der lesbarkeit für dich selber und andere

achja wenn du schon POST und GET verwendest...dann schau dir auch mal $_SERVER an ;) weil dann wird $PHP_SELF zu: $_SERVER['PHP_SELF'].....

Yado Yado am 10.07.07 09:19

Hallo,
ich habe das Problem für die Fehlermeldung gefunden, jedoch zeigt er mir nicht die aktuell neu eingetragenen Daten an.
Und ich weiß nicht wieso... . Hat wer hier eine Idee woran das ganze liegen könnte?
Vom Code her hat sich nichts geändert es wurde nur die Variable $dbname hinzugefügt.

Grüße

der_nic der_nic am 10.07.07 09:39

Weil von deinem Programmablauf her zuerst alle Daten ausgelesen werden und danach geprüft wird ob neue Daten hereingeschrieben werden müssen bzw dass dann auch getan wird.
So werden die neuen Daten nie beim nächsten Seitenaufruf erscheinen sondern erst beim Übernächsten - oder kommt gar nichts an?

Yado Yado am 10.07.07 16:33

ahhh genau! stimmt der Programm Ablauf ist völlig verkehrt!

:D Danke!

hoffie hoffie am 12.07.07 20:25

Ungeprüfte/ungefilterte Post-Daten haben NIE etwas in SQL-Queries verloren (Z. 36).

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt