Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

LenaB avatar LenaB 112 Точки

[Homework] Fast Track PHP/MySQL

Отварям тема за домашните за курса. Ще слагам линкове към темите за обсъждане на различните домашни.

Понеже съм онлайн и току-що гледах първата лекция (доста приятно поднесена от лектора) може ли някой от присъствалите да уточни трябва ли да се праща някакъв файл за първата лекция (Въведение в XAMPP – PHP MySQL уеб програмиране)?

В профила ми излиза поле за изпращане на файл, но след преглед на задачите не виждам нищо за изпращане.

Тагове:
17
PHP Web Development Basics
nikolaysimeonov avatar nikolaysimeonov 22 Точки

Здравейте,

някой може ли да ми разтълкува какво точно се иска в задача 5 от домашното за Низове, тъй като 100 пъти прочитам условието и така и не разбирам какво трябва да се направи. Благодаря предварително.

1
Keeper avatar Keeper 18 Точки

Не знам дали съм го разбрал правилно, но доколкото прочетох условието се иска даден масив от елементи да се сортира в зависимост от ключа на отделните низове. С други думи: ако сме дефинирали даден масив по този начин:

  $array = array(
'3'=>'Keeper',
'1'=>'Beeper',
'2'=>'Deeper',
'0'=>'Reaper',
'4'=>'Jeeper');

Трябва да изведем елементите спрямо индекса на всеки един от тях. Тоест: Reaper, Beeper, Deeper, Keeper, Jeeper

Това става посредством функцията ksort() и след това обхождаш масива с for() или foreach().

  ksort($array);
foreach ($array as $index => $v) {
print $index = $v . '<br />';
}

Пак казвам. Не съм сигурен, че това е идеята на заданието, но поне аз до това заключение стигнах.

1
hardwork avatar hardwork 5 Точки

И за мен е доста неясно условието, но мисля че е идентично с това на 4-та задача. Постнал съм решение няколко поста преди този :)

0
Devforce avatar Devforce 16 Точки

Колеги, някой справи ли се със домашното от лекцията за "Масиви". Утре е крайният срок, а идея си нямам как да реша и една задача. Май никой не взема на сериозно "онлайн" обучващите се, поне след лекцията да се дават малко разязнения за домашното, ще е добре.

 

Поздрави!

1
elena89 avatar elena89 15 Точки

Има колеги, които са постнали решения. Прегледай ги. Ето и мои решения, ако ти помогнат: http://pastebin.com/reWLgYzP . За сега са само първите две, но ще актуализирам като реша и другите. Ако имаш конкретни въпроси питай, за да може да ти отговори някой, било то по заданието или по самата задача.

1
elena89 avatar elena89 15 Точки

Домашното за низове - http://pastebin.com/eArn24HP . В момента са само първите 3 задачи. Ако някой има въпроси или препоръки да пише.

0
elena89 avatar elena89 15 Точки

За домашното Работа на PHP с потребители, може ли някой да ми каже как да направя така, че при натискане на бутона Register да ми отваря формата за регистрация в нова страница? Пробвах с Location: , но нищо не става. И изобщо като цяло малко разяснения по задачата какво по-точно се иска. Аз лично нищо полезно не чух в тази лекция, само неща, които така или иначе си ги научих сама преди седмици и то, защото ми трябваха за предишни домашни.

1
petio.borisov avatar petio.borisov 0 Точки

Здравей! 
Аз съм го направил така: 

 

<input type="submit" value="Login">
<a href="1.2registration.php" target="_blank"> <button type="button">Register</button></a> 

 

Това са двата бутона долу във формата. За втория будон "Register" си направих нов файл с регистрационната форма (въвеждам го тук: "a href="1.2registration.php" " ; target="_blank" ти изкарва новата страница с регистрационната форма в нов таб).

 

Надявам се да съм ти бил от полза!

Поздрави!

0
elena89 avatar elena89 15 Точки

Бутона Registration го направих в друга форма с action="Registration.php" и стана, но не знам как да го направя за submit, ако са верни името и паролата, защото ако го направя пак с action направо влиза в системата дори и да са грешни.

