Avatar billede drockles Nybegynder
19. januar 2006 - 11:43 Der er 9 kommentarer og
1 løsning

1 gang insert 2 gang update

hej eksperter

jeg har nedenstående script som bruges på en side hvor medlemmerne af et fodboldhold kan oprette og redegiere deres profil.

jeg vil gerne have en funktion der tjekker om der er noget i tabellen 'andreas' og hvis der ikke er kører funktionen

    $sql = "insert into andreas(ip, tid, profilnavn, navn, alder, height, weight, email, shirtno, position, idol, klub, favchang, status, unger, personlig, chang, minde, ord, besked, user, pass)
        values('$ip',now(), '$profilnavn', '$navn', '$alder', '$height', '$weight', '$email', '$shirtno', '$position', '$idol', '$klub', '$favchang', '$status', '$unger', '$personlig', '$chang',

og hvis der er:

    $sql = "UPDATE andreas SET ip = '$ip', tid = now(), profilnavn = '$profilnavn', navn = '$navn', alder = '$alder', height = '$height', weight = '$weight', email = '$email', shirtno = '$shirtno', position = '$position', idol = '$idol', klub = '$klub', favchang = '$favchang', status = '$status', unger = '$unger', personlig = '$personlig', chang = '$chang', minde = '$minde', ord = '$ord', user = '$user', pass = '$pass', besked = '$besked'";
Avatar billede drockles Nybegynder
19. januar 2006 - 11:43 #1
og koden:

<?php

require("./gbog-ting/mysql-funktioner.php");
require("./gbog-ting/design-funktioner.php");
require("./gbog-ting/indstillinger.php");

/*
* Foerst napper vi variablerne fra miljoet.
*/

if(is_array($HTTP_POST_VARS)) {
  $profilnavn = $HTTP_POST_VARS['profilnavn'];
  $navn = $HTTP_POST_VARS['navn'];
  $alder = $HTTP_POST_VARS['alder'];
  $height = $HTTP_POST_VARS['height'];
  $weight = $HTTP_POST_VARS['weight'];
  $email = $HTTP_POST_VARS['email'];
  $shirtno = $HTTP_POST_VARS['shirtno'];
  $position = $HTTP_POST_VARS['position'];
  $idol = $HTTP_POST_VARS['idol'];
  $klub = $HTTP_POST_VARS['klub'];
  $favchang = $HTTP_POST_VARS['favchang'];
  $status = $HTTP_POST_VARS['status'];
  $unger = $HTTP_POST_VARS['unger'];
  $personlig = $HTTP_POST_VARS['personlig'];
  $chang = $HTTP_POST_VARS['chang'];
  $minde = $HTTP_POST_VARS['minde'];
  $ord = $HTTP_POST_VARS['ord']; 
  $besked = $HTTP_POST_VARS['besked'];
  $user = $HTTP_POST_VARS['user'];
  $pass = $HTTP_POST_VARS['pass'];
 
} elseif (is_array($_POST)) {
  $profilnavn = $_POST['profilnavn'];
  $navn = $_POST['navn'];
  $alder = $_POST['alder'];
  $height = $_POST['height'];
  $weight = $_POST['weight'];
  $email = $_POST['email'];
  $shirtno = $_POST['shirtno'];
  $position = $_POST['position'];
  $idol = $_POST['idol'];
  $klub = $_POST['klub'];
  $favchang = $_POST['favchang'];
  $status = $_POST['status'];
  $unger = $_POST['unger'];
  $personlig = $_POST['personlig'];
  $chang = $_POST['chang'];
  $minde = $_POST['minde'];
  $ord = $_POST['ord']; 
  $besked = $_POST['besked'];
  $user = $_POST['user'];
  $pass = $_POST['pass'];
  }


/*
* Her er en simpel funktion der spytter en fejlmelding ud.
* Den bruger vi senere, når vi checker, at folk har skrevet noget i formularen.
*/

function gbog_fejl($fejl) {

    $generel_tekst = "<p>V&aelig;r venlig at g&aring; tilbage og ret til.</p>";

    $fejlmelding = "<ul>";

    for($i=0;$i<count($fejl);$i++) {
        $fejlmelding .= "<li>". $fejl[$i];
    }

    $fejlmelding .= "</ul>";

    echo top("Fejl") . "Fejl:" . $fejlmelding . $generel_tekst . bund();
    exit;

}

/*
* Denne funktion skriver i gæstebogen - altså i databasen.
* Bemærk, at vi ikke bruger PHP til at indsætte tiden, men
* bruger MySQLs indbyggede funktion now().
*/

function skriv_i_gbog($profilnavn, $navn, $alder, $height, $weight, $email, $shirtno, $position, $idol, $klub, $favchang, $status, $unger, $personlig, $chang, $minde, $ord, $besked, $user, $pass) {
   
    $ip = getenv('REMOTE_ADDR');

    $sql = "UPDATE andreas SET ip = '$ip', tid = now(), profilnavn = '$profilnavn', navn = '$navn', alder = '$alder', height = '$height', weight = '$weight', email = '$email', shirtno = '$shirtno', position = '$position', idol = '$idol', klub = '$klub', favchang = '$favchang', status = '$status', unger = '$unger', personlig = '$personlig', chang = '$chang', minde = '$minde', ord = '$ord', user = '$user', pass = '$pass', besked = '$besked'";


    aabn_forbindelse_og_vaelgdb();
    sql_spoerg($sql);
    luk_forbindelse();

}

/*
* Vi laver lidt simpelt fejlcheckeri og ser, om der overhovedet
* er skrevet noget. Hvis ikke, bruger vi fejlfunktionen til at brokke os.
* Fejlfunktionen slutter med exit, der sørger for, at PHP stopper.
*/


if(count($fejl) > 0) {
    gbog_fejl($fejl);
}

/*
* Hvis vi er nået hertil, så står der i det mindste et eller andet i felterne og vi
* knalder det i databasen med funktionen skriv_i_gbog().
* Vi escaper alle fyfy-tegn med addslashes(). Når vi senere præsenterer indholdet
* af gBogen bruger vi stripslashes() til at "afkode".
*
* Alt dette besvær er til for at folk ikke skal snige ondsindede SQL-kommandoer
* ind i deres indlæg. Nyere versioner af PHP gør alt dette automatisk,
* men vi kan godt li' at være på den sikre side.
*/

skriv_i_gbog(addslashes($profilnavn),addslashes($navn),addslashes($alder),addslashes($height),addslashes($weight),addslashes($email),addslashes($shirtno),addslashes($position),addslashes($idol),addslashes($klub),addslashes($favchang),addslashes($status),addslashes($unger),addslashes($personlig),addslashes($chang),addslashes($minde),addslashes($ord),addslashes($besked),addslashes($user),addslashes($pass));

/*
* Så er skidtet banket i databasen og vi sender folk videre til selve gBogen
* hvor de kan se deres eget indlæg.
*/

header("Location: andreas.php");

/*
* Skal der sendes email til administratoren?
*
* Bemærk, at vi godt kan gøre dette selv om folk er sendt videre til gBogen.
* Der er ingen grund til at gæsterne skal vente på, at der bliver sendt
* post - derfor kommer det først allersidst.
*/

if($email_p == "t") {

  mail($admin_email, "Der er skrevet i en profil!", $navn);

}

?>
Avatar billede johan.o Nybegynder
19. januar 2006 - 15:43 #2
Øhm, jeg er ikke hundrede på om det er hvad du mener....men....

Det lader til at du har en tabel der hedder 'andreas' og i denne tabel ligger alle de forskellige spillere. Problemet er så at du enten vil 'opdaterer' en spiller hvis han er der i forvejen, eller 'indsætte' samme spiller hvis ikke han er oprettet i forvejen.

$u_sql="UPDATE andreas SET ...bla bla... WHERE profilnavn = '".$profilnavn."'";
$q=mysql_query($u_sql);
if(mysql_affected_rows($q)==0) {
$i_sql="INSERT INTO andreas (..bla bla..) values(..bla bla..)";
$q=mysql_query($i_sql); }

Forudsætter at det er profilnavn der er dit unikke felt i tabellen.

Lad endelig høre hvis jeg misforstod :)

Mvh. Johan
Avatar billede drockles Nybegynder
19. januar 2006 - 17:22 #3
nja... hver spiller har en tabel for sig.. så "spilleren" er sådan set oprettet. det jeg vil er bare at scriptet tjekker om der er data i tabellen og hvis der er: opdaterer tabellen. Hvis der IKKE er: skal dataene insertes.
jeg kan forestille mig at det "bare" er noget med 'if'-sætninger
Avatar billede johan.o Nybegynder
19. januar 2006 - 19:24 #4
$q=mysql_query("SELECT * FROM tabel");
if(mysql_num_rows($q)==0) {
INSERT }
else {
UPDATE }

Måske ?

Mvh. Johan
Avatar billede drockles Nybegynder
19. januar 2006 - 20:56 #5
og så sætte de linierne ind der eller?
Avatar billede johan.o Nybegynder
19. januar 2006 - 21:04 #6
Forklaring :

$q=mysql_query("SELECT * FROM tabel"); // Henter alle rækker fra tabellen 'tabel'
if(mysql_num_rows($q)==0) { // Hvis antallet af hentede rækker er = 0
INSERT } // så skal der indsættes en ny række (Så her skal være noget ala 'mysql_query("INSERT into tabel..osv...'
else { // ellers
UPDATE } // så skal der køres en 'mysql_query("UPDATE tabel SET ... osv ..'
Avatar billede johan.o Nybegynder
19. januar 2006 - 21:06 #7
Arh, det ser jo ikke nemmere ud :)

$q=mysql_query("SELECT * FROM tabel");
if(mysql_num_rows($q)==0) {
mysql_query("INSERT into tabel (ip) values ('".$ip."')"); }
else {
mysql_query("UPDATE tabel SET ip='".$ip."'"); }

Mvh. Johan
Avatar billede drockles Nybegynder
19. januar 2006 - 21:32 #8
ok! fedt.. mange tak
svar?
Avatar billede johan.o Nybegynder
20. januar 2006 - 00:12 #9
Velbekomme :)

Mvh. Johan
Avatar billede johan.o Nybegynder
02. februar 2006 - 11:10 #10
Tak for points :)
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