php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
mysql abfrage in for schleife heeeelp


 
coder90
21-11-2008, 14:14 
 
hallo leute,

ich habe aus mehreren scripten ein script erstellt, aber irgendwo ein fehler.


<form method="POST" action=" <?=$_SERVER['PHP_SELF'];?> ">
<textarea name="textfeld"></textarea>

<br><br>

<input type="submit">

<br><br>
</form>
<?php
//Mit dieser Funktion ist es möglich, eine bestimmten Datensatz aus einer MySql Tabelle auszulesen

function mysql_get_row($table, $fields, $add){ //Wir definieren die Funktion


$query = "SELECT ".$fields." FROM ".$table." ".$add." LIMIT 0 , 1"; //Wir weisen der Variable $query Sqlcode zu, den wir durch die an die Funktion übergebenen Daten vervollständigen

$result = mysql_query($query); //Wir senden ihn an die Datenbank

$row=mysql_fetch_array($result); //und lassen den Datensatz in ein Array packen

return $row; //Wir geben als Rückgabewert das Array mit dem Datensatz an
}

$textfeld = $_POST['textfeld'];
$textfeld = explode("\n", $textfeld);

for($i=0; $i < count($textfeld); $i++) {
$zahl = mysql_get_row("products", "*", "WHERE products_model = '".$textfeld[$i]."'");
echo $textfeld[$i] . " und " . $zahl["products_id"] . "<br>";
}
?>


gebe ich im textfeld folgendes ein:
1013521
101353
887743C

bekomme ich das als ergebnis:
1013521 und
101353 und
887743C und 12096

das problem ist, dass die id immer von dem letzten artikel angezeigt(gefunden) wird, obwohl in diesem fall für die ersten beiden die ids in der tabelle vorhanden sind.

gruß coder90[

 
Piremilok
21-11-2008, 14:19 
 
Hi,

ein Zeilenumbruch besteht manchmal aus \n, manchmal aus \r und meistens aus \r\n.

Wenn du nun splittest, spittest du in:
ID1\r
ID2\r
ID3

Das \r ist ja ein unsichtbares Zeichen und eine ID mit diesem unsichtbaren Zeichen hinten drann gibt es nicht in deiner Datenbank.
D.h. du musst deine Einträge noch trimmen.

$textfeld[$i] --> trim($textfeld[$i])


gruß
Piremilok

 
Kropff
21-11-2008, 14:23 
 
ich würde ganz anders vorgehen:
$textfeld = explode("\n", $textfeld);
$modellist = implode(',' $textfeld);
$query = 'SELECT * FROM products WHERE products_model IN ('.$modellist.')';
so vom prinzip her. da benötigst du nicht mal eine schleife.

peter

 
onemorenerd
21-11-2008, 15:53 
 
explode + implode = str_replace ;)

 
Kropff
21-11-2008, 16:56 
 
Original geschrieben von onemorenerd
explode + implode = str_replace ;)
geht doch bei "\n" nicht. höchstens preg_replace

peter

 
TheFish511
21-11-2008, 17:10 
 
Doch, das geht auch bei "\n".

http://de2.php.net/manual/de/function.str-replace.php

 
Kropff
21-11-2008, 17:56 
 
Original geschrieben von TheFish511
Doch, das geht auch bei "\n".

http://de2.php.net/manual/de/function.str-replace.php
ich sollte heute meinen mund halten und mich auf meine arbeit konzentrieren. beides geht wohl nicht. :D
peter


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:05 Uhr.