ok i have been reading a lot on SPI and learn some new stuff.
so please let me know if I got this right. is this correct?
* SD card attached to SPI bus as follows:
** MOSI - pin 11
** MISO - pin 12
** CLK - pin 13
** CS - pin 4
* Ethernet chip attached to SPI bus as follows:
** SS - pin 10 (by default)
so when doing
digitalWrite(10, HIGH); // deselect ethernet mode
digitalWrite(4, LOW); // select SD mode
you are saying, dont use slave ethernet (on pin 10 set to HIGH) and use slave SD (on pin 4 set to LOW)
by default pin 10.
(i have learn that to enable the module it must be set to LOW, not to HIGH as i did on the code before.)
so thanks for any feedback. i think i am getting to understand all this, just need an extra bit.
if anyone has an ethernet shield to try this, i dont have mine available so its really frustrating not seeing if it actually works. 
//Libraries
#include <SPI.h>
#include <Ethernet.h>
#include <SD.h>
/*
The circuit:
* analog sensors on analog ins 0, 1, and 2
* SD card attached to SPI bus as follows:
** MOSI - pin 11
** MISO - pin 12
** CLK - pin 13
** CS - pin 4
* Ethernet chip attached to SPI bus as follows:
** SS - pin 10 (by default)
*/
// to deselect a peripherial (SD or ethernet) put HIGH to its CS pin.
//Server IP address
byte server[] = { 111,111,111,111}; // Godaddy Server
//Setup a client
Client client(server, 80);
byte ip[] = { 192,168,1,69 }; // Using a Router
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte gateway[] = { 192, 168, 1, 1 }; //your router's IP address
boolean SDavailable;
// On the Ethernet Shield, CS is pin 4. Note that even if it's not
// used as the CS pin, the hardware CS pin (10 on most Arduino boards,
// 53 on the Mega) must be left as an output or the SD library
// functions will not work.
const int SDchipSelect = 4;
const int ETHERNETchipSelect = 10;
void setup()
{
// -------- Start ethernet --------------------------------
Ethernet.begin(mac, ip, gateway); //, subnet);
// ----------- end setup ethernet --------------------------
//------------ start of setup SD -------------------------------
//To use the SD card, you set its SS pin HIGH and the Ethernet shield's SS pin LOW
Serial.print("Initializing SD card...");
// Set pin modes ...
pinMode(ETHERNETchipSelect, OUTPUT); // make sure that the default chip select pin is set to output, even if you don't use it:
pinMode(SDchipSelect, OUTPUT); // On the Ethernet Shield, CS is pin 4
// see if the card is present and can be initialized:
if (!SD.begin(SDchipSelect)) {
Serial.println("Card failed, or not present");
// don't do anything more:
//return;
SDavailable = false; // set a flag to indicate that the SD is not available so that the code in the loop knows.
}
Serial.println("card initialized.");
//------------ end of setup SD -------------------------------
// ---- start setup SERIAL PORT --------------------------------------------------
Serial.begin(9600);
Serial.println(" ********************** Arduino Started ********************** ");
// ---- end setup SERIAL PORT --------------------------------------------------
}
void loop() {
// ++++++++++++++++++ GET SOME DATA ++++++++++++++++++++++++++
// make a string for assembling the data to log:
String dataString = "";
// read three sensors and append to the string:
for (int analogPin = 0; analogPin < 3; analogPin++) {
int sensor = analogRead(analogPin);
dataString += String(sensor);
if (analogPin < 2) {
dataString += ",";
}
}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
sendtoethernet(dataString);
sendtoSD(dataString);
delay(10000);
}
void sendtoethernet(String dataString){
// ----------------------------Send the data via ethernet ----------------------------
//set its SS pin (10) HIGH, and the SD card's SS (4) pin LOW
digitalWrite(ETHERNETchipSelect, LOW); // select ethernet mode -> LOW selects, HIGH deselects module
digitalWrite(SDchipSelect, HIGH); // deselect SD mode -> LOW selects, HIGH deselects module
if (client.connect()) {
client.print("GET http://website.com/upload.php?P=");
client.print(dataString);
client.println();
client.stop();
}
else {
Serial.println(" ***************** Failed to connect to client ***************** ");
}
}
void sendtoSD(String dataString){
// ----------------------------Save the data in the SD -------------------------------------------
if (SDavailable != false){
//To use the SD card, you set its SS pin HIGH and the Ethernet shield's SS pin LOW
digitalWrite(ETHERNETchipSelect, HIGH); // deselect ethernet mode-> LOW selects, HIGH deselects module
digitalWrite(SDchipSelect, LOW); // select SD mode-> LOW selects, HIGH deselects module
// open the file. note that only one file can be open at a time, so you have to close this one before opening another.
File dataFile = SD.open("datalog.txt", FILE_WRITE);
// if the file is available, write to it:
if (dataFile) {
dataFile.println(dataString);
dataFile.close();
// print to the serial port too:
Serial.println(dataString);
}
// if the file isn't open, pop up an error:
else {
Serial.println("error opening datalog.txt");
}
}
// ---------------- end of saving data to SD -----------------------------
}