if bedingung ergebnis falsch
cr
- php
0 Felix Riesterer0 cr
0 wahsaga
hallo,
ich versuche grad folgendes, scheitere aber bisher noch daran:
ein php script soll überprüfen, ob eine zahl in einer datenbank bereits vorhanden ist, wenn nicht, dann soll sie die nummer eintragen
so,
problem ist:
b = file(datenbank);
a = "usereingabe"
if(a != b)
{
soll er die in die db eintragen
und noch etwas anderes 1x ausführen
}
else
{
echo "Wert vorhanden";
}
problem ist nur, dass er aus mir unerklärlichen gründen die true bedingung nicht 1 mal ausführt, sondern meißt so oft, wie der wert nicht übereinstimmt...
wie schalte ich das ab? also wenn 3 werte in der datenbank sind und die usereingabe nicht stimmt, dann schreibt er 3 mal die usereingabe rein...schwachsinn...1x reicht, aber wie?
danke
cr
Liebe(r) cr,
b = file(datenbank);
a = "usereingabe"if(a != b)
{
soll er die in die db eintragen
und noch etwas anderes 1x ausführen
}
else
{
echo "Wert vorhanden";
}problem ist nur, dass er aus mir unerklärlichen gründen die true bedingung nicht 1 mal ausführt, sondern meißt so oft, wie der wert nicht übereinstimmt...
das hast Du so programmiert. Der tut ja auch genau das, was er soll.
Ach, Du wolltest etwas anderes? Dann musst Du ihm das auch sagen! Zum Beispiel so:
$gefunden = false;
$a = $blah;
$b = $blubb;
if ($a == $b) {
// Wert vorhanden! Merken!
$gefunden = $b;
}
if ($gefunden === false) {
// die dreifachen Gleichheitszeichen stellen sicher, dass nicht versehentlich ein numerischer Wert von "0" oder "-1" missinterpretiert wird
eintragen_in_db($gefunden),
}
Liebe Grüße aus Ellwangen,
Felix Riesterer.
hi,
danke!
leider macht das skript imme noch das selbe...
alos hier mal etwas genauer:
die datenbank ist eine txt.
inhalt
1000
1200
1500
das script:
$gefunden = false;
$b = file("datenbank.txt");
$a = 1000;
foreach($b as $bneu)
{
if($bneu == $a)
{
$gefunden = $a;
echo "wert gefunden";
}
if($gefunden === false)
{
echo "schreibe wert in die datenbank, da nicht vorhanden";
}
}
leider schreibt er auch hier den eintrag nicht 1mal sondern so fot, wie er false bei der suche bekommt...
wo ist der fehler?
danke.
cr
Liebe(r) cr,
inhalt
1000
1200
1500$b = file("datenbank.txt");
$b ist nun ein Array, das den Text der Datei zeilenweise in seine Array-Felder eingetragen hat. Inklusive des Zeilenendes!!!
if ($a == trim($bneu)) // trim() entfernt alle Leerzeichen drumherum und Zeilenenden-Zeichen.
Liebe Grüße aus Ellwangen,
Felix Riesterer.
hi,
ein php script soll überprüfen, ob eine zahl in einer datenbank bereits vorhanden ist, wenn nicht, dann soll sie die nummer eintragen
Mit "Datenbank" meinst du demzufolge
b = file(datenbank);
also ein Flatfile?
a = "usereingabe"
if(a != b)
problem ist nur, dass er aus mir unerklärlichen gründen die true bedingung nicht 1 mal ausführt, sondern meißt so oft, wie der wert nicht übereinstimmt...
Wenn du file() benutzt, bekommst du (im Erfolgsfall) ein Array zurückgeliefert. Ein solches kannst da nicht einfach mit einer Nutzereingabe, die wohl einen String darstellen dürfte, vergleichen.
Was du vergleichen kannst, sind die einzelnen Einträge im Array - also Array in Schleife durchlaufen, und dann einzeln vergleichen.
Oder Array-Funktionen wie in_array benutzen.
Dabei aber berücksichtigen, dass file() das/die Zeilenumbruchzeichen am Ende jedes Zeilenwertes beibehält.
gruß,
wahsaga