Avatar billede dm-bm Nybegynder
19. september 2003 - 23:04 Der er 9 kommentarer og
1 løsning

Column 'name' cannot be null

Jeg har lavet et login system med php og mysql. Et ganske enkelt system hvor man kan oprette ny bruger, logge ind osv. Det virker ganske fint, dog med en enkelt undtagelse. Hvis jeg ikke udfylder noget i min opret formular, og sender, kommer denne melding "Column 'name' cannot be null" i et nyt tomt vindue.
Jeg vil gerne have den til at skifte til en side efter eget valg eller blive på siden, hvis folk evt. kommer til at sende en tom formular.

Hvor i scriptet skal det evt. tilføjes osv...

Jeg har søgt en del rundt på eksperten og synes ikke at kunne finde noget relaterende.

Er n00b denne afdeling af verden :oD

DM
Avatar billede sukos Juniormester
19. september 2003 - 23:06 #1
Og lidt kode?
Avatar billede dm-bm Nybegynder
19. september 2003 - 23:08 #2
<?php require_once('Connections/denne.php'); ?>
<?php
// *** Redirect if username exists
$MM_flag="MM_insert";
if (isset($_POST[$MM_flag])) {
  $MM_dupKeyRedirect="exists.php";
  $loginUsername = $_POST['name'];
  $LoginRS__query = "SELECT name FROM user_pwd WHERE name='" . $loginUsername . "'";
  mysql_select_db($database_denne, $denne);
  $LoginRS=mysql_query($LoginRS__query, $denne) or die(mysql_error());
  $loginFoundUser = mysql_num_rows($LoginRS);

  //if there is a row in the database, the username was found - can not add the requested username
  if($loginFoundUser){
    $MM_qsChar = "?";
    //append the username to the redirect page
    if (substr_count($MM_dupKeyRedirect,"?") >=1) $MM_qsChar = "&";
    $MM_dupKeyRedirect = $MM_dupKeyRedirect . $MM_qsChar ."requsername=".$loginUsername;
    header ("Location: $MM_dupKeyRedirect");
    exit;
  }
}
?>
<?php require_once('Connections/denne.php'); ?>
<?php require_once('Connections/denne.php'); ?>
<?php
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
  $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;   
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form2")) {
  $insertSQL = sprintf("INSERT INTO user_pwd (name, pass) VALUES (%s, %s)",
                      GetSQLValueString($_POST['name'], "text"),
                      GetSQLValueString($_POST['pass'], "text"));

  mysql_select_db($database_denne, $denne);
  $Result1 = mysql_query($insertSQL, $denne) or die(mysql_error());

  $insertGoTo = "registerok.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $insertGoTo));
}

$maxRows_Recordset1 = 10;
$pageNum_Recordset1 = 0;
if (isset($_GET['pageNum_Recordset1'])) {
  $pageNum_Recordset1 = $_GET['pageNum_Recordset1'];
}
$startRow_Recordset1 = $pageNum_Recordset1 * $maxRows_Recordset1;

mysql_select_db($database_denne, $denne);
$query_Recordset1 = "SELECT name, pass FROM user_pwd";
$query_limit_Recordset1 = sprintf("%s LIMIT %d, %d", $query_Recordset1, $startRow_Recordset1, $maxRows_Recordset1);
$Recordset1 = mysql_query($query_limit_Recordset1, $denne) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);

if (isset($_GET['totalRows_Recordset1'])) {
  $totalRows_Recordset1 = $_GET['totalRows_Recordset1'];
} else {
  $all_Recordset1 = mysql_query($query_Recordset1);
  $totalRows_Recordset1 = mysql_num_rows($all_Recordset1);
}
$totalPages_Recordset1 = ceil($totalRows_Recordset1/$maxRows_Recordset1)-1;
?>
Avatar billede taskmgr Nybegynder
19. september 2003 - 23:08 #3
Det kommer jo an på hvordan din kode er bygget op, men normalt ville man tjekke med en if-sætning. F.eks.:

if($_POST["input_felt"]==""){
  //input feltet er tomt
  echo "Du skal skrive noget i feltet.";
}else{
  //fortsæt med oprettelsen
}
Avatar billede dm-bm Nybegynder
19. september 2003 - 23:14 #4
Jeg har prøvet at se mig ud af koden, men bliver pludselig blind på begge øjne og hjernen går i dvale :P

dm
Avatar billede dm-bm Nybegynder
19. september 2003 - 23:18 #5
taskmgr >> Hvor kunne du foreslå mig at smide den kode ind i ovenstående kode hvis det ellers virker sammen?
Avatar billede erikjacobsen Ekspert
19. september 2003 - 23:37 #6
Hvis navnefeltet i formen er tom, vil din GetSQLValueString lave det til
en NULL-værdi. Er det rimeligt fornuftigt for dig kan du definere feltet
i tabellen i databasen til at tillade NULL-værdien ved at fjerne "NOT NULL"
i den tilhørende CREATE-sætning (eller hvordan du nu laver den).
Avatar billede dm-bm Nybegynder
20. september 2003 - 02:50 #7
erikjacobsen >> Det virkede godt nok så langt, at den ikke skifter over til den side med "Column 'name' cannot be null", men til gengæld skifter den til en side jeg har lavet, som brugeren skal komme til når de har oprettet en ny bruger. Det dur jo heller ikke helt :) (En side hvorpå der står "Brugeren er oprettet. Du kan nu logge ind")
Jeg ville gerne, om jeg kunne få den til at blive på den samme side, når man trykker på submit knappen.
Avatar billede erikjacobsen Ekspert
20. september 2003 - 07:57 #8
En hurtig løsning vil være at checke det i JavaScript - så kan man både
blive på samme side, og undgå at rette i koden ovenfor. Der er enkelte,
der ikke kører JavaScript, men de får så den underlige "null" fejl. Er
det acceptabelt?
Avatar billede dm-bm Nybegynder
20. september 2003 - 12:02 #9
For mig er det sådan set ligegyldigt hvordan det skal komme til at virke, bare man bliver på samme side, når man sender en tom formular. Kan et javascript gøre det er det fint. Men ved du så noget om, hvad sådan et script skal indeholde for ikke helt at spærre adgangen til næste siden?
Jeg accepterer efter som det ikke ligner at andre kan svare på hvordan i php. Så smid et svar uanset hvad din kommentar måtte være :)
dm
Avatar billede dm-bm Nybegynder
26. november 2003 - 03:59 #10
Lukket!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester