Anzeige was noch nicht vergeben ist.

  • Themenstarter Themenstarter tezcatlipoca
  • Beginndatum Beginndatum
T

tezcatlipoca

Hallo miteinander!

Es tut mir leid, das sich der Titel etwas komisch anhört.
Aber was ich meine ist, ich will mit PHP und MySQL eine Abfrage machen.
Welche Zahlen der Spalte X noch nicht vergeben sind.
Also es soll so ne Art Liste mit Prioritäten werden,
dabei sind die Zahlen von 1 bis 100 Verfügbar,
sollen aber nicht doppelt vergeben werden.
Die verfügbaren kommen dann in Listen Menü.

Ich komme aber momentan auf keine Lösung.


Vielen Dank für eure Hilfe!

Tezcatlipoca
 
Du könntest zB alle Zahlen aus der DB auslesen und in einer Schleife immer überprüfen ob diese Zahl (die Du ausgelesen hast) vorkommt.
Wenn nicht, wird die Zahl in einem Array gespeichert oder sowas und dann in einem Dropdown ausgegeben.

$sql = mysql_query("SELECT zahl FROM tabelle");

zahl
1
3
4
5
6

$speicher = array();
$i=0;
while($row=mysql_fetch_assoc($sql))
{
if($i != $row['zahl'])
{
//ins array die Zahl aufnehmen
}
$i++;
}

das array dann mit foreach() in ein Pulldown laden :)
Ungetestet aber sollte passen denk ich .. so in der Art halt.

mfg nauti
 
Zuletzt bearbeitet:
Vielen Dank für die schnelle Antwort!
Ich werde es mal testen! Sieht aber soweit ich das beurteilen kann logisch aus :)

Also Thx
 
Vielleicht sind da ein paar Denkfehler drinnen aber das findet man dann beim Testen heraus!

Ciao, viel Spaß

nauti
 
naja, ich bin jetzt nach ner längeren Pause mal auf diese idee gekommen,
aber funktioniert auch nicht so wirklich.

die tabelle listen sieht in etwa so aus:
Code:
id_liste     id_user     user_rank
1                1             1
2                1             3
3                1            10


PHP:
<?PHP
$abfrage = "SELECT user_rank FROM listen WHERE ".$_SESSION["user_id"]." = id_user";
$ergebnis = mysql_query($abfrage);

$aviable = array(1,2,3,4,5,6,7,8,9,10);
$row = mysql_fetch_array($ergebnis);
$result = array_diff($aviable, $row);

foreach($result as $frei)
{echo $frei."<br>";}
?>

als ausgabe bekomme ich immer:
2
3
4
5
6
7
8
9
10

in $row wird nur 1,1 ausgelesen.

Ich glaube ich bin langsam wirklich zu verplant um ne abfrage hinzubekommen.
Wo liegt jetzt da wieder der fehler, ich wette der ist ganz dumm?
Naja, wäre für jeden tip dankbar!

Tezcatlipoca
 
Hallo, ich hab mich mal hingesetzt und das bissl getestet und bin auf das gekommen:

PHP:
$sql = "SELECT zahl FROM table;";
$sqlresult = mysql_query($sql) or die(mysql_error());

while($row = mysql_fetch_assoc($sqlresult))	//array erstellen mit vergebenen zahlen
{
	$sindSchonVergeben[] = $row['zahl'];
	echo $row['zahl']."<br>";					//vergebene zahlen ausgeben
}


for($i=1; $i<=25; $i++)	//prüft ob schon vergeben	
{
	if(isAvailable($i))
	{
		$sindNochErhaeltlich[] = $i;
	}
}


foreach($sindNochErhaeltlich as $dieZahlen)		//die zahlen die du willst!
{
	echo $dieZahlen."<br>";
}


function isAvailable($nr)	//function zum prüfen ob sie schon vergeben ist
{
	global $sindSchonVergeben;
	$available = true;

	for($i=0; $i<=count($sindSchonVergeben); $i++)
	{
		if($nr == $sindSchonVergeben[$i])
		{
			$available = false;
		}
	}
	return $available;
}

Ein bischen anpassen nach deinen Bedürfnissen und es sollte passen. Bei mir gehts :D

ciao nauti
 
Zuletzt bearbeitet:
Hallo,

es geht auch mit ein paar Zeilen per SQL:

select a.zahl
from tabelle a
where not exists
(select b.zahl
from tabelle v
where a.zahl+1 = b.zahl)

Diese Abfrage liefert immer die 1. Zahl einer Lücke.

Gruß, Movera
 
Hallo,

in SQL kann man Subquerys machen aber MySQL müssten wir zuerst wissen welche Version er nutzt.
Aber gute Lösung :-D

Ciao Nauti
 
Zurück