Erstes ergebnis aus DB ohne LIMIT

Godstyle

Erfahrenes Mitglied
Moin,

vlt eine blöde frage, ich habe eine DB abfrage die füllt mir ein Select feld, jetzt wäre es wichtig, das ich den ersten Wert direkt speichere und alle ausgeben.

Das script:

PHP:
	<select name="ort" style="width:140px;" id="wohnort" onFocus="changeBgColor(this)" onBlur="change2BgColor(this);sendRequest(this)">
<?php
$ergebnis = mysql_query("SELECT `ort` FROM `plz_blnd_ort` WHERE `plz` LIKE '".$_POST['ort']."'");  
while ($datensatz = mysql_fetch_array($ergebnis))
{
echo "<option value=\"" . $datensatz['ort'] . "\">";
echo $datensatz['ort'];
echo "</option>\n";
}
?>
</select>

in der regel speichere ich alle anderen Daten imemr durch onchange, da jedoch hier der erste eintrag bereits richtig sein kann muss ich die speicherung bereits vorher vornehmen, wie kann ich denn nun direkt den ersten wert speichern?

lg
 
Füge einfach ein "manuelles" [phpf]mysql_fetch_array[/phpf] vor deinem while hinzu:
PHP:
    <select name="ort" style="width:140px;" id="wohnort" onFocus="changeBgColor(this)" onBlur="change2BgColor(this);sendRequest(this)"> 
<?php 
$ergebnis = mysql_query("SELECT `ort` FROM `plz_blnd_ort` WHERE `plz` LIKE '".mysql_real_escape_string($_POST['ort'])."'");   

$first_row = mysql_fetch_array($ergebnis);

// Do something with $first_row!

while ($datensatz = mysql_fetch_array($ergebnis)) 
{ 
echo "<option value=\"" . $datensatz['ort'] . "\">"; 
echo $datensatz['ort']; 
echo "</option>\n"; 
} 
?> 
</select>
Du hattest übrigens eine Sicherheitslücke (SQL Injections) drinne, die ich dir mit [phpf]mysql_real_escape_string[/phpf] entfernt habe ;)
 
Danke com, ich muss zu meiner entschuldigung sagen das überhalb dieses codes noch einiges mehr steht, die eingabe wird ebenfalls geprüft ob nur zahlen vorhanden sind, nur 5 zeichen etc, eig steht wo das post hier steht eine variable nur das oberhalb hatte ich ausgeblendet zum testen und das post direkt eingefügt ;) Teste das jetzt mal ob es klappt wie ich möchte ;)
 
So com freak, leider komme ich damit nicht zu dem gewünschten ergebnis

PHP:
	<select name="ort" style="width:140px;" id="wohnort" onFocus="changeBgColor(this)" onBlur="change2BgColor(this);sendRequest(this)">
<?php
$ergebnis = mysql_query("SELECT `ort` FROM `plz_blnd_ort` WHERE `plz` LIKE '".mysql_real_escape_string($_POST['ort'])."'");   

$first_row = mysql_fetch_array($ergebnis);
$wort = $first_row->wohnort;
echo $wort;
$aendern = "UPDATE ow_user_data
				Set 
				`wohnort`  = '".mysql_escape_string($wort)."'
				WHERE userid  = '".$_SESSION["usid"]."'";
$update = mysql_query($aendern)or die(mysql_error());

 
while ($datensatz = mysql_fetch_array($ergebnis))
{
echo "<option value=\"" . $datensatz['ort'] . "\">";
echo $datensatz['ort'];
echo "</option>\n";
}
?>
</select>

ich habe auch mal die update funktion komplett rausgenommen und mir nur echo $wort ausgeben lassen, doch an dieser stelle bricht er das script bereits ab, sobald ich auch $first_row = $mysql_fetch_array($ergebnis); ausklammere klappt es wieder. kann es sein das ich mysql_fetch_array() nur einmal verwenden darf?
EDIT//
$first_row = $mysql_fetch_array($ergebnis);
hab ich zu
$first_row = mysql_fetch_array($ergebnis);
geändert, denke das war ein flüchtigkeitsfehler von dir
 
Zuletzt bearbeitet:
Sorry, mein Fehler. Da darf natürlich kein Dollar-Zeichen bei der Funktion [phpf]mysql_fetch_array[/phpf] sein ;)
Also:
PHP:
$first_row = mysql_fetch_array($ergebnis);
 
ja das hatte ich bereits geänbdert, ich komme denoch zu keinem ergebnis, hier mal das aktuelle script:


PHP:
if(isset($_POST['ort'])) { 
echo $_POST['ort'];
?>
	<select name="ort" style="width:140px;" id="wohnort" onFocus="changeBgColor(this)" onBlur="change2BgColor(this);sendRequest(this)">
<?php
$ergebnis = mysql_query("SELECT `ort` FROM `plz_blnd_ort` WHERE `plz` LIKE '".mysql_real_escape_string($_POST['ort'])."'");   

$first_row = mysql_fetch_array($ergebnis);
$wort = $first_row['ort'];
echo $wort;
$aendern = "UPDATE ow_user_data
				Set 
				`wohnort`  = '".mysql_escape_string($wort)."'
				WHERE userid  = '".$_SESSION["usid"]."'";
$update = mysql_query($aendern)or die(mysql_error());

 
while ($datensatz = mysql_fetch_array($ergebnis))
{
echo "<option value=\"" . $datensatz['ort'] . "\">";
echo $datensatz['ort'];
echo "</option>\n";
}
?>
</select>


Also $_POST['ort'] wird mir angezeigt, somit ist er auch in der bedingung, $wort jedoch nicht mehr. Er hat ein Problem mit folgendem script:

PHP:
$first_row = mysql_fetch_array($ergebnis);
$wort = $first_row['ort'];
echo $wort;
$aendern = "UPDATE ow_user_data
				Set 
				`wohnort`  = '".mysql_escape_string($wort)."'
				WHERE userid  = '".$_SESSION["usid"]."'";
$update = mysql_query($aendern)or die(mysql_error());


wenn ich das rausnehme liefert er das richtige ergebnis.

lg



EDIT// ich denke das das Problem ist das ich nicht mit while arbeite, mit 2 abfragen würde es klappen nur finde ich es unsinnig 2 abfragen nach den selben kriterien zu starten, dass muss doch auch so irgendwie möglich sein, das ich einmal alles in dem select ausgebe und zeitgleich den ersten wert abspeichere.
 
Zuletzt bearbeitet:
So die Lösung ist wie folgt:


PHP:
	<select name="ort" style="width:140px;" id="wohnort" onFocus="changeBgColor(this)" onBlur="change2BgColor(this);sendRequest(this)">
<?php
$ergebnis = mysql_query("SELECT `ort` FROM `plz_blnd_ort` WHERE `plz` LIKE '".mysql_real_escape_string($_POST['ort'])."'");   
$first_row = mysql_fetch_array($ergebnis);
echo "<option value=\"" . $first_row['ort'] . "\">";
echo $first_row['ort'];
echo "</option>\n";
$aendern = "UPDATE ow_user_data
				Set 
				`wohnort`  = '".mysql_escape_string($first_row['ort'])."'
				WHERE userid  = '".$_SESSION["usid"]."'";
$update = mysql_query($aendern)or die(mysql_error());

while ($datensatz = mysql_fetch_array($ergebnis))
{
echo "<option value=\"" . $datensatz['ort'] . "\">";
echo $datensatz['ort'];
echo "</option>\n";
}
?>
</select>

irgendwas klappte nicht als ich das ganze in einer variablen speichern wollte, so geht es jedenfalls ;)
 
Und hier noch eine Lösung, die etwas logischer ist und auch schön, wenn du mich fragst ;-)

PHP:
    <select name="ort" style="width:140px;" id="wohnort" onFocus="changeBgColor(this)" onBlur="change2BgColor(this);sendRequest(this)">
<?php
$ergebnis = mysql_query("SELECT `ort` FROM `plz_blnd_ort` WHERE `plz` LIKE '".mysql_real_escape_string($_POST['ort'])."'")
	or die(mysql_error());   

$first_row= null;	

while ($datensatz = mysql_fetch_array($ergebnis))
{
  if($first_row === null)
    $first_row = $datensatz;
  echo "<option value=\"" . $datensatz['ort'] . "\">";
  echo $datensatz['ort'];
  echo "</option>\n";
}
?>
</select>

<?php
$aendern = "UPDATE ow_user_data
                Set 
                `wohnort`  = '".mysql_escape_string($first_row['ort'])."'
                WHERE userid  = '".$_SESSION["usid"]."'";
$update = mysql_query($aendern)or die(mysql_error());
 
danke saftmeister, ich habe deines jetzt nicht getestet, aber so wie das den anschein macht speichert er alle werte in der db.

Ziel ist es, die erste zeile zu speichern und alle zeilen ( inkl. der ersten) auszugeben.
 
Nein, der Update wird außerhalb der Schleife gemacht, und zwar mit dem ersten Ergebnis aus dem SELECT, der innerhalb der Schleife gemerkt wird.
 
Zurück