0
RoYaL avatar RoYaL Trainer 6849 Точки

Не знам какво ви е домашното, но можеш с РНР да избереш коя презентационна част да се рендерне. Т.е. можеш да рендернеш javascript. А джаваскрипта може да отваря нови прозорци:

<script>window.open('1.2registration.php', 'name', "height=250,width=250");</script>

В този случай винаги може да направиш:

 

<?php if(isValidLogin($_POST['username'], $_POST['password']): ?>

    <script>window.open('successfulRegWindow.php', 'name', "height=250,width=250");</script>

<?php else: ?>

    <script>window.open(wrongCredentialsWindow.php'', 'name', "height=250,width=250");</script>

<?php endif; ?>

 

По-нормалният вариант, обаче, е друг.

 

Когато натиснеш submit. Вместо той да бъде във <Form> тагове, да се контролира онклик ивента му от джаваскрипт, съответно вместо да те препраща към registration.php да прави ajax call към съответната страница, която връща респонс на база на юзъра и паролата, и примерно връща json {"success":1, "message":"registration successfull"} или {"success":0, "message":"wrong credentials"} (погледнете функциите json_encode && json_decode). На база на този респонс (без да се презарежда страницата) джаваскрипта ще знае какво да прави, съответно при success=1 може да редиректне към друга страница, а при success=0 да отвори поп-ъп или просто да изпише в текущия прозорец, че не са валидни юзъра и паролата.

0
elena89 avatar elena89 15 Точки

Относно домашното за MySQL - някой може ли да ми даде малко повече разяснения, например за Problem 2 и Problem 3. Много би ми помогнало, ако някой постне примерно решение (естествено не за копи-пейст, а за ориентиране). Като цяло малко ми дойде тъмна Индия тази тема. Освен това на две места има за пращане на домашно, а домашното е едно. Къде трябва да се прати? Благодаря предварително.

0
RoYaL avatar RoYaL Trainer 6849 Точки

Дай условията, че не съм в курса и не знам от къде да ги взема.

 

EDIT: Намерих ги условията, това са, нали:

  1. Show Data Base

Add PHP script to show a database table rows as HTML table using condition of previous task.

  1. *Show Data Base relations

Show their relations, Primary Key, Foreign Key as HTML.

 

Тук идеята е да query-неш базата, и завъртайки резултсета да построиш таблица с него. При релациите - идеята е да query-неш метаинформацията. Предполагам са ви казали на курса, коя таблица в MySQL съдържа метаданни за таблиците, тя е read only, но едостатъчно да я прочетеш ида изкараш кои са primary/foreign key-ове и да ги покажеш пак като  resultset/grid

1
avitoholix avatar avitoholix 13 Точки

Здравейте колеги малко помощ с таз грешка: Warning: mysql_connect(): Access denied for user 'vandal'@'localhost' (using password: YES    от къде идва проблема? 

 

 

session_start();
mysql_connect('localhost','vandal','codein') or die('SYSTEM FAILURE!');
mysql_select_db('our_data') or die('NO DATABASE!');

0
Samuil.Petrow avatar Samuil.Petrow 1550 Точки

Просто не са ти това данните за бд-то и не може да се свърже. Написал си грешен user или парола.

1
AlexanderIliev avatar AlexanderIliev 6 Точки

Пробвай по този начин:

$conn = mysql_connect("localhost", "vandal", "codein") or die('SYSTEM FAILURE!');

mysql_select_db("our_data", $conn) or die('NO DATABASE!');

1
avitoholix avatar avitoholix 13 Точки

Колеги благодаря за идеите, още не съм намерил грешката. 

 

0
neda.v.veleva avatar neda.v.veleva 4 Точки

Здравейте, колеги. Въпреки, че срока за предаване на домашното за Работа с форми всеоще се боря с един проблем. Качвем кода на целия проект, за да можете да се запознаете с идеята. Идеята беше да е ООП и затова е малко мацаница, но да кажем, че това в момента не  ми е толкова голям проблем. Ето кода. Та проблема е, че нещо не мога да се преборя с UPDATE на данни от базата /файл - friends_list.php/. Имам бутон edit, който взима id-то на избрания от нас човек, на който ще променяме данните. Правим SELECT, за да вземем всички данни на въпросния човек и да попълним формата с неговите данни...До тук добре и тук нещо не ми се получават нещата. Някъде тук нещо бъркам. Идеята ми е като се submit-не формата да се направи UPDATE и толкова. Опитах какво ли не, но не се получава. Исках и да мога да използвам една и съща форма и за запис и за редакция, но тогава пък от всякъде се разпищява за несъществуващи променливи. Много ще съм благодарна ако някой може да ми помогне. 

0
RoYaL avatar RoYaL Trainer 6849 Точки

Здравей, пиша от телефона, така че има голям шанс да съм недогледал нещо. Разгледах кода ти, и продължавам да поддържам мнението, че не трябва да имаш стотици ифове в една страница,  още повече пък нестнати. Кийп ит симпъл. Условието ти Иф Пост е нестнато в условието Иф Гет Едит > 0, а екшъна на формата не добавя този гет параметър ?едит=1. Или го добави в екшъна или изкарай проверката, защото иначе няма как да влезеш в нея.

Това поне е основата на проблема, за който питаш.

От тук нататък ще си позволя да коментирам кода като цяло.

1. isset($var) > 0 няма да доведе до очаквания от теб резултат. Това ще евалюира експрешъна isset($var) до TRUE, което е 1 и съответно 1 > 0 ВИНАГИ. Т.е. дори и $var = 0; isset($var) ще върне true. Ако искаш да проверяваш за сетната променлива и за стойност, ще трябва на два пъти if(isset($var) && $var > 0)

2. Класът ти FormValidation:

2.1. Не би трябвало да има такова име. Името трябва да е име на обект, на съществително. Validation е процес. 

2.2. Прави прекалено много неща - прави конекция към базата, валидира формата, инсъртва, генерира HTML, етс. Нарушава SRP. 

3. HTML-а в friends_list.

3.1. Както вече споменах твърде много условия. По принцип NetBeans подчертава кодс повече от 1 нестнато условие и казва "Too many nested blocks. It's good practice to introduce a new function"

3.2. Формата - не е хубаво да мешаш РНР и HTML. Особено пък HTML-а да е в ECHO. ТАка губиш autocomplete-а на ИДЕ-то за HTML, както и четимостта. Да не говорим, че всичко е в лилаво, вместо таговете да са оцветени по един начин, атрибутите по друг и т.н.

3.3. Формата - Условията в нея. До колокто виждам според зависимост от пола генерираш различен HTML-а. Който всъщност не е много различен? Единствено ID-та и VALUE-та са MALE или FEMALE. Тогава просто можеше там където има динамичен контест да сложиш $edit_info['gender'], вместо да пишеш условия.

 

4. Цитат (вече не пиша от телефона) "Исках и да мога да използвам една и съща форма и за запис и за редакция"

- НЕ! :) Не искаш. Както казах за класа за валидацията. Нарушаваш принципа на това - едно нещо да прави ЕДНО НЕЩО :) Ако едно нещо правиш две или повече неща - значи правиш нещо грешно. Ако искаш да спестиш код - го правиш In favor of readibility. Но ако спестяваш код и същевременно readibility-то спада - значи няма нужда от това. Писането на код не е толкова expensive процес. Четенето и едитването му - обаче е. Ако едно нещо прави сто неща, то представи си колко IF-ове ще имаш за това. Ако друг трябва да ти чете кода и да оправи нещо, ще трябва да разбере точно заради кой иф, се влиза там.

Има случаи, в които кодът трябва да се пести - за да няма повтаряемост или за да се чете по-добре, но това да правиш един код да прави много неща не е сред тях.

Например, ако имаш много условия и ако едно от тях не се покрие искаш да върнеш FALSE, тогава наистина е по-добре да спестиш код вместо да пишеш много условия. (Цикъл + 1 ИФ)

2
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.