Autor | Zpráva | ||
---|---|---|---|
majja01 Profil |
#1 · Zasláno: 7. 2. 2014, 18:58:31
Ahojte mám smyčku while která se opakuje několikrát a mám v ní kod který se má opakovat jenom jednou ale nevím jak to zařídit :( boužel ho nemůžu vyndat. Nevíte jak na to?
|
||
Fisir Profil |
#2 · Zasláno: 7. 2. 2014, 19:39:04
Reaguji na majju01:
Počítej si, kolikrát se cyklus provedl a pokud víc než jednou, tu část kódu nenech spustit. $i = 1; while(/* … */){ /* … */ if($i == 1){ /* kód, který se má provést jen jednou */ } /* … */ $i++; } |
||
majja01 Profil |
#3 · Zasláno: 7. 2. 2014, 19:49:15
jo jenomže pokud do toho co se má opakovat jednou dám funkci
mail() tak se obsah odešle jenom jednou...
|
||
Kcko Profil |
#4 · Zasláno: 7. 2. 2014, 19:55:56
majja01:
Tak ukaž kód, děláš něco špatně. |
||
majja01 Profil |
#5 · Zasláno: 7. 2. 2014, 19:58:08
<?php session_start(); // $jmeno = $_POST["jmeno"]; // $prijmeni = $_POST["prijmeni"]; // $ulice_cislo_domu = $_POST["ulice_cislo_domu"]; // $psc = $_POST["psc"]; // $mesto = $_POST["mesto"]; // $email = $_POST["email"]; // $telefon = $_POST["telefon"]; // $zprava = $_POST["zprava"]; $a = 1; ?> <?php include "connect.php"; $celkem = 0; $result = mysql_query("SELECT * FROM vyrobek WHERE id IN ('" . implode("', '", array_keys($_SESSION['kosik']))."')"); while($i=mysql_fetch_array($result)): $price = $i["price"]; $ks= $_SESSION["kosik"][$i["id"]]; $now = $price * $ks; $celkem += $now; $mess = '<tr><td><img src="127.0.0.1/mak/img/'.$i['picture'].'" alt="'.$i['name'].'"></td><td>'.$i['name'].'</td><td>'.$ks.'</td><td>200 kč</td><td>400 Kč</td></tr> <tr><td> </td><td> </td><td> </td> <td> </td><td>celkově:400 kč + poštovné</td></tr> </table>'; if($a==1) { $message = '<h2>Košík</h2><table border="1"><td>náhled</td><td>jméno</td><td>počet ks</td><td>cena za kus</td><td>cena</td></tr>'.$mess.''.$info.'' ; $info = '<h2>Informace o zákazníkovi</h2> <ul> <li>Marian Šimeček</li> <li>Sladské 116</li> <li>Rožnov pod Radhoštěm</li> <li>756 61</li> </ul> <h2>Další informace:</h2> <ul> <li>733556604</li> <li>mariansimecek@gmail.com</li> <li>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Eius, vitae praesentium cum doloribus officia distinctio labore quisquam assumenda deserunt nostrum laboriosam inventore sequi nisi natus minima amet id dignissimos ut.</li> </ul>'; $to = "babamakova@gmail.com"; $subject = 'objednavka'; $headers = 'From: YourMail@somewhere.com'."\r\n"; $headers .= 'Content-type: text/html; charset=utf-8'."\r\n"; if(mail($to, $subject , $message, $headers)) { echo "odeslán"; } else { echo "neodeslán"; } } endwhile; ?> |
||
Fisir Profil |
Reaguji na majju01:
A jsi si jist $a++ .
|
||
majja01 Profil |
#7 · Zasláno: 7. 2. 2014, 20:04:46
Fisir:
„A jsi si jistá, že MySQL vrací více než jeden řádek?“ jistej ;) ano vrací vypisu je to zboží z košíku... „Mimochodem, v cyklu ti chybí $a++.“ aha ale i tak to mefunguje |
||
Kcko Profil |
#8 · Zasláno: 7. 2. 2014, 20:06:30
majja01:
Ukaž opravený kód ;) |
||
majja01 Profil |
#9 · Zasláno: 7. 2. 2014, 20:08:03
aktuální kod je tento:
<?php session_start(); // $jmeno = $_POST["jmeno"]; // $prijmeni = $_POST["prijmeni"]; // $ulice_cislo_domu = $_POST["ulice_cislo_domu"]; // $psc = $_POST["psc"]; // $mesto = $_POST["mesto"]; // $email = $_POST["email"]; // $telefon = $_POST["telefon"]; // $zprava = $_POST["zprava"]; $a = 1; ?> <?php include "connect.php"; $celkem = 0; $result = mysql_query("SELECT * FROM vyrobek WHERE id IN ('" . implode("', '", array_keys($_SESSION['kosik']))."')"); while($i=mysql_fetch_array($result)): $price = $i["price"]; $ks= $_SESSION["kosik"][$i["id"]]; $now = $price * $ks; $celkem += $now; $mess = '<tr><td><img src="127.0.0.1/mak/img/'.$i['picture'].'" alt="'.$i['name'].'"></td><td>'.$i['name'].'</td><td>'.$ks.'</td><td>200 kč</td><td>400 Kč</td></tr> <tr><td> </td><td> </td><td> </td> <td> </td><td>celkově:400 kč + poštovné</td></tr> </table>'; if($a==1) { $info = '<h2>Informace o zákazníkovi</h2> <ul> <li>Marian Šimeček</li> <li>Sladské 116</li> <li>Rožnov pod Radhoštěm</li> <li>756 61</li> </ul> <h2>Další informace:</h2> <ul> <li>733556604</li> <li>mariansimecek@gmail.com</li> <li>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Eius, vitae praesentium cum doloribus officia distinctio labore quisquam assumenda deserunt nostrum laboriosam inventore sequi nisi natus minima amet id dignissimos ut.</li> </ul>'; $message = '<h2>Košík</h2><table border="1"><td>náhled</td><td>jméno</td><td>počet ks</td><td>cena za kus</td><td>cena</td></tr>'.$mess.''.$info.'' ; $to = "babamakova@gmail.com"; $subject = 'objednavka'; $headers = 'From: YourMail@somewhere.com'."\r\n"; $headers .= 'Content-type: text/html; charset=utf-8'."\r\n"; if(mail($to, $subject , $message, $headers)) { echo "odeslán"; } else { echo "neodeslán"; } } $a++; endwhile; ?> $mess se opakuje jenom jednou
|
||
Kcko Profil |
#10 · Zasláno: 7. 2. 2014, 20:12:12
Co to znamená, že se opakuje jenom jednou. Chtěl jsi ukázku, jak v cyklu zařídit, aby se nějaký kód provedl jenom jednou, to Ti ukázal Fisir.
Zkus se vyjadřovat trošku lidštěji (jsem si sice dnes hodně unavený, ale jak do toho koukám, tak prostě nechápu v čem máš problém ..) |
||
Fisir Profil |
#11 · Zasláno: 7. 2. 2014, 20:15:32
Reaguji na majju01:
„jistej“ Omlouvám se, ale ta přezdívka mě zmátla… „proměná $mess se opakuje jenom jednou“
Protože se ti stále přepisuje. Musíš si ji nejdříve někde definovat jako prázdnou a potom do ní jenom připisovat (místo = použiješ .= ). Ale i tak se ti odešle jen první řádek, protože email se odesílá při prvním běhu skriptu, a pro odeslání kompletních dat ho potřebuješ odeslat až u konce skriptu:
if($a == mysql_num_rows($result)) Prosím, příště nepoužívej rozšíření mysql_* , je zastaralé a bude v dalších verzích PHP odstraněno. Může použít podobné mysqli .
|
||
majja01 Profil |
Kcko:
omlouvám se ale blbě se mi to vysvětluje... prostě když to odešlu tak se mi vypíše jenom jedno zboží... ale v košíku mám 3... podlě mě je to kvůli tomu že je funkce mail() v té podmínce a když tam není tak se mi pošlou dva maily a každý obsahuje jiné zboží...
Fisir: mysqli to je nějaká knihovna ne?? musí se něco stahovat? jak se používá? moc to nechápu... napíšu to znova :((( |
||
Fisir Profil |
#13 · Zasláno: 7. 2. 2014, 20:56:44
Reaguji na majju01:
„musí se něco stahovat?“ Ne, ve výchozím nastavení je přítomna v PHP od verze 5. „jak se používá?“ Klikl´s na ten odkaz? |
||
majja01 Profil |
#14 · Zasláno: 7. 2. 2014, 21:04:15
Fisir:
„Klikl´s na ten odkaz?“ jo ale nějak moc to nechápu jak se mám např připojit k databázi? všude kde jsem se díval tak programují objektivně a ne procedurálně... asi bych se měl naučit OOP... :D |
||
Kcko Profil |
#15 · Zasláno: 7. 2. 2014, 21:05:50
majja01:
Ty bys hlavně měl v cyklu sestavit kompletní výpis těch produktů (přiřazením .= ) a odeslat až po skončení cyklu.
|
||
Fisir Profil |
#16 · Zasláno: 7. 2. 2014, 21:18:07
Reaguji na majju01:
„jak se mám např připojit k databázi?“ Objektově: $mysqli = new mysqli('localhost', 'uživatel', 'heslo', 'databáze'); $mysqli = mysqli_connect('localhost', 'uživatel', 'heslo', 'databáze'); „programují objektivně a ne procedurálně“ Procedurálně to jde také, u všech funkcí mysqli_* jsou popsané oba způsoby.
|
||
majja01 Profil |
Kcko:
„Ty bys hlavně měl v cyklu sestavit kompletní výpis těch produktů (přiřazením .=)“ jo to mi funguje Notice: Undefined variable: name in D:\php\mak\scripts\checkout.php on line 22 Fisir: děkuji |
||
Kcko Profil |
#18 · Zasláno: 7. 2. 2014, 21:32:46
majja01:
Nadefinuj si ji nad začátkem cyklu jako prázdnou. $promenna = ""; cyklus { $promenna .= "neco.."; } |
||
majja01 Profil |
#19 · Zasláno: 7. 2. 2014, 21:33:28
Kcko:
jo ted sem na to přišel :)) |
||
majja01 Profil |
#20 · Zasláno: 8. 2. 2014, 18:38:21
Fisir:
musel sem nahradit to mysql tím mysqli $mysqli = mysqli_connect("127.0.0.1", "root", "" , "mak"); $query = "select * from vyrobek where type in ($type) "; $result = query($query); while ($zaznam=mysqli_Fecth_Array($result)):?> <a href="detail.php?id=<?php echo $zaznam["id"];?>"> <li style="background:url(img/<?php echo $zaznam["picture"];?>); background-size:contain;"> <div class="info"> <?php echo $zaznam["name"];?> <span class="right"><?php echo $zaznam["price"];?> Kč</span> </div> </li> </a> <?php endwhile; ?> Fatal error: Call to undefined function query() in D:\php\mak\index.php on line 138 |
||
Fisir Profil |
#21 · Zasláno: 8. 2. 2014, 19:06:58
Reaguji na majju01:
Možná by to mělo být mysqli_query() .
|
||
majja01 Profil |
#22 · Zasláno: 9. 2. 2014, 09:38:20
Fisir:
taky nic... Warning: mysqli_query() expects at least 2 parameters, 1 given in D:\php\mak\index.php on line 138 Fatal error: Call to undefined function mysqli_Fecth_Array() in D:\php\mak\index.php on line 139 |
||
han5vk Profil |
Prvý parameter
mysqli_query má byť spojenie, čiže v tvojom prípade premenná $mysqli - teda riadok 3 má vyzerať takto:
$result=mysqli_query($mysqli,$query); .
Čo sa týka Fatal Erroru, máš tam preklep. Takéto chyby si stačí preložiť, alebo aspoň prečítať názov volanej funkcie :) |
||
majja01 Profil |
#24 · Zasláno: 9. 2. 2014, 12:24:49
han5vk:
už to mám trochu jinak... nový topic |
||
Časová prodleva: 10 let
|
0