Gå til innhold

[Løst] Trenger litt hjelp med PHP [Skoleprosjekt]


Anbefalte innlegg

Hei, usikker på om jeg skulle poste her eller under databser, men da det mest dreier seg om PHP, valgte jeg her. Beklager om det var feil.

 

 

1) Hei, jeg har et skoleprosjekt hvor du skal lage en prototype for et oppfunnet selskap. Har laget design, kontakt oss-skjema ol., men sliter litt med bestillings-siden. Det er 3 destinasjoner, men hver av de har ulik avgang, både dag og tid, så kan ikke lage "vanlig", fordi da vil man ha muligheten til å velge en dato/tid som man egentlig ikke skal kunne velge.

 

Ønsker derfor å først ha 3 bokser/checkboxer med valg for hver av de 3 avgangene. Og når man trykker/checker en av de, så skal alternativene (som dag, tid, antall personer osv.) komme opp. Så kunden først velger destinasjon, og når det er valgt, kommer andre alternativer/formen opp under.

 

Innbiller meg at jeg må ha 3 former, og når box 1 er checked, så skal form 1 komme opp/vises og det samme med 2 og 3. Er det vanskelig å få til?

Kan lage formene, skjema hvor du fyller inn og sånt, men trenger hjelp med å først trykke på en av valgene, og deretter vise de respektive valgene.

 

 

2) Jeg har en nyhets-side som vises 3 nyheter om gangen, og navigasjonsmeny i bunnen hvor du kan bla mellom nyheter. Men nyhetene kommer i feil rekkefølge, nå vises det siste nyhet først, og siste sist. Jeg ønsker at når en nyhet skrives, så vil den komme først, og ikke sist.

På forsiden har jeg en plass med "siste nyhet", men der vises bare første nyhet, siden de nye kommer sist. Er det en enkel fiks for det?

 

3)Når en kunde bestiller, skriver den inn antall barn og voksne. Er det mulig via php at prisen (addere begge rutene) kommer opp i en ny rute/felt bak?

 

Bare å si ifra om dere trenger kodene, så kan jeg poste de i en spoiler.

 

 

Takker for all hjelp :)

Endret av Fred7555
Lenke til kommentar
Videoannonse
Annonse

Istedenfor å lage en ny date-funksjon (som jeg ikke er helt sikker på hvordan lages), sorterer jeg de bare på ID'ene istedenfor (ORDER BY ID DESC), og det funket, så da var 2 løst :)

 

Mangler fremdeles 1 og 3.

Endret av Fred7555
Lenke til kommentar

både pkt. 1 og 3 kan lettere løses med php og uten javascript/ajax ved å ha to steg i bestillingsskjemaet. Når man submitter i første steg, så kommer neste form (2.steg) opp der man kan velge iforhold til hva som ble valgt eller viser den kalkulerte prisen.

Lenke til kommentar

Har nå jobbet endel med prosjektet, og har som sagt klart 2, men støtt på noen problemer.

 

Har fått til å ha 3 checkboxer med 3 former, en til hvert.

Hver form står av to tabeller/info som blir sendt til to tabeller. På form 1 funker det perfekt, men når jeg kopierer php-koden og bare skifter navn til form2 og form 3, eller bare kaller alle form 1, så kommer bare infoen inn i den første tabellen, og ikke inn i den andre, og dermed ikke opp under oversikt over bestillinger.

 

Kode til form 1:

 

 

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
mysql_select_db($database_Databsekobling, $Databsekobling);
mysql_query("START TRANSACTION");
$insertSQL = sprintf("INSERT INTO fjordcruise_kunde(Fornavn, Etternavn, Adresse, Postnummer, Mail, Telefon) VALUES(%s, %s, %s, %s, %s, %s)", GetSQLValueString($_POST['fornavn'], 'text'),
	  GetSQLValueString($_POST['etternavn'], 'text'),
	  GetSQLValueString($_POST['adresse'], 'text'),
	  GetSQLValueString($_POST['postnummer'], 'int'),
	  GetSQLValueString($_POST['mail'], 'text'),
	  GetSQLValueString($_POST['telefon'], 'text'));
mysql_query($insertSQL, $Databsekobling) or die(mysql_error());
 $Result2 = mysql_query("SELECT KundeID FROM fjordcruise_kunde ORDER BY KundeID DESC LIMIT 1");
 $Result2 = mysql_fetch_assoc($Result2);
 $Result2 = $Result2['KundeID'];
 $insertSQL2 = sprintf("INSERT INTO fjordcruise_bestilling(KundeID, Destinasjon, Dag, Tidspunkt, AntallVoksne, AntallBarn) VALUES(%s, %s, %s, %s, %s, %s)", $Result2,
							 GetSQLValueString($_POST['destinasjon'], 'text'),
							 GetSQLValueString($_POST['dag'], 'text'),
							 GetSQLValueString($_POST['tidspunkt'], 'text'),
							 GetSQLValueString($_POST['antallvoksne'], 'int'),
							 GetSQLValueString($_POST['antallbarn'], 'int'));
 mysql_query($insertSQL2, $Databsekobling);
 $Success = mysql_query("COMMIT");
}

 

 

 

Form1 (funker):

 

 

<form id="form1" name="form1" method="POST" action="<?php echo $editFormAction; ?>">

           <table border="0" style="background:#D1D1D1;">
             <tr>
               <td class="fail" style="text-align:right;" align="right">Destinasjon:</td>
               <td align="left"><input name="destinasjon" type="radio" id="destinasjon" value="Eikemo" checked="checked" />
               <label for="destinasjon"></label>                  
               <label for="destinasjon">Eikemo</label></td>
             </tr>
             <tr>
               <td class="fail" style="text-align:right;" width="152" align="right"><strong>Fornavn:</strong></td>
               <td width="514" align="left"><label for="fornavn"></label>
               <input name="fornavn" type="text" id="fornavn" size="30" /></td>
             </tr>
             <tr>
               <td class="fail" style="text-align:right;" align="right"><strong>Etternavn:</strong></td>
               <td align="left"><label for="etternavn"></label>
               <input name="etternavn" type="text" id="etternavn" size="30" /></td>
             </tr>
             <tr>
               <td class="fail" style="text-align:right;" align="right"><strong>Adresse:</strong></td>
               <td align="left"><input name="adresse" type="text" id="adresse" size="30" /></td>
             </tr>
             <tr>
               <td class="fail" style="text-align:right;" align="right"><strong>Postnummer:</strong></td>
               <td align="left"><input name="postnummer" type="text" id="postnummer" size="4" /></td>
             </tr>
             <tr>
               <td class="fail" style="text-align:right;" align="right"><strong>Mail:</strong></td>
               <td align="left"><input name="mail" type="text" id="mail" size="30" /></td>
             </tr>
             <tr>
               <td class="fail" style="text-align:right;" align="right"><strong>Telefon:</strong></td>
               <td align="left"><input name="telefon" type="text" id="telefon" size="12" /></td>
             </tr>
             <tr>
               <td class="fail" style="text-align:right;" align="right">Dag:</td>
               <td align="left"><label for="dag"></label>
                 <label for="dag"></label>
                 <select name="dag" id="dag">
                   <option value="- Velg en dag -">- Velg en dag -</option>
                   <option value="Lørdag">Lørdag</option>
                   <option value="Søndag">Søndag</option>
               </select></td>
             </tr>
             <tr>
               <td class="fail" style="text-align:right;" align="right">Tidspunkt:</td>
               <td align="left"><input name="tidspunkt" type="radio" id="tidspunkt" value="10:00" checked="checked" />
                 Kl. 10:00
               <label for="tidspunkt"></label>                  <label for="tidspunkt"></label></td>
             </tr>
             <tr>
               <td class="fail" style="text-align:right;" align="right">Antall voksne:</td>
               <td align="left"><label for="antallvoksne"></label>
               <input name="antallvoksne" type="text" id="antallvoksne" size="5" /></td>
             </tr>
             <tr>
               <td class="fail" style="text-align:right;" align="right">Antall barn:</td>
               <td align="left"><input name="antallbarn" type="text" id="antallbarn" size="5" /></td>
             </tr>
             <tr>
               <td class="fail" style="text-align:right;" align="right">Pris:</td>
               <td align="left"> </td>
             </tr>
             <tr>
               <td class="fail" style="text-align:right;" align="right"> </td>
               <td align="left"><input type="submit" name="send" id="send" value="Bekreft bestilling" />
               <input type="reset" name="tilbakestill" id="tilbakestill" value="Tilbakestill skjema" /></td>
             </tr>
           </table>

           <input type="hidden" name="MM_insert" value="form1" />
         </form>

 

 

 

Kode til form 2:

 

 

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form2")) {
mysql_select_db($database_Databsekobling, $Databsekobling);
mysql_query("START TRANSACTION");
$insertSQL = sprintf("INSERT INTO fjordcruise_kunde(Fornavn, Etternavn, Adresse, Postnummer, Mail, Telefon) VALUES(%s, %s, %s, %s, %s, %s)", GetSQLValueString($_POST['fornavn'], 'text'),
	  GetSQLValueString($_POST['etternavn'], 'text'),
	  GetSQLValueString($_POST['adresse'], 'text'),
	  GetSQLValueString($_POST['postnummer'], 'int'),
	  GetSQLValueString($_POST['mail'], 'text'),
	  GetSQLValueString($_POST['telefon'], 'text'));
mysql_query($insertSQL, $Databsekobling) or die(mysql_error());
 $Result2 = mysql_query("SELECT KundeID FROM fjordcruise_kunde ORDER BY KundeID DESC LIMIT 1");
 $Result2 = mysql_fetch_assoc($Result2);
 $Result2 = $Result2['KundeID'];
 $insertSQL2 = sprintf("INSERT INTO fjordcruise_bestilling(KundeID, Destinasjon, Dag, Tidspunkt, AntallVoksne, AntallBarn) VALUES(%s, %s, %s, %s, %s, %s)", $Result2,
							 GetSQLValueString($_POST['destinasjon'], 'text'),
							 GetSQLValueString($_POST['dag'], 'text'),
							 GetSQLValueString($_POST['tidspunkt'], 'text'),
							 GetSQLValueString($_POST['antallvoksne'], 'int'),
							 GetSQLValueString($_POST['antallbarn'], 'int'));
 mysql_query($insertSQL2, $Databsekobling);
 $Success = mysql_query("COMMIT");
}

 

 

 

Form 2 (data kommer bare inn under fjordcruise_kunder, og ikke under fjordcruise_bestilling):

 

 

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form2")) {
mysql_select_db($database_Databsekobling, $Databsekobling);
mysql_query("START TRANSACTION");
$insertSQL = sprintf("INSERT INTO fjordcruise_kunde(Fornavn, Etternavn, Adresse, Postnummer, Mail, Telefon) VALUES(%s, %s, %s, %s, %s, %s)", GetSQLValueString($_POST['fornavn'], 'text'),
	  GetSQLValueString($_POST['etternavn'], 'text'),
	  GetSQLValueString($_POST['adresse'], 'text'),
	  GetSQLValueString($_POST['postnummer'], 'int'),
	  GetSQLValueString($_POST['mail'], 'text'),
	  GetSQLValueString($_POST['telefon'], 'text'));
mysql_query($insertSQL, $Databsekobling) or die(mysql_error());
 $Result2 = mysql_query("SELECT KundeID FROM fjordcruise_kunde ORDER BY KundeID DESC LIMIT 1");
 $Result2 = mysql_fetch_assoc($Result2);
 $Result2 = $Result2['KundeID'];
 $insertSQL2 = sprintf("INSERT INTO fjordcruise_bestilling(KundeID, Destinasjon, Dag, Tidspunkt, AntallVoksne, AntallBarn) VALUES(%s, %s, %s, %s, %s, %s)", $Result2,
							 GetSQLValueString($_POST['destinasjon'], 'text'),
							 GetSQLValueString($_POST['dag'], 'text'),
							 GetSQLValueString($_POST['tidspunkt'], 'text'),
							 GetSQLValueString($_POST['antallvoksne'], 'int'),
							 GetSQLValueString($_POST['antallbarn'], 'int'));
 mysql_query($insertSQL2, $Databsekobling);
 $Success = mysql_query("COMMIT");
}

 

 

 

Form 3 er akkurat som over (bare med form 3), altså kommer bare dataen inn under kunde, og ikke bestilling.

 

Er det noen flinke som kan se feilen?

 

 

 

Har noen en side som forklarer det med å auto-summere prisen (at prisen kommer opp når kunden har fylt inn antall voksne og barn, eller kan vise hvordan?

Klarer å finne prisen på en enkel bestilling, og bare siste bestilling, men jeg trenger at den blir sendt til bestillings-tabellen sammen med den andre infoen.

 

 

Stor takk til all hjelp :)

Endret av Fred7555
Lenke til kommentar

Hver form står av to tabeller/info som blir sendt til to tabeller. På form 1 funker det perfekt, men når jeg kopierer php-koden og bare skifter navn til form2 og form 3, eller bare kaller alle form 1, så kommer bare infoen inn i den første tabellen, og ikke inn i den andre, og dermed ikke opp under oversikt over bestillinger.

 

Så, kun

INSERT INTO fjordcruise_kunde(Fornavn, Etternavn, Adresse, Postnummer, Mail, Telefon) VALUES(%s, %s, %s, %s, %s, %s)

kjører av disse to?

INSERT INTO fjordcruise_kunde(Fornavn, Etternavn, Adresse, Postnummer, Mail, Telefon) VALUES(%s, %s, %s, %s, %s, %s)
INSERT INTO fjordcruise_bestilling(KundeID, Destinasjon, Dag, Tidspunkt, AntallVoksne, AntallBarn) VALUES(%s, %s, %s, %s, %s, %s)

 

Sleng på

 or die(mysql_error())

her:

mysql_query($insertSQL2, $Databsekobling);

og se om du får en feilmelding.

Lenke til kommentar

Hmm, har klarte å få form 3 til å funke, så nå funke form 1 og form 3, men ikke form 2.

 

Jeg slang på

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

foran hver an INSERT INTO...., og da funket form 2, men ikke form 3.

 

Når jeg slang på " or die(mysql_error())", så fikk jeg feilmeldingen:

"Cannot add or update a child row: a foreign key constraint fails (`fjordcruise`.`fjordcruise_bestilling`, CONSTRAINT `fk_fjordcruise_bestilling_fjordcruise_priser1` FOREIGN KEY (`Destinasjon`) REFERENCES `fjordcruise_priser` (`Destinasjon`) ON DELETE NO ACTI)"

 

Er vist noe feil med fremmednøkkelen, men det er jo eksakt det samme på alle formene (har kopiert php-koden + formene, bare skiftet navn), så skjønner ikke helt det.

Endret av Fred7555
Lenke til kommentar

Beklager dobbelposting, men klarte å finne feilen nå :)

Tenkte så klart ikke på at fremmednøkkelen inneholdt en å, som det blir kluss med.

Bare skiftet til aa og alt funker perfekt.

Litt kjedelig å sitte 4 timer å feilsøke når løsningen er så enkel... men det funker hvertfall nå :)

 

Takker for all hjelpen jeg fikk.

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...