Actibus Skrevet 25. oktober 2011 Del Skrevet 25. oktober 2011 Hvordan kan jeg få satt en $variabel til hver output fra db? SOm du ser av koden under så spytter den ut alle rader som passer til søket, men jeg trenger å få assignet en $variabel til hver av dem. Slik at det blir noe slikt: $delenr1 $delenavn1 .. .. $delenr2 $delenavn2 .. .. etc $query = "SELECT * FROM delebestilling WHERE lev = 'K-H Service' AND status = 'Ikke bestilt'"; $result = mysql_query($query); if(mysql_num_rows($result)) { echo "<table width=\"600\" border=\"1\">". " <tr><td><strong>K-H Service</strong></td><td><input type=\"submit\" name=\"sendKH\" id=\"sendKH\" value=\"Send denne\" /></td></tr>"; while($row = mysql_fetch_array($result, MYSQL_ASSOC)) { echo "<tr><td>Servicenr :{$row['delenr']}</td>" . "<td>Innlevert : {$row['delenavn']}</td>" . "<td>Kunde :{$row['deleplass']}</td> " . "<td>Merke : {$row['deleantall']}</td> " . "<td>Modell : {$row['delepris']}</td></tr><br> " ; Lenke til kommentar
nomore Skrevet 25. oktober 2011 Del Skrevet 25. oktober 2011 Hvorfor må du det? Høres ut som en dårlig måte å gjøre det på, men om du kan forklare hva du vil oppnå så kan noen kanskje forstå hvorfor, evnt foreslå en annen måte å gjøre det på. 1 Lenke til kommentar
Actibus Skrevet 25. oktober 2011 Forfatter Del Skrevet 25. oktober 2011 Tenkte å bruke det til flere ting, men bla for å kunne sette verdiene inn i en tabell for å sende med en mail funksjon, slik jeg har det nå så viser den jo informasjonen i tabellen, men jeg får ikke til å sende den med innhold. Slik informasjonen kommer fra koden over skjønner jeg ikke hvordan jeg skal kunne bruke den videre uten å gi en $variabel til hver del.. Lenke til kommentar
nomore Skrevet 25. oktober 2011 Del Skrevet 25. oktober 2011 Delenummeret er jo allerede i en variabel, rettere sagt et array, og hentes ut fra $row['delenr']. Lenke til kommentar
Vetle blames Erlend Skrevet 25. oktober 2011 Del Skrevet 25. oktober 2011 $delebestillinger = array(); $count = 0; while($row = mysql_fetch_array($result, MYSQL_ASSOC)) { $count++; $delebestillinger[] = "nr{$count}" => array ( "Servicenr" => $row['delenr'], "Innlevert" => $row['delenavn'], "Kunde" => $row['deleplass'], "Merke" => $row['deleantall'], "Modell" => $row['delepris']); } Noe sånt... Mulig jeg har gjort noen feil, men du skjønner nok hva jeg mener. Lenke til kommentar
Actibus Skrevet 25. oktober 2011 Forfatter Del Skrevet 25. oktober 2011 Er på farta idag, men skal teste det der imorgen. nomore: ja du har rett i det, men den blir jo overskrevet når den looper(?) Lenke til kommentar
nomore Skrevet 25. oktober 2011 Del Skrevet 25. oktober 2011 Det stemmer. Så det du skal bruke innholdet til må du hente ut i loopen. Lenke til kommentar
Actibus Skrevet 26. oktober 2011 Forfatter Del Skrevet 26. oktober 2011 Den skjønte jeg ikke helt, hvordan henter jeg ut noe fra loopen uten at det forsvinner på neste loop? Lenke til kommentar
Warz Skrevet 26. oktober 2011 Del Skrevet 26. oktober 2011 (endret) Feil. Den overskriver ingenting. $delebestillinger[] = betyr at du legger til et nytt element i arrayen. Du kan altså skrive dette under while loopen dersom du ikke skjønner hvordan det fungerer: echo '<pre>'; print_r($delebestillinger); echo '</pre>'; Endret 26. oktober 2011 av Warz Lenke til kommentar
Actibus Skrevet 26. oktober 2011 Forfatter Del Skrevet 26. oktober 2011 Hvordan skiller den alle $delebestillinger fra hverandre, hvis jeg vil ha info fra f.eks rad 3 (loop 3)? Tenkte å prøve ut den koden litt lenger opp, men får en syntax feil på denne linjen, som jeg ikke kan finne.. $delebestillinger[] = "nr{$count}" => array ( "Servicenr" => $row['delenr'], Lenke til kommentar
Warz Skrevet 26. oktober 2011 Del Skrevet 26. oktober 2011 (endret) Hvis du vil ha rad 3 skriver du: print_r($delebestillinger[3]); Ja, du får syntax feil fordi koden er feil. Hvis jeg skjønner hva du prøver på rett kan du gjøre slik i stedet: <?php $delebestillinger = array(); $count = 0; while($row = mysql_fetch_array($result, MYSQL_ASSOC)) { $count++; $a = 'nr'.$count; $a = array("Servicenr" => $row['delenr'], "Innlevert" => $row['delenavn'], "Kunde" => $row['deleplass'], "Merke" => $row['deleantall'], "Modell" => $row['delepris'] ); } ?> Da kan du ta: echo nr1['Kunde'].'<br/>'; echo nr2['Kunde']; osv... Endret 26. oktober 2011 av Warz Lenke til kommentar
Actibus Skrevet 26. oktober 2011 Forfatter Del Skrevet 26. oktober 2011 (endret) Der virket den ja, og den viser innholdet som du sier ved å bruke echo '<pre>'; print_r($delebestillinger); echo '</pre>'; Men så støter jeg på problemer når denne informasjonen skal brukes videre. En ting det skal brukes til er å sende en enkel epost, det har jeg gjort tidligere ved å bruke mail funksjonen også brukt $variabler for variable elementer i eposten, men prøver jeg det samme nå får jeg følgende på mailen: Array Da har jeg bare brukt <? $to = "[email protected]"; $subject = "test"; $message = "$delebestillinger[1]"; // Always set content-type when sending HTML email $headers = "MIME-Version: 1.0" . "\r\n"; $headers .= "Content-type:text/html;charset=utf-8" . "\r\n"; { mail($to,$subject,$message,$headers); } ?> Endret 26. oktober 2011 av Actibus Lenke til kommentar
Warz Skrevet 26. oktober 2011 Del Skrevet 26. oktober 2011 Der virket den ja, og den viser innholdet som du sier ved å bruke echo '<pre>'; print_r($delebestillinger); echo '</pre>'; Men så støter jeg på problemer når denne informasjonen skal brukes videre. En ting det skal brukes til er å sende en enkel epost, det har jeg gjort tidligere ved å bruke mail funksjonen også brukt $variabler for variable elementer i eposten, men prøver jeg det samme nå får jeg følgende på mailen: Array Da har jeg bare brukt <? $to = "[email protected]"; $subject = "test"; $message = "$delebestillinger[1]"; // Always set content-type when sending HTML email $headers = "MIME-Version: 1.0" . "\r\n"; $headers .= "Content-type:text/html;charset=utf-8" . "\r\n"; { mail($to,$subject,$message,$headers); } ?> $delebestillinger[1] inneholder en array. Hvis du har gjort som Vetle skriver inneholder denne altså: array ( "Servicenr" => $row['delenr'], "Innlevert" => $row['delenavn'], "Kunde" => $row['deleplass'], "Merke" => $row['deleantall'], "Modell" => $row['delepris']); Du kan ikke skrive echo $delebestillinger[1]; for da vil det stå "Array" på skjermen din. Samme gjelder når du sender en epost. Grunnen til dette er nettopp det at den inneholder en array. Du er dermed nødt til å skrive indexen i denne array for å få ut noe nyttig info. Slik som dette: Det du derimot kan gjøre er å skrive: echo $delebestillinger[1]['Innlevert']; echo $delebestillinger[1]['Kunde']; echo $delebestillinger[1]['Merke']; echo $delebestillinger[1]['Modell']; E-post må da bli noe slikt: <? $to = "[email protected]"; $subject = "test"; $message = 'Innlevert:' . $delebestillinger[1]['Innlevert'].'<br/>Kunde:' . $delebestillinger[1]['Kunde'].'<br/>Merke:' . $delebestillinger[1]['Merke'] . '<br/>Modell:' . $delebestillinger[1]['Modell']; // Always set content-type when sending HTML email $headers = "MIME-Version: 1.0" . "\r\n"; $headers .= "Content-type:text/html;charset=utf-8" . "\r\n"; { mail($to,$subject,$message,$headers); } ?> Lenke til kommentar
Actibus Skrevet 27. oktober 2011 Forfatter Del Skrevet 27. oktober 2011 Aha jeg skjønner, takk for hjelpen! Har fått meg bok for php og mysql idag, så får jeg studere litt mer grundig enn bare å stjele div koder fra andre tutorials Lenke til kommentar
Actibus Skrevet 27. oktober 2011 Forfatter Del Skrevet 27. oktober 2011 (endret) Fått det til å virke, men er det noen mulighet for å få den til å automatisk øke antall linjer i mailen basert på hvor mange rader den henter fra databasen? $message = '<b>Vi ønsker å bestille følgende:</b> <br> '. 'Til servicenr: ' . $delebestillinger[0]['Servicenummer'] . ' - '. $delebestillinger[0]['Antall']. ' stk av: ' . $delebestillinger[0]['Delenr']. ' - ' . $delebestillinger[0]['Beskrivelse'].'<br>'.''. 'Til servicenr: ' . $delebestillinger[1]['Servicenummer'] . ' - '. $delebestillinger[1]['Antall']. ' stk av: ' . $delebestillinger[1]['Delenr']. ' - ' . $delebestillinger[1]['Beskrivelse'].'<br><br><br>'. Slik at hvis det hadde vært 3 rader, så hadde den lagt til en ny linje: 'Til servicenr: ' . $delebestillinger[2]['Servicenummer'] . ' - '. $delebestillinger[2]['Antall']. ' stk av: ' . $delebestillinger[2]['Delenr']. ' - ' . $delebestillinger[2]['Beskrivelse'].'<br>'.' Endret 27. oktober 2011 av Actibus Lenke til kommentar
Thomas. Skrevet 27. oktober 2011 Del Skrevet 27. oktober 2011 Du kan bruke f.eks en for()-løkke. <?php $rader = 5; for($i = 0; $i <= $rader; $i++) $var[$i]['Indeks'] = 'Value'; var_dump($var); ?> Lenke til kommentar
Actibus Skrevet 27. oktober 2011 Forfatter Del Skrevet 27. oktober 2011 (endret) Takk for forslaget! Tror jeg fikk det til med en while loop: Edit: Eller kanskje ikke, koden under virker, men ikke når den settes inn i $message = " ", da vises kun koden i mailen.. $countb = 0; while ($countb < $count) { echo 'Til servicenr: ' . $delebestillinger[$countb]['Servicenummer'] . ' - '. $delebestillinger[$countb]['Antall']. ' stk av: ' . $delebestillinger[$countb]['Delenr']. ' - ' . $delebestillinger[$countb]['Beskrivelse'].'<br>'; $countb++; } Endret 27. oktober 2011 av Actibus Lenke til kommentar
Warz Skrevet 27. oktober 2011 Del Skrevet 27. oktober 2011 Edit: Eller kanskje ikke, koden under virker, men ikke når den settes inn i $message = " ", da vises kun koden i mailen.. $countb = 0; while ($countb < $count) { echo 'Til servicenr: ' . $delebestillinger[$countb]['Servicenummer'] . ' - '. $delebestillinger[$countb]['Antall']. ' stk av: ' . $delebestillinger[$countb]['Delenr']. ' - ' . $delebestillinger[$countb]['Beskrivelse'].'<br>'; $countb++; } Den koden der blir kjørt så lenge $countb er mindre enn $count. Har du definert $count noe sted? Hvis ikke vil det jo ikke fungere. Du må skjøte message, noe slikt:. $count = 4; $countb = 0; $message = ''; while ($countb < $count) { $message .= 'Til servicenr: ' . $delebestillinger[$countb]['Servicenummer'] . ' - '. $delebestillinger[$countb]['Antall']. ' stk av: ' . $delebestillinger[$countb]['Delenr']. ' - ' . $delebestillinger[$countb]['Beskrivelse'].'<br>'; $countb++; } Legg merke til punktumet før = tegnet. Det gjør at $message blir tatt vare på og setningen skjøtes på hver gang loopen blir kjørt. Etter while loopen er helt ferdig skal $message inneholde en string med alt sammen som du kan sende i mailen. Lenke til kommentar
Actibus Skrevet 28. oktober 2011 Forfatter Del Skrevet 28. oktober 2011 $count er definert tidligere, nærmere bestemt fra koden du postet tidligere Det virket fint med det du postet sist, takk igjen! Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå