Gå til innhold

Problemer med MySQL spørring i php kode *Løst*


Anbefalte innlegg

Hei

 

Jeg skal registrere noe i en MySQLdatabase. Jeg har gjort dette flere ganger før men da har jeg brukt en egen *.phpside for å registrere dette. Tenkte jeg ville prøve å få til dette på en enkelt side denne gangen. (bare noe småtteri jeg skal gjøre på jobb). Kunne vært greit å finne ut at vette til senere også.

 

Anyways.. her er problemet:

 

 
if($addit==1) {
 mysql_connect(localhost,$dbuser,$dbpassword);
 mysql_select_db(NOS_DB) or die ("Fikk ikke valgt database. Vennligst meld problemet til John Viggo</a>");
 $query="INSERT INTO problempcer VALUES('','$search_code','$modell','$avdeling','$lokasjon','$etasje','$romnummer','$problemet')";
 mysql_query($query);
 mysql_close();
}

 

er denne jeg sliter med. Om jeg har med den ifgreia kommer siden bare opp blank, om jeg fjerner den vises siden ok (men da fungerer den da altså ikke som jeg vil).

 

"If" i mitt tilfelle skal sjekke om $addit er lik 1 og hvis den er det skal diverse data settes inn i databasen. $addit blir 1 når jeg trykker på "Ok"knappen etter at jeg har skrevet inn det jeg skal. Hva gjøre jeg galt her.. er det en bedre måte jeg burde gjort det på?

 

Håper dere forstår spørsmålet mitt.. ble veldig rotete dette :)

 

Her er hele konden:

 

<html>
<head>
 <title>Spesielle Pc'er</title>
</head>

<?PHP

$search_code=$_POST['search_code'];
$modell=$_POST['modell'];
$avdeling=$_POST['avdeling'];
$lokasjon=$_POST['lokasjon'];
$etasje=$_POST['lokasjon'];
$romnummer=$_POST['romnummer'];
$problemet=$_POST['problemet'];
$addit=$_GET['addit'];
if(!$addit) {
 $addit=0;
}


if($addit==1) {
 mysql_connect(localhost,$dbuser,$dbpassword);
 mysql_select_db(NOS_DB) or die ("Fikk ikke valgt database. Vennligst meld problemet til <a href="mailto:[email protected]">John Viggo</a>");
 $query="INSERT INTO problempcer VALUES('','$search_code','$modell','$avdeling','$lokasjon','$etasje','$romnummer','$problemet')";
 mysql_query($query);
 mysql_close();
}

<body>
 <table width="90%" border="1" cellpadding="0" cellspacing="1">
  <tr>
   <td>Search Code:</td>
   <td>Modell:</td>
   <td>Avdeling:</td>
   <td>Lokasjon:</td>
   <td>Etasje:</td>
   <td>Romnummer:</td>
   <td>Problemet:</td>
  </tr>
  <tr>
   <td valign="top"><form method="post" action="index.php?addit=1"><input type="text" name="search_code" maxlength="10" STYLE="width: 100%"></td>
   <td valign="top"><input type="text" name="modell" maxlength="20" STYLE="width: 100%"></td>
   <td valign="top"><input type="text" name="avdeling" maxlength="30" STYLE="width: 100%"></td>
   <td valign="top"><input type="text" name="lokasjon" maxlength="30" STYLE="width: 100%"></td>
   <td valign="top"><input type="text" name="etasje" maxlength="10" STYLE="width: 100%"></td>
   <td valign="top"><input type="text" name="romnummer" maxlength="30" STYLE="width: 100%"></td>
   <td valign="top"><textarea name="problemet" cols="30" rows="1"></textarea><input type="submit" name="Ok" value="Ok"></td>
  </tr>
  
  <?PHP
  
  mysql_connect(localhost,$dbuser,$dbpassword);
  mysql_select_db(NOS_DB) or die ("Fikk ikke valgt database. Vennligst meld problemet til John Viggo");
  $query="select * from problempcer";
  $result=mysql_query($query);
  $num=mysql_numrows($result);

  $i=0;
  
  while($i < $num) {

   $search_code=mysql_result($result,$i,"search_code");
   $modell=mysql_result($result,$i,"modell");
   $avdeling=mysql_result($result,$i,"avdeling");
   $lokasjon=mysql_result($result,$i,"lokasjon");
   $etasje=mysql_result($result,$i,"etasje");
   $romnummer=mysql_result($result,$i,"romnummer");
   $problemet=mysql_result($result,$i,"problem");
   
   echo "<tr>";
   echo "<td>$search_code</td>";
   echo "<td>$modell</td>";
   echo "<td>$avdeling</td>";
   echo "<td>$lokasjon</td>";
   echo "<td>$etasje</td>";
   echo "<td>$romnummer</td>";
   echo "<td>$problemet</td>";
   echo "</tr>";

   $i++;

  }
  
  mysql_close();
  
  ?>
  
 </table>
</body>

</html>

 

 

ueland says:

#3: Unødvendig quoting samt dårlig bruk av emnefeltet blir sett på som upassende, og kan bli sensurert eller endret av moderatorer.

:wee:

 

Oops... Skal skjerpe meg på neste post ;)

Endret av JV
Lenke til kommentar
Videoannonse
Annonse

Fra php.net:

Description

bool mysql_select_db ( string database_name [, resource link_identifier])

Så du må altså ha en streng som har databasenavnet:

mysql_select_db("NOS_DB") or die ("Fikk ikke valgt database. Vennligst meld problemet til John Viggo</a>");

ellers så kan det være greit å legge til mysql_error() i die'en din, kanskje, og også etter mysql_query:

mysql_query($query) or die("$query<br>".mysql_error());

f.eks.

Endret av kakkle
Lenke til kommentar

mysql_select_db(NOS_DB) or die ("Fikk ikke valgt database. Vennligst meld problemet til <a href="mailto:[email protected]">John Viggo</a>");

Se på bruken din av " her. Du kan ikke bruke " i a href =. "....". Bruk enkelfnutt istedet, eller escape den med \"

Strengen i det tilfellet ditt blir jo bare :

"Fikk ikke valgt database. Vennligst meld problemet til <a href="

Lenke til kommentar
Kjekk sak:

if($addit == 1)

er ikke helt lik:

if($addit == "1")

Skal funke bedre med den nederste.

Lær deg php ordentlig før du kommer med uttalelser. Hvis noen av de to kodeeksempla du kom med skulle brukes, ville den øverste være rett. Dessuten kan $addit == "1" skrives som $addit == '1' hvis du skulle gjort det kjappere. Men altså

$addit == 1

er rett

Lenke til kommentar

Vel, jeg bare baserer det på egne erfaringer jeg selv har erfart når jeg har bæsja på leggen av samme årsak, så ikke kom her og si at jeg må lære meg php når jeg selv har opplevd det som ett problem.

 

edit:

1 = int && true

'1' = string

"1" = string

Endret av LoS
Lenke til kommentar

Hvis det er snakk om å sjekke hvis en variabel er true eller ikke så er det ikke noe poeng å bruke 1, da brukes true og false. Dersom det av en eller annen grunn er fordelaktig å bruke 1 i et bestemt script så er det lurt å slå opp (bool) for å sikre at variabelen oppfører seg riktig.

 

Dersom det der i mot er tallet som skal sjekkes så er det et par ting å vurdere. Alt som sendes fra et skjema blir strings, og i de situasjonene må det passes på at koden skrives korrekt. Ellers er det viktig hvilken måte variabelen blir lagret på, med eller uten ".

 

All den tid det kun er snakk om å vurdere hvis en variabel er lik 1 (en) så skal det sjekkes med == 1, eventuelt === 1 - og koden må skrives korrekt tidligere i forhold til det.

 

Ved store spørringer så er det STOR forskjell på:

WHERE felt = '1'

og

WHERE felt = 1

For dersom det er et tall felt (int) så må MySQL konvertere tallet for alle feltene det sjekkes mot, eller motsatt dersom det er et tekst felt og man sjekker = 1.

Lenke til kommentar

Takk for svarene, men jeg får det fremdeles ikke til å fungere. Har gått over "ene og fixet de med \ (visste egentlig det fra før, men er bare for lenge siden jeg prøvde det sist). Utrolig irriterende at jeg ikke kan får en feilmelding en gang.. det hadde hjulpet... helt blank side er det eneste

 

Jeg har også endret litt på $addit=="1" på forskjellige måter (med og uten " og med og uten tall)...

Endret av JV
Lenke til kommentar

Funker nå gitt... jeg som rota litt, men det var nok denne som rotet det til:

 

CODE 

 

mysql_select_db(NOS_DB) or die ("Fikk ikke valgt database. Vennligst meld problemet til <a href="mailto:[email protected]">John Viggo</a>");

 

 

 

Se på bruken din av " her. Du kan ikke bruke " i a href =. "....". Bruk enkelfnutt istedet, eller escape den med \"

Strengen i det tilfellet ditt blir jo bare :

"Fikk ikke valgt database. Vennligst meld problemet til <a href="

 

Tusen takk for all hjelp :thumbup:

Lenke til kommentar
Vel, jeg bare baserer det på egne erfaringer jeg selv har erfart når jeg har bæsja på leggen av samme årsak, så ikke kom her og si at jeg må lære meg php når jeg selv har opplevd det som ett problem.

Hvis du ikke kjenner til hvordan typer caste's ved evaluering så bør du vel være forsiktig med løse påstander som "dette skal funke bedre"?

 

litt snacks:

 

1 == "1"; # TRUE

1 == " 1"; # TRUE

1 == "0001"; #TRUE

"1" == "001"; # TRUE

'01' == " 1"; # TRUE

"01 " == 1; #TRUE, men:

"01" == "1 "; # FALSE

Lenke til kommentar

Altså, jeg har ikke gått noe spesielt med kurs innen php, så det meste er selvlært. Når jeg da, av en eller annen merkelig grunn som jeg ikke forstod helt selv, løser ett av mine egne problemer ved å bruke den løsningen jeg skrev ovenfor så tenker jeg at det kan jo selvfølgelig skje andre og. I tillegg mener jeg ikke: "gjør det sånn!", jeg sier mer; "du kan jo prøve å gjøre det sånn". Det er selvfølgelig mulig at dere ikke har vært borti samme greia før, noe det ikke virker som. Jeg har gjort på akkurat samme måte i ett eget script jeg har skrevet, og der ble det feil når jeg brukte 1 og ikke "1".

Endret av LoS
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...