Титла: Изтриване на ред от БД
Публикувано от: buserg в Mar 04, 2012, 00:53
Здравейте, драги съфорумници! Искам да изтрия ред от база данни със следния код но като дам изтрий не се получава. Ето го и го кода: <head> <meta charset="windows-1251"> </head> <?php $host="localhost"; // Сървъра $username="роот"; // Mysql потребителско име $password=""; // Mysql парола $db_name=""; // ДБ име $tbl_name=""; // Име на таблицата
// Свързване към дб mysql_connect("$host", "$username", "$password")or die("Не може да се свържи"); mysql_select_db("$db_name")or die("Не е избрана БД");
$sql="SELECT * FROM $tbl_name"; $result=mysql_query($sql);
$count=mysql_num_rows($result);
?> <table width="400" border="0" cellspacing="1" cellpadding="0"> <tr> <td><form name="form1" method="post" action=""> <table width="400" border="0" cellpadding="3" cellspacing="1" bgcolor="#CCCCCC"> <tr> <td bgcolor="#FFFFFF"> </td> <td colspan="4" bgcolor="#FFFFFF"><strong>Изтриване от БД</strong> </td> </tr> <tr> <td align="center" bgcolor="#FFFFFF">#</td> <td align="center" bgcolor="#FFFFFF"><strong>Номер</strong></td> <td align="center" bgcolor="#FFFFFF"><strong>Име</strong></td> <td align="center" bgcolor="#FFFFFF"><strong>Порода</strong></td> <td align="center" bgcolor="#FFFFFF"><strong>Обучение</strong></td> <td align="center" bgcolor="#FFFFFF"><strong>Година</strong></td> <td align="center" bgcolor="#FFFFFF"><strong>Описание</strong></td> <td align="center" bgcolor="#FFFFFF"><strong>Снимка</strong></td> </tr> <?php while($rows=mysql_fetch_array($result)){ ?> <tr> <td align="center" bgcolor="#FFFFFF"><input name="checkbox[]" type="checkbox" id="checkbox[]" value="<?php echo $rows['id']; ?>"></td> <td bgcolor="#FFFFFF"><?php echo $rows['id']; ?></td> <td bgcolor="#FFFFFF"><?php echo $rows['name']; ?></td> <td bgcolor="#FFFFFF"><?php echo $rows['breed']; ?></td> <td bgcolor="#FFFFFF"><?php echo $rows['trlevel']; ?></td> <td bgcolor="#FFFFFF"><?php echo $rows['tryear']; ?></td> <td bgcolor="#FFFFFF"><?php echo $rows['description']; ?></td> <td bgcolor="#FFFFFF"><?php echo $rows['image']; ?></td> </tr> <?php } ?> <tr> <td colspan="5" align="center" bgcolor="#FFFFFF"><input name="delete" type="submit" id="delete" value="Изтрий"></td> </tr> <?php // Започване на триенето if($delete){ for($i=0;$i<$count;$i++){ $del_id = $checkbox[$i]; $sql = "DELETE FROM $tbl_name WHERE id='$del_id'"; $result = mysql_query($sql); }
// След завършване на триенето се пренасочва към файла delete_multiple.php if($result){ echo "<meta http-equiv=\"refresh\" content=\"0;URL=delete_multiple.php\">"; } } mysql_close(); ?> </table> </form> </td> </tr> </table> Благодаря на всичко които помогнат
Титла: Re: Изтриване на ред от БД
Публикувано от: b2l в Mar 04, 2012, 17:44
1. Урока от който четеш е стар. 2. Потребителя ти за базата данни не е роот, ами е root (освен ако не си хаквал нещо mysql и не си го сменил). 3. Не си написал името на базата данни, за която да се свържи. 4. Не си написал и таблицата. 5. Грозно е да пишеш html и php в едно.
Титла: Re: Изтриване на ред от БД
Публикувано от: buserg в Mar 07, 2012, 17:48
Знам как да се вържа към база данни. Не съм ги писал нарочно. Не съм учил PHP. Искам да го направя така, че като сложа тикче и като натисна изтрий да ми трие от базата
Титла: Re: Изтриване на ред от БД
Публикувано от: Odido в Mar 08, 2012, 07:02
И аз хал хабер си нямам от php ,ноо тука има напляскани сумати затварящи тагове "?>" и доста недомислици според мен, като GeSHi (PHP): <?php } ?>
почнат while и свършен наникъде и т.н. П.С Поправете ме ако греша.
Титла: Re: Изтриване на ред от БД
Публикувано от: neter в Mar 08, 2012, 08:58
GeSHi (PHP): <?php } ?>
почнат while и свършен наникъде и т.н.
Няма нищо лошо в това оформление - често срещано при изписване на View-то в MVC модела, когато не се използва някакъв template engine, който да направи кода още по-странно изглеждащ :) Това изписване на HTML-а извън PHP таговете позволява кеширане на същия този HTML. Важното е бройката и местата на отварящите и затварящите скоби във вложените PHP тагове да си отговарят. buserg, ако не използваш други езици, изискващи подобни тагове, каквито изисква PHP (като XML; може да внесе объркване), можеш в php.ini да зададеш short_open_tag = On и тогава това <?php echo $rows['id']; ?> да го изписваш така <?= $rows['id'] ?> Относно проблема ти, че записите не се трият // Започване на триенето if($delete){ Не намирам някъде да задаваш променливата $delete, поради което тази променлива винаги е без стойност, и така никога не се влиза в if-а, в който се извършва триенето. Виждам бутон, името на който е "delete", и той се намира в POST форма. След изпращане на формата неговата стойност не застава в променлива $delete, а в $_POST['delete'], така че това е променливата, която трябва да използваш в проверката. $_POST е масивът, в който се съхраняват стойностите на изпратената POST форма // Започване на триенето if (@$_POST['delete']) { Сложил съм ти @ пред променливата, за да не ти влизат Notice съобщения в лога, че променливата не е зададена, когато все още не си цъкнал бутона "Изтрий". Гледай да слагаш по някой и друг интервал, за да си четеш по-лесно кода. Същото е положението с масива $checkbox, който използваш малко по-надолу в същия if (пак е част от $_POST). На теб оставям да познаеш той как трябва да изглежда ;)
Титла: Re: Изтриване на ред от БД
Публикувано от: buserg в Mar 08, 2012, 12:46
Промених го и се получи така, но пак не трие ;D Нещо не правя както трябва :S <head> <meta charset="utf-8"> </head> <?php $host="localhost"; // Сървъра $username="evraziab"; // Mysql потребителско име $password="41dh5x9kf46b"; // Mysql парола $db_name="evraziab_kuche"; // ДБ име $tbl_name="trained"; // Име на таблицата
// Свързване към дб mysql_connect("$host", "$username", "$password")or die("Не може да се свържи"); mysql_select_db("$db_name")or die("Не е избрана БД");
$sql="SELECT * FROM $tbl_name"; $result=mysql_query($sql);
$count=mysql_num_rows($result);
?> <table width="400" border="0" cellspacing="1" cellpadding="0"> <tr> <td><form name="form1" method="post" action=""> <table width="400" border="0" cellpadding="3" cellspacing="1" bgcolor="#CCCCCC"> <tr> <td bgcolor="#FFFFFF"> </td> <td colspan="4" bgcolor="#FFFFFF"><strong>Изтриване от БД</strong> </td> </tr> <tr> <td align="center" bgcolor="#FFFFFF">#</td> <td align="center" bgcolor="#FFFFFF"><strong>Номер</strong></td> <td align="center" bgcolor="#FFFFFF"><strong>Име</strong></td> <td align="center" bgcolor="#FFFFFF"><strong>Порода</strong></td> <td align="center" bgcolor="#FFFFFF"><strong>Обучение</strong></td> <td align="center" bgcolor="#FFFFFF"><strong>Година</strong></td> <td align="center" bgcolor="#FFFFFF"><strong>Описание</strong></td> <td align="center" bgcolor="#FFFFFF"><strong>Снимка</strong></td> </tr> <?php while($rows=mysql_fetch_array($result)){ ?> <tr> <td align="center" bgcolor="#FFFFFF"><input name="checkbox[]" type="checkbox" id="checkbox[]" value="<?php echo $rows['id']; ?>"></td> <td bgcolor="#FFFFFF"><?= $rows['id'] ?></td> <td bgcolor="#FFFFFF"><?php echo $rows['name']; ?></td> <td bgcolor="#FFFFFF"><?php echo $rows['breed']; ?></td> <td bgcolor="#FFFFFF"><?php echo $rows['trlevel']; ?></td> <td bgcolor="#FFFFFF"><?php echo $rows['tryear']; ?></td> <td bgcolor="#FFFFFF"><?php echo $rows['description']; ?></td> <td bgcolor="#FFFFFF"><?php echo $rows['image']; ?></td> </tr> <?php } ?> <tr> <td colspan="5" align="center" bgcolor="#FFFFFF"><input name="delete" type="submit" id="delete" value="Изтрий"></td> </tr> <?php // Започване на триенето if(@$_POST['delete']) { for($i=0;$i<$count;$i++){ $del_id = $_POST['checkbox[$i]']; $sql = "DELETE FROM $tbl_name WHERE id='$del_id'"; $result = mysql_query($sql); }
// След завършване на триенето се пренасочва към файла delete.php if($result){ echo "<meta http-equiv=\"refresh\" content=\"0;URL=delete.php\">"; } } mysql_close(); ?> </table> </form> </td> </tr> </table>
Титла: Re: Изтриване на ред от БД
Публикувано от: neter в Mar 08, 2012, 14:03
Защото не си познал как трябва да изглежда променливата на checkbox-овете :) Не е $del_id = $_POST['checkbox[$i]']; а е $del_id = $_POST['checkbox'][$i]; Но нищо - важното е, че опита ;) П.П.: А! Сега се загледах във for цикъла ти. Това е грешна логика за нужния ти цикъл for($i=0;$i<$count;$i++){ Променливата, стойностите на която използваш, е $_POST['checkbox'] (триеш редове, отбелязани във формата). Следователно цикълът трябва да обхожда нея, а не редовете в таблицата for ($i=0;$i<count($_POST['checkbox']);$i++) { А може и така foreach ($_POST['checkbox'] as $key => $value) { и после надолу в цикъла ползваш $value, вместо $_POST['checkbox'][$i]. Иначе правилно обхождаш $count, когато принтираш редовете с checkbox-овете. Но за долния цикъл може да доведе до разминаване в масивите.
Титла: Re: Изтриване на ред от БД
Публикувано от: buserg в Mar 08, 2012, 14:15
Стана. Мерси!
|