Autor Zpráva
ondrej16556
Profil
Dobrý deň,
Potreboval by som poradiť ako dať premennú do napr. $a tak, aby zobrazilo názov premennej a nie obsah
a zároveň do $a dať 2. premennú ale aby zobrazilo jej obsah.

Mám takýto skript:
	for($hodnota = 1; $hodnota <= $budovy; $hodnota++) {
		$query = "SELECT * FROM budovy WHERE id = $hodnota";
		$result = mysql_query($query);
		list($p1, $p2, $p3, $p4, $p5, $p6, $p7, $p8) = mysql_fetch_row($result);
		$data2 = "INSERT INTO budovy(id, username, nazov, stupen, viac, viac2, nova, koniec) VALUES ($p1, '$p2', '$p3', $p4, $p5, $p6, $p7, $p8)";
		$kondata = "$query = \"$data2\"";
		$file = FOpen("../../Zaloha/$nazov", "r+");
		$data = FRead($file, FileSize("../../Zaloha/$nazov"));
		FWrite($file, $data+$kondata);
		FClose($file);
	}

Ale namiesto $kondata = "$query = \"$data2\""; mi to hádže 0.
Ako by som to mohol spraviť?
Leopik 2x
Profil
takto?
$a = '$b';
echo $a; // vypise "$b";
ondrej16556
Profil
Nejako takto:
echo $kondata; //vypíše sa $query = "INSERT INTO budovy(id, username, nazov, stupen, viac, viac2, nova, koniec) VALUES (1, '2', '3', 4, 5, 6, 7, 8)"; 
Leopik 2x
Profil
$kondata = '$query = "' . $data2 . '";';
ondrej16556
Profil
Ďakujem, ale ešte mám jednu otázku.

$query = "SELECT COUNT(id) FROM budovy";
		$result = mysql_query($query);
		list($budovy) = mysql_fetch_row($result);

Ako dosiahnem, aby vo výpise som mal počítaný ďalší autoindex?
rexi
Profil *
Přes foreach třeba takto
$query = "SELECT COUNT(id) FROM budovy";
$result = mysql_query($query);
list($budovy) = mysql_fetch_row($result);
foreach ($budovy as $barak => $index) {
    echo $index.'. - '.$barak;
}

ondrej16556
Profil
rexi:
Ale vypíše mi Warning: Invalid argument supplied for foreach() in /home/users/adminstr/stredovek.comehere.cz/web/Dedina/Admin/pokracovanie_zaloha.php on line 13
Nox
Profil
Taky je to nesmysl, daná query bude vracet vždy jen 1 záznam

Ten tvůj skript je hodně divoký....

Nejdřív si vybereš id *úplně všech* budov, pak si z nich vytáhneš 8 (proč teda query na všechny?) do očíslovaných! proměnných
Potom to znovu vkládáš do té tabulky a pak ještě do souboru...

A ještě tuplem je to v cyklu.... který začíná na hodně 67 která je napevno narvaná do kódu a ani není jasný, co znamená...

Nechápu základní věc: co je účelem toho kódu?

Pak se možná někam pohnem
ondrej16556
Profil
Účelom je, aby vypísalo premenné a vložilo ako obyčajný text do php kódu(do súboru).
A ako by som mohol spraviť, aby mi to vrátilo 67 záznamov?

//EDIT
napríklad vypíše premenné a vloží ako
$query = "INSERT INTO budovy(id, username, nazov, stupen, viac, viac2, nova, koniec) VALUES (1, '2', '3', 4, 5, 6, 7, 8)";
ondrej16556
Profil
Tu máš celý kód:
<? session_start() ?>
<body bgcolor="#980000">
<?php
	require_once "../../db.php";
	$conn = mysql_connect($dbhost, $dbuser, $dbpass)
		or die("");
	mysql_select_db($_SESSION["server"]);
	$nazov = $_SESSION['nazov'];
//výpis
	$query = "SELECT COUNT(id) FROM budovy";
		$result = mysql_query($query);
		list($budovy) = mysql_fetch_row($result);
	for($hodnota = 1; $hodnota <= $budovy; $hodnota++) {
		$query = "SELECT * FROM budovy WHERE id = $hodnota";
		$result = mysql_query($query);
		list($p1, $p2, $p3, $p4, $p5, $p6, $p7, $p8) = mysql_fetch_row($result);
		$data2 = "INSERT INTO budovy(id, username, nazov, stupen, viac, viac2, nova, koniec) VALUES ($p1, '$p2', '$p3', $p4, $p5, $p6, $p7, $p8)";
		$kondata = '$query = "' . $data2 . '";' . "\n";
		$file = FOpen("../../Zaloha/$nazov", "r+");
		$data = FRead($file, FileSize("../../Zaloha/$nazov"));
		FWrite($file, $kondata);
		FClose($file);
	}
	
	$query = "SELECT * FROM dedina";
		$result = mysql_query($query);
	$query = "SELECT * FROM lode";
		$result = mysql_query($query);
?>
Nox
Profil
...už to po dlouhé době asi chápu, proč to ale proboha načítáš po jednom řádku?
na zálohování DB to stejně vypadá dost krkolomně, použij
SELECT .... INTO OUTFILE

a máš to stejné na 1 řádku!

---------------------------------------------------------------
(ne až tak) "drobnosti"

řádky
1 > radši <?php
4 > používej radši absolutní adresování s rootem uloženým do konstanty, pak nebudeš při přesunu muset přepisovat kompletně celý kód!
6 > proč žádná hláška v die() a proč tedy ty uvozovky? dej si tam třeba "Nepovedlo se připojit k DB"
10 > v tomhle případě je myslim spešl proměnná zbytečná
12 > nepoužívej "$budovy" protože tam nejsou budovy, ale jen jejich počet" -> $pocetBudov např.
12 > proč list a fetch na 1 buňku ->
$pocetBudov = mysql_result("SELECT COUNT(*) FROM budovy", 0);

16 > proč takhle prasácky čísla v proměnné, proč ne pole? ->
$budova = mysql_fetch_row($result);

19 > opět cesty...
20 > není tenhle řádek zbytečný?
19-22 > jde použít file_put_contents()

Tvůj kód taky operuje s tím, že IDčka jdou jedno za druhým a není tam díra, ale ve skutečnosti tam může záznam chybět a pak to nepojede jak bys chtěl

dělej občas prázdné řádky, bude se to líp číst
ondrej16556
Profil
Nox:
1 > ok
4 > ok
6 > ok
10 > Prečo? Takto:
$result = mysql_query("SELECT COUNT(id) FROM budovy!");
        list($budovy) = mysql_fetch_row($result);

12 > ok
12 > Píše mi Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /home/users/adminstr/stredovek.comehere.cz/web/Dedina/Admin/pokracovanie_zaloha.php on line 10
18 > ok
20 > Nie, nie je. Ten súbor je už tam vytvorený
Nox
Profil
ondrej16556:
10 > ano (bez vykřičníku)
12 > jasně, chybka ->
$pocetBudov = mysql_result(mysql_query("SELECT COUNT(*) FROM budovy"), 0);
*
20 > no...ale nikde dál nevidím proměnnou $data použitou

*) tento zápis je ok jen pro query, které vždy vrací hodnotu.... pokud bys chtěl vzít třeba textovou hodnotu z řádku podle id a řádek s tím id by tam nebyl, hodilo by to chybu, takže nejdřív query, pak zjistit jestli to něco vrátilo a pak teprv mysql_result()
ondrej16556
Profil
Súbor zaloha.php:
<?php
	$vykonaj = 1;
	if($vykonaj == 1):
	$den = date("d");
	$mesiac = date("m");
	$rok = date("Y");
	$hodina = date("H");
	$minuta = date("i");
	$sekunda = date("s");
	$nazov = "backup-$den-$mesiac-$rok---$hodina-$minuta-$sekunda.php";
	$vykonaj = 0;
	endif;
	$_SESSION['nazov'] = $nazov;
	$data = '<? session_start() ?>
<html>
<head>
<link rel="stylesheet" type="text/css" href="../active.css">
<link rel="stylesheet" type="text/css" href="../styly.css">
<meta http-equiv="Content-type" content="text/html; charset=Windows-1250">
</head>
<body bgcolor="#980000">
<?php
require_once "../db.php";
$conn = mysql_connect($dbhost, $dbuser, $dbpass)
	or die("");
mysql_select_db($_SESSION["server"]);
/*
-- phpMyAdmin SQL Dump
-- version 3.2.2
-- http://www.phpmyadmin.net
--
-- Hostiteľ: localhost
-- Verzia serveru: 5.1.41
-- Verzia PHP: 5.2.10
*/
$query = "SET SQL_MODE=\"NO_AUTO_VALUE_ON_ZERO\"";
	mysql_query($query);
/*
--
-- Databáza: ``
--

-- --------------------------------------------------------

--
-- Štruktúra tabuľky pre tabuľku `budovy`
--
*/';
	$file = FOpen("../../Zaloha/$nazov", "a+");
	FWrite($file, $data);
	FClose($file);
	$go = true;
	if($go == true):
		header("Location: pokracovanie_zaloha.php");
	endif;
?>
Nox
Profil
Kromě toho že
$den = date("d");
    $mesiac = date("m");
    $rok = date("Y");
    $hodina = date("H");
    $minuta = date("i");
    $sekunda = date("s");
    $nazov = "backup-$den-$mesiac-$rok---$hodina-$minuta-$sekunda.php";

=>
$nazov = "backup-".date("d-m-Y--H-i-s").".php";


tak....to furt není argument proti INTO OUTFILE ;)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0