Gå til innhold

[Løst] Noe hjelp til php


Anbefalte innlegg

jeg trenger noe hjelp med php if else . .

 

jeg trenger litt hjelp til og lage til slik at man kan legge en tekst som 10001 i en html form og da finner man det i en DB , vist han er merket inne så skal han oppdaterers med merket ute .. og motsatt man er ute og skal oppdateres med inne ..

noen som kan hjelpe meg med det ?

Lenke til kommentar
Videoannonse
Annonse

Dette tror jeg nok du klarer selv :) igrunn bare 5 deler.

 

Les fra $_POST

Hent data fra databasen ( SELECT * FROM xxxxx WHERE xxxxxx )

Sjekk om han er registert som inne eller ute

oppdatert databasen med inne eller ute

gi tilbakemelding til brukeren

 

Start på den første delen, og spør hvis du står fast så vil jeg mer en gjerne hjelp deg :)

Lenke til kommentar

ja den biten har jeg . og klare og hente info fra den . men det er dette med hvordan jeg skal få den if else funksjon til og virke . jeg har prøvd og lese litt på php.net . men vart ikke så smart av det .

 

jeg har den update funksjonen til mysql .

$db="my db";
$link = mysql_connect('localhost', 'root', 'root');
if (! $link)
die("Couldn't connect to MySQL");
mysql_select_db($db , $link)
or die("Couldn't open $db: ".mysql_error());
mysql_query(" UPDATE my_table SET name='$name' , name2='$name2' , name3='$name' WHERE code='$code'");
echo "Record Updated";
mysql_close($link);
?>

 

men jeg trenger litt hjelp og kjøre denne sammen med if inne update to ute else if ute update ute .

Lenke til kommentar

Det første du må gjøre er å hente ut data fra databasen.

Det kan du gjøre slik:

$qry = mysql_query(SELECT * FROM my_table WHERE code = mysql_real_escape_string($_POST['code']);
$get = mysql_fetch_assoc($qry);

nå kan du foreta en php if/else slik:

if ($get['field']=='inne'){
    $to = 'ute';
} else {
    $to = 'inne';
}

$upd = mysql_query('UPDATE my_table SET target = '.mysql_real_escape_string($to).' WHERE code = '.mysql_real_escape_string($_POST['code']));

OBS! Nå er jeg litt rusten på mysql da det er er en stund siden jeg har benyttet det, så dobbeltsjekk at jeg har skrevet riktig. Jeg vil anbefale deg å se nærmere på PDO eller evt. mysqli i den forbindelse.

 

Men som du ser, så henter jeg først ut data fra databasen.

Videre sjekker jeg dataen med php.if/else for å avgjøre hvilken ny verdi som skal sette ("inne" eller "ute")

Til slutt, når jeg vet hvilken verdi som skal benyttes, oppdaterer jeg tabellen basert på angitt referanse.

Endret av Yawa
Lenke til kommentar

Ok, punkt 1: Ikke bruk mysql_*
Disse funksjonene er utdaterte, usikre, og vil bli fjernet fra fremtidige versjoner av PHP. Om du ønsker en veldig enkel overgang til et litt bedre system kan du kikke på mysqli_*
Om du ønsker å lære deg det som i dag ansees for å være det beste og sikreste, kikk på "prepared statements" gjennom enten mysqli eller PDO. Personlig anbefaler jeg PDO, fordi den gir noe ekstra funksjonalitet, og fordi du da ikke trenger å lære deg nye funksjoner om du seinere skal utvikle mot en annen type database enn MySQL.

 

Punkt 2: Benytt deg av krøllparanteser og innrykk

if (! $link) {
    die("Error");
}

Dette gjør det mye enklere å lese koden.

 

Når det gjelder selve problemet ser det ut til at du prøver å gjøre alt sammen i én eneste SQL-setning, om du ikke har noe særlig erfaring med verken PHP eller SQL vil jeg fraråde deg å gjøre det på den måten først. Begynn heller med noe slik: Kjør en spørring (SELECT) for å hente ut informasjon om person med den gitte koden. Sjekk så denne informasjonen for å se om personen er inne eller ute, hvis du for eksempel har en boolean i databasen for å håndtere dette sjekker du ganske enkelt om denne er true eller false, og setter inn det motsatte i databasen med en UPDATE.

Lenke til kommentar

ok ..

jeg har sett denne opp noe slikt nå .

<? 

$con = mysql_connect('localhost','root','root');

if (!$con){
        die ("Kunne ikke koble til databasen" . mysql_error());
        }
        
mysql_select_db('hlan', $con);

$qry = mysql_query(SELECT * FROM ticket WHERE id = mysql_real_escape_string($_POST['code']);
$get = mysql_fetch_assoc($qry);

if ($get['status']=='inne'){
    $to = 'ute';
    echo "Record ute";
} else {
    $to = 'inne';
    echo "Record inne";
}

$upd = mysql_query('UPDATE ticket SET status = '.mysql_real_escape_string($to).' WHERE id = '.mysql_real_escape_string($_POST['code']));

?>

DB tabellen mine ser slikt ut

s_fulltext.png id name nick email klan combo plass status b_edit.png b_drop.png 10001 name test [email protected] crew TrackMania A1 Inne

men jeg får ikke denne koden til og virke ..

Lenke til kommentar

En enklere måte å skrive connectsetningen på:

connect.php
<?php 
    $connect = mysqli_connect('localhost', 'username', 'password', 'database') or die (mysqli_error());
    $fetch='mysqli_fetch_assoc';
    $query='mysqli_query';
    $escape='mysqli_real_escape_string';
?>
ettellerannet.php
<?php
        require('connect.php');	
        $code=$escape($_POST['code']);
	$query_status = $query($connect, "SELECT * FROM ticket WHERE id = '$code'");
	while($row=$fetch($query_status)) {
		if($row['status'] == 'inne') {
			$status='ute';
		} 
		else if ($row['status'] == 'ute') {
			$status='inne';
		}
	}
	$query($connect, "UPDATE ticket SET status='$status' WHERE id='$code'") or die("Spørring feilet: <br />".mysqli_error());
?>
<p>Brukeren er <?php echo $status; ?></p>

Utestet, men tror det skal virke.

 

Jeg vet ikke hvor "code" kommer fra, men jeg tipper at du ikke trenger å escape den.

Aldri bruk short_tag, <?. Bruk alltid <?php når du starter php kode.

Anbefaler deg også å legge mysqli_connect i en egen fil som du bare kan inkludere på hver side der du trenger den, istedenfor å skrive inn setningen på alle sider. Jeg pleier også å lagre mysqli kommandoene som variabler, så jeg sparer meg selv for mye unødvendig skriving av lange strenger som mysqli_real_escape_string etc.

 

Sånn ellers, hva er det du egentlig skal med scriptet? Jeg har litt vanskelig for å forstå hva du egentlig er ute etter her. Er poenget at du selv skal kunne sette statusen til brukerne, via en form? Eller skal statusen oppdateres dersom de f.eks logger seg inn?

Endret av Feh
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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...