Webstatt.org - Community seit 2006 - 2012 (2024?)

Problem mit Query?

Avatar user-347
08.07.2007 11: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'zwinkern; //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'zwinkern;
//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'zwinkern";


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
}

?>

Avatar user-271
08.07.2007 16: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 zwinkern 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 zwinkern weil dann wird $PHP_SELF zu: $_SERVER['PHP_SELF'].....

#!/bin/bash
traurig){ neutral:& };:
Avatar user-347
10.07.2007 07: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

Avatar user-162
10.07.2007 07: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?

Perfection is not when there’s nothing to add, but when there’s nothing to take away swisscheek.com/magazine
Avatar user-347
10.07.2007 14:33

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

Fettes Grinsen user-158ke!

Avatar user-194
12.07.2007 18:25

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