Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][MySQL][PHP]Wczytanie rekordów z bazy MYSQL ze znakami specjalnymi do formularza
Forum PHP.pl > Forum > Przedszkole
staryadam60
Witam!

Wczytuję z bazy Mysql rekord ze znakami specjalnymi np; cat's, do formularza nr1.
Wszystko ładnie się wyświetla, następnie chcę przesłać ten rekord do następnego nr2 formularza i tutaj jest problem.

Inne rekordy które zaznaczę do przesłania w formularzu nr1, bez znaków specjalnych są wczytywane w formularzu nr2,
ale te ze znakami już nie.

Stosowałem funkcję mysqli-real_escape_string i nie pomaga, nadal nie przekazuje pomiędzy formularzami tychże rekordów.

Coś robię źle, tylko nie wiem co. Pomocyyyyy.

Adam
b4rt3kk
Pokaż kod.
staryadam60
Kod pierwszego formularza w którym wyszukuję towar z bazy;
Kod
<html>
<head>
<meta charset="utf-8" />
<title>Znajdź rekord do wpisania</title>

</head>
<body>

<?php
// Łączymy się z serwerem

include_once ("db/connect.php");
?>

<h3 align="szukajnazwy">Szukanie wg nazwy:</h3>

<form action="admin_modrecord1.php" method="GET">
    <p>Podaj nazwę towaru: </p>
   <input type="text" name="towar"  autofocus size="30" required>&nbsp;<br>
    
    <input type="submit" value="Pokaż">&nbsp;&nbsp;
</form>

<?php
    $sn1 = $_GET['towar'];

   $like = "%".$sn1."%";  //parametry do zapytania z LIKE

    echo"Zmienna LIKE;".$like."<br />";
    
    $stmt = $mysqli->prepare("SELECT indeks, nazwa FROM towar WHERE nazwa like ? ORDER BY nazwa");    
    $stmt->bind_param('s', $like);
    $stmt->execute();
    $stmt->bind_result($indeks, $nazwa);

    echo '
        <form action="admin_modrecord2.php" method="POST" >
        <label for="Nazwa">Nazwa towaru</label>
        <select name="sel_record">';
        
        while ($stmt->fetch())
        {
                 echo " <option value= '$nazwa'>$nazwa : $indeks </option>";
            
            }    
                        echo '<input type="submit" value="Wybierz produkt" />
                               </form> </select> ';

$stmt->close();
/* close connection */
$mysqli->close();
?>

</body>
</html>


Teraz formularz nr 2 w którym nie wyświetlają się towary ze znakami specjalnymi, np. cat's

Kod
<html>
<head>
<meta charset="utf-8" />
<title>Zapisz towar, rekord</title>

</head>
<body>
<?php
// Łączymy się z serwerem

include_once ("db/connect.php");


$sel_record2 =$_POST['sel_record'];

echo"Sel Record z Mysqli;  ".$sel_record2. "<br />";


$stmt = $mysqli->prepare("SELECT  t.indeks, t.nazwa, t.vat, t.pkwiu, t.jm, thf.ilosc, thf.cena_n_z, k.kod_kreskowy
FROM towar t
LEFT  JOIN  (faktura f,  faktura_has_towar thf, kod_ean k)
ON (t.id_towar=thf.id_towar AND f.id_faktura=thf.id_faktura AND t.id_towar=k.id_towar)
WHERE t.nazwa = ? ORDER BY f.data_zak DESC LIMIT 0, 1");
$stmt->bind_param('s', $sel_record2);
$stmt->execute();
$stmt->bind_result($indeks, $nazwa, $vat, $pkwiu, $jm, $ilosc, $cena_z, $kod_k);


echo "Nazwa w bazie:" .$nazwa;

$stmt->fetch();
    if (!$stmt)
    {
     echo '<p>Nie można pobrać listy   !';
   }  
    echo "Indeks w mood2 : " . $indeks . " Nazwa : " . $nazwa . " Kod kreskowy: " . $kod_k;

     echo"

<form method='POST' action='admin_addrecord11.php'>
<section >
Indeks :      <input type='text' name='indeks' value='$indeks'size='20' /><br />
Nazwa :       <input type='text' name='nazwa' value='$nazwa' size='40' /><br />  
Jm :          <input type='text' name='jm' value='$jm' size=5 />
Ilość:        <input type='text' name='ilosc' value='$ilosc' size=5 />
Cena zakupu : <input type='text' name='cena_z' value='$cena_z' size=8 /><br />
PKWiU :       <input type='text' name='pkwiu' value='$pkwiu' szize=10 /><br />
Vat :         <input type='text' name='vat' value='$vat' size=8 /><br />
Kod kreskowy: <input type='text' name='kod_k' value='$kod_k' maxlength='13' size='13' /><br />
    
<input type='submit' value='Dodaj nowy produkt' />    
</section>
<a href='admin_modrecord1.php' target='Powrót' >Powrót : </a>
    </form>";

/* free result set */
$stmt->close();
/* close connection */
$mysqli->close();
?>

</body>
</html>


Natomiast nazwy proste bez tych znaczków wchodzą bez problemu.

Proszę o pomoc.....
b4rt3kk
Akurat sprawa jest prozaiczna.

  1. echo "Indeks : <input type='text' name='indeks' value='$indeks'size='20' /><br />";


Jaki ciąg znaków otrzymasz, jeśli zamiast $indeks wstawisz np. wyraz can't? Otóż taki:

  1. <input type='text' name='indeks' value='can't' size='20' />


co oznacza, że atrybut value zostaje zamknięty po can.

Musisz sobie zmienić ciapki na cudzysłowie.

Czyli np.

  1. echo 'Indeks : <input type='text' name='indeks' value="' . $indeks . '" size='20' /><br />';
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.