ik zoek een scriptje dat zegmaar een melding geeft als een rij ontbreekt dus,,

in de tabel staan de volgende ID's
4
5
6
7
8
9

en het script moet een melding geven als er een verwijdert is dus als er bv nog maar,,
4
5
7
8
9
staat nu is de 6 weg

is dit mogelijk??
zelf d8 ik van ze allenmaal laten verschijnen en steeds een getal hoger maken en als dat dan verschilt een melding geven
wat je kan doen:
<?php
$sql = "SELECT * FROM table ORDER BY id";
if(!$query = mysql_query($sql)) {
echo trigger_error(mysql_error());
exit();
}
$number = 0;
$ontbrekende_nummers = array();
while($row = mysql_fetch_assoc($query)) {
if($row['id'] - $number != 1) {
array_push($ontbrekende_nummers, $row['id']);
}
$number = $row['id'];
}

echo 'De volgende nummers ontbreken:<br />'.implode('<br />&nbsp;&nbsp;&nbsp;&nbsp; - ', $ontbrekende_nummers);
?>

ofzo
Die werkt dank U:),,maar ik weet niet hoe t moet maar kan hij zeg maar ook zeggen als er wat ontbreekt dus niet de nummers opnoemen maar gewoon zeggen oke of er mist wat??
Opmerking: een id heeft geen enkele waarde! hecht daar dan ook geen enkele waarde aan, daarmee zou je de grootste fouten kunnen maken.

Een id heeft slechts 1 doel:
Een uniek gegeven creeeren waarmee je eenvoudig het desbetreffende record kunt terugvinden.

id 1 is dus net zo belangrijk als id 4672384. Dit zijn 2 unieke records die je zo kunt opvragen. Dat de getallen niet oplopend zijn, so what? Het heeft 10x niks met sorteren, ouderdom of wat dan ook te maken.

Kortom: Er bestaan geen ontbrekende nummers.
w8 ff uitleggen hier heeft dat dus WEL een beetje belang ik ga alles wat erop mijn site Door de admins gedaan worden en in een tabel zetten en als iemand daar er eentje uit verwijdert moet het script een waarschuwing geven
hmm
k snap niet waarom je dat zou willen eerlijk gezegd..
wat maakt het uit of ik nou nummer 2 of 3 ben en of er wel 2 of 3 bestaat of niet.
volgens mij kan je het beste bij iedere actie dan gewoon even een simpele insert query erbij stoppen want wat heb je der aan van dat je script zegt..
O NEE ER ONTRBREEKT EEN CIJFER IK WEET NIET WAT TE DOEN..
waarom laat je het niet meteen door PHP oplossen als je nu toch al bezig bent??
ten eerste het is makkelijker..
ten tweede sneller..
en ten derde veiliger..
ooit een computer een overschrijf fout zien maken??
ik heb nog nooit een typefout ontdekt met een query uitvoeren (wat door de computer komt)
jesper schreef op 13.04.2007 18:49
w8 ff uitleggen hier heeft dat dus WEL een beetje belang ik ga alles wat erop mijn site Door de admins gedaan worden en in een tabel zetten en als iemand daar er eentje uit verwijdert moet het script een waarschuwing geven
Nee, je geeft een waarschuwing zodra iemand een DELETE gaat uitvoeren. Daarvoor hoef je echt niet te kijken of e.e.a. nog oplopend is. Dat zou namelijk inhouden dat je tot in lengte van dagen waarschuwingen krijgt op id's die al lang en breed zijn verwijderd.

Jij kent dus een betekenis toe aan het ontbreken van de volgorde en dat is fout. Een id heeft geen betekenis, het is uniek en daarmee klaar.

Ken een betekenis toe aan de actie 'delete' en klaar ben je.
@frank
dit script staat los van een script waar DELETE in voorkomt deze word door mij de beheerder uitgevoert om te kijken of alle rijen er nog zijn zo niet mist er wil ik een melding


EDIT
het maakt niet meer uit wie gelijk had dat boeit me ook niet maar het werkt nu:)
<?
$sql = "SELECT * FROM gedaan ORDER BY id";
if(!$query = mysql_query($sql)) {
echo trigger_error(mysql_error());
exit();
}
$mis = 0;
$number = 1;
while($row = mysql_fetch_assoc($query)) {
if($row['id'] == $number ) {
$number += 1;
}else{
$mis = 1;
}
}
if($mis == 1){
echo"er mis er een";
}
?>
Sorry dat ik zeg: helaas, weer zo'n eigenwijze draak die zonder argumenten denkt dat ie het beter weet...

Persoonlijke mening: dom script dat iets doet wat nergens voor nodig is.

Maar goed, je mag het natuurlijk helemaal zelf weten.
Maakt niet uit maar jij weet niet precies waarvoor ik het ga gebruiken..als ik het fatsoenlijk uitleg begrijp je me denk ik wel ;)
Denk het niet! Ga jouw scriptje maar eens uitvoeren op een simpel tabelletje met een miljoen records. Kost véél te veel tijd, helemaal wanneer je bedenkt dat het niet nodig is.

Er is geen verband tussen id 1 en id 2 of id 3. Er kan dus onmogelijk eentje missen, het is dus ook niet nodig om te zoeken naar id's die zouden missen. Ze ontbreken namelijk niet.

Reageren