Hoi allen,
ben bezig om een veldje uniek te maken die een controle uitvoerd op de db of dit nummer inmiddels bestaat. In Mysql had ik het veld uniek willen maken maar het kan voorkomen dat dit veld leeg is. En je raad het al dat het meerdere keren voorkomt dat die leeg is dus dat gaat niet op en zou het via php moeten. Hoe ga ik dan verder vanuit mijn huidige script:


<?php
if(isset($_GET['id']))
{
    $query = "SELECT * FROM ft_form_4 WHERE submission_id = ".$_GET['id'];
	$sql = mysql_query ($query) or die (mysql_error());
}
echo "<table class=\"style6\" border=\"1\" width=\"750\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\">" ;
while ($row= mysql_fetch_array ($sql)){
$nr = $row['IPC'];
$hd = $row['Header'];
$pf = $row['Part_Family'];
$rt = $row['Request_Type'];
$prio = $row['Prio'];
$desc = $row['Description'];

}
echo "</table>";
//echo "$nr";
?>

</p>
<table width="447" border="0" align="center">
  <tr>
    <td width="86"><span class="style20">IPC</span></td>
    <td width="304"><span class="style11"><?php echo "$nr";?></span></td>
  </tr>
  <tr>
    <td><span class="style20">Part family </span></td>
    <td><span class="style11"><?php echo "$pf";?></span></td>
  </tr>
  <tr>
    <td><span class="style20">Request Type </span></td>
    <td><span class="style11"><?php echo "$rt";?></span></td>
  </tr>
  <tr>
    <td><span class="style20">Prio</span></td>
    <td><span class="style11"><?php echo "$prio";?></span></td>
  </tr>
  <tr>
    <td><span class="style20">Description</span></td>
    <td><span class="style11"><?php echo "$desc";?></span></td>
  </tr>
</table>
<table width="447" border="0" align="center">
  <tr>
    <td width="196"><input name="IPC" type="hidden" value="<?php echo "$nr";?>" /></td>
    <td colspan="2"><span class="style18"></span></td>
  </tr>
  <tr>
    <td><span class="style20">Header nummer </span></td>
    <td colspan="2"><input name="header" type="text" id="header"></td>
  </tr>
  <tr>
    <td><span class="style20">Parent PR aantal </span></td>
    <td colspan="2"><input name="parentpr" type="text" id="parentpr" size="5" maxlength="5"></td>
  </tr>
  <tr>
    <td><span class="style20">Child PR aantal </span></td>
    <td colspan="2"><input name="childpr" type="text" id="childpr" size="5" maxlength="5"></td>
  </tr>
  <tr>
    <td><span class="style18"><input type="hidden" name="Status" value="open"></span></td>
    <td colspan="2"><span class="style18"></span></td>
  </tr>
  <tr>
    <td><span class="style18"><input type="hidden" name="login" value="<?php echo $_SESSION['login']; ?>" /></span></td>
    <td width="80"><input name="Reset" type="reset" value="Reset"></td>
    <td width="110"><input name="Submit" type="submit" value="Submit"></td>
  </tr>

</table></form>


Het gaat om het veld Header. dit veld mag dus geen dubbele nummers bevatten. Wie kan mij helpen?
<?php
$query = "SELECT id FROM tabel WHERE header = '" . $header . "'";
$result = mysql_query($query);
$aantal = mysql_num_rows($result);
if ($aantal == 1)
{
echo 'Er is al iets met deze header';
}
?>
ben bezig om een veldje uniek te maken die een controle uitvoerd op de db of dit nummer inmiddels bestaat. In Mysql had ik het veld uniek willen maken maar het kan voorkomen dat dit veld leeg is.
Dat is tegenstrijdig! Een veld kan onmogelijk uniek of leeg zijn. 'leeg' kan slechts bij 1 record voorkomen en niet bij meerdere records, dan zou het niet meer uniek zijn.

Met een SELECT-query krijg je slechts een beeld van de situatie zoals die op het moment van de query van toepassing was. Dat zegt dus helemaal niets over de huidige situatie. De database kan tenslotte tientallen queries per seconde verwerken!

Mogelijke oplossingen:
- Zoek naar een mogelijkheid om altijd een unieke waarde in de kolom te zetten en geen NULL te gebruiken. Sterker nog, NOT NULL ligt meer voor de hand
- Maak een inschatting van de risico's op het gebruik van de SELECT-query. Wanneer je slechts enkele gebruikers hebt, is de kans dat het fout gaat niet zo heel erg groot. Zoek wel uit wat de gevolgen zijn van corrupte data, dat kan je in de toekomst een hoop werk schelen.
Ja, maar daarom is het ook een uitdaging. Het moet namelijk wel kunnen. Probleem is dat ik vanuit de DB geen uniek veld moet maken van 'header'. Omdat als de eerste log wordt aangemaakt altijd het header veld leeg is. Deze worden pas later toegevoegd onder een nummer. Dus als het ware zou het met php een controle moeten doen op het veld 'header' in de db en als deze bestaat dat ook vertellen. Maar moet ook geen insert worden of iets dergelijks want daar zorgt een ander pagina voor die hier achter hangt. Dat proces moet ik niet verdraaien.

Wie kan dit oplossen??
Niemand?

Reageren