PHP и MYSQL: вставка ввода select с данными mysql и отображение всех других полей при изменении выбора - PullRequest
0 голосов
/ 24 сентября 2018

У меня такая ситуация:

Таблица моей базы данных называется reteconsolare и имеет следующие поля:

Идентификатор Stato Citta Indirizzo Telefono Адрес электронной почты Mappa Descrizione (Это на самом деле не показано. Яиспользуйте его только для отображения заголовка изображений в ссылках Sito & Mappa)

В данный момент все работает нормально, только когда есть больше "Citta" для "Stato", я хочу, чтобы в "Citta"colum будет отображаться как выбор входа со всеми доступными именами Citta для Stato, упорядочивая их от A до Z, и при изменении выбора должен также отображаться правильный Indirizzo, Telefono, Email, URL, Mappa.

мой фактический код, который повторяет значения.

например:

Belgio |Брюссель
Belgio |Шарлеруа

 <?Php
  mysqli_set_charset($connessione, 'utf-8');

    $sql = "SELECT * FROM reteconsolare ORDER BY Stato, Citta";

    $query = $connessione->query($sql) ;
  while ($row = $query->fetch_assoc())  { 
        $stato=sprintf( $row["Stato"]); 
        $citta=sprintf( $row["Citta"]);
        $indirizzo=sprintf( $row["Indirizzo"]);
        $descrizione=sprintf( $row["Descrizione"]);
        $email=sprintf( $row["Email"]);
        $telefono=sprintf( $row["Telefono"]);
        $mappa=sprintf( $row["Mappa"]);
        $link=sprintf( $row["URL"]);
        $id=sprintf( $row["ID"]);
         ?>  


         <tr>
    <td width="20%"><ts><?Php echo($stato) ?></ts></td>
    <td width="20%"><ts><?Php echo($citta) ?></ts></td>
    <td width="30%"><ts><?Php echo($indirizzo) ?></ts></td>
    <td width="10%"><ts><?Php echo($telefono) ?></ts></td>
    <td width="10%"><ts><?Php echo emailize($email) ?></ts></td>

    <td width="5%" align="center"><?Php echo(' <a target=_blank href='); echo($link);  echo('>'); ?><img src="img/www.png" width="20" height="20" title="Link al sito del <?php echo ($descrizione);?>"></a></td>
    <td width="5%" align="center"><?Php echo(' <a target=_blank href='); echo($mappa);  echo('>'); ?><img src="img/Maps.png" width="20" height="20" title="Mappa del <?php echo ($descrizione);?>"></a></td>

      </tr>
   <?php } while ($row_news = $query->fetch_assoc());?>

<?php
    function emailize($text)
{
    $regex = '/(\S+@\S+\.\S+)/';
    $replace = '<a href="mailto:$1">$1</a>';

    return preg_replace($regex, $replace, $text);
}?>

Я также искал альтернативный способ: не повторять название Стато и завернуть каждый город с его данными.Я пытался играть с группой mysql, но безрезультатно.И в любом случае не очень нравится это решение.Я думаю, что мне нужно знать, может быть, также Ajax, чтобы решить эту проблему, но в настоящее время я не могу научиться этому ... Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

Вы можете сделать одну вещь: сохранить "Stato" в array и проверить, существует ли значение в array или нет.Например:

<?Php
  mysqli_set_charset($connessione, 'utf-8');

    $sql = "SELECT * FROM reteconsolare ORDER BY Stato, Citta";

    $query = $connessione->query($sql) ;
    $Stato = array() ;
  while ($row = $query->fetch_assoc())  { 
        if(!in_array(sprintf($row["Stato"]),$Stato)){
        $stato=sprintf( $row["Stato"]); 
        $Stato = sprintf( $row["Stato"]);
        $citta=sprintf( $row["Citta"]);
        $indirizzo=sprintf( $row["Indirizzo"]);
        $descrizione=sprintf( $row["Descrizione"]);
        $email=sprintf( $row["Email"]);
        $telefono=sprintf( $row["Telefono"]);
        $mappa=sprintf( $row["Mappa"]);
        $link=sprintf( $row["URL"]);
        $id=sprintf( $row["ID"]);
         ?>  


         <tr>
    <td width="20%"><ts><?Php echo($stato) ?></ts></td>
    <td width="20%"><ts><?Php echo($citta) ?></ts></td>
    <td width="30%"><ts><?Php echo($indirizzo) ?></ts></td>
    <td width="10%"><ts><?Php echo($telefono) ?></ts></td>
    <td width="10%"><ts><?Php echo emailize($email) ?></ts></td>

    <td width="5%" align="center"><?Php echo(' <a target=_blank href='); echo($link);  echo('>'); ?><img src="img/www.png" width="20" height="20" title="Link al sito del <?php echo ($descrizione);?>"></a></td>
    <td width="5%" align="center"><?Php echo(' <a target=_blank href='); echo($mappa);  echo('>'); ?><img src="img/Maps.png" width="20" height="20" title="Mappa del <?php echo ($descrizione);?>"></a></td>

      </tr>
   <?php }} while ($row_news = $query->fetch_assoc());?>

<?php
    function emailize($text)
{
    $regex = '/(\S+@\S+\.\S+)/';
    $replace = '<a href="mailto:$1">$1</a>';

    return preg_replace($regex, $replace, $text);
}?>

Надеюсь, это сработает для вас.

0 голосов
/ 24 сентября 2018

Проверьте синтаксис в то время как:

 while ($row = $query->fetch_assoc())  { 
...
} while ($row_news = $query->fetch_assoc());

Правильный синтаксис:

while(condition) {
...
}

или

do {
...
} while(condition)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...