0
votes

J'ai une forme avec une entrée comme des images et je ne peux pas comprendre comment envoyer l'attribut Nom de la balise d'entrée à la base de données MySQL?

Je souhaite donc que l'utilisateur sélectionne l'une des images à partir d'un formulaire affichée, mais je ne veux pas télécharger une image, envoyez simplement le nom de cette image à ma base de données.

J'ai vu quelques solutions sur le téléchargement images de la base de données, mais je ne peux pas comprendre comment simplement envoyer le nom de l'image sélectionnée par l'utilisateur p>

Le résultat final serait fondamentalement les informations envoyées à la base de données MySQL. P>

p>

<?php
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}


$roof_type = $_POST['roof_type'];

$sql = "INSERT INTO testing_database ". "(roof_type) ". "VALUES($roof_type)";

mysql_select_db('test');
        $retval = mysql_query( $sql, $conn );

        if(! $retval ) {
           die('Could not enter data: ' . mysql_error());
        }

        echo "Entered data successfully\n";

?>


7 commentaires

Que semble-t-il que votre actuel php d'obtenir les données de formulaire?


$ toit_type = mysqli_real_escapape_string ($ link, $ _Post ['toit_type']); écho ($ toit_type); J'essayais ce qui précède de voir si je reçois une réponse, mais cela n'affiche rien. Je reçois ces erreurs suivantes, si je clique sur une image: Avis: Variable non définie: Lien dans C: \ Xampp \ htdocs \ Test \ Test \ Action.php On Line 15 Avis: Index non défini: Toit_Type en C: \ Xampp \ htdocs \ Test \ Action.php On Line 15 Attention: mysqli_real_escapape_string () s'attend à ce que le paramètre 1 soit mysqli, null donné en C: \ xampp \ htdocs \ test \ action.php sur la ligne 15


Veuillez mettre à jour votre question et inclure le code source là-bas plutôt que d'essayer de le partager via la section Commentaires. Merci.


Bonjour, je vois que cette question a également une balise javascript à elle. Pouvez-vous utiliser jQuery?


Je n'ai pas beaucoup d'expérience avec JQuery, mais si vous pensez que cela m'aidera, je vais sûrement regarder.


Votre HTML n'est pas valide. Vous ne pouvez pas avoir la forme là-bas comme si c'était - il doit être entièrement contenu dans une cellule de table ou la table entière doit être dans le formulaire. La même chose s'applique aux autres éléments HTML que vous avez là ... ils sont invalides dans ce contexte


Merci tout le monde! J'ai utilisé les trois réponses pour obtenir ce dont j'avais besoin.


3 Réponses :


0
votes

Vous devrez utiliser des boutons radio. Créez simplement les images dans la table, puis sous chaque image dispose d'un bouton radio pour sélectionner cette image particulière.

En ce moment, en définissant votre type d'entrée à l'image, votre demande de message s'attend à ce que les données d'image, et non une sélection.

Voici un Lien aux boutons radio pour référence.


1 commentaires

Ouais que ce que je pensais aussi, mais je voulais le confirmer avant de descendre de cette façon. Merci pour la suggestion bien que



0
votes

Puisque vous avez déclaré que JQuery est une option pour vous ... vous pouvez le faire sans formulaire. Exemple xxx pré>

puis dans jQuery p> xxx pré>

Vous pouvez également ajouter un événement "Onclick" à chaque image P>

<img src="images/flat.png" id="flat" onclick="doFunction()" />


2 commentaires

Vous dites donc si je dois modifier l'attribut de classe à imgselect pour toutes les images de type d'entrée, puis écrivez la jQuery à l'intérieur des balises de script?


Plutôt. Cela vous ferait économiser beaucoup de programmation et de tracas avec la forme.



0
votes

Selon le commentaire ci-dessus, le HTML de la question n'était pas valide, donc j'ai apporté des modifications appropriées ci-dessous pour corriger cela. Le code ci-dessous utilise un champ caché qui est renseigné lorsqu'une image est cliquée à l'aide d'un simple javascript simple. Une fois que l'entrée cachée a été attribuée à l'attribut nom code> à partir de l'image, le formulaire est soumis - ainsi dans votre PHP, vous devriez maintenant accéder à $ _ post ['toit_type'] code>

<?php

    $conn = new mysqli($servername, $username, $password, $dbname);
    if ($conn->connect_error) die("Connection failed");

    if( $_SERVER['REQUEST_METHOD']=='POST' && isset( $_POST['roof_type'] ) ){
        $roof_type = $_POST['roof_type'];
        $sql='insert into `testing_database` set `roof_type`=?';
        $stmt=$conn->prepare($sql);

        if( $stmt ){
            $stmt->bind_param( 's', $roof_type );
            $res=$stmt->execute();
            $message = $res ? 'Entered data successfully' : 'Could not enter data';

            die( $message );            
        } else {
            exit('bad foo');
        }
    }
?>


5 commentaires

J'ai essayé cela avec le type d'entrée caché comme vous l'avez montré ici, mais je ne reçois toujours pas la valeur passée dans la base de données.


Veuillez ajouter le code que vous utilisez pour essayer d'ajouter ces informations à la base de données avec


L'API MYSQL a été obsolète il y a longtemps et a été retiré de PHP après V7. Quelle version de php avez-vous? En passant, il est possible de toute façon, l'injection SQL est possible. Vous semblez mélanger API - mySQL et mysqli


J'ai la version 10 de php, j'utilise xampp je ne sais pas si cela fait de la différence


Merci beaucoup, je l'ai changé en bouton radio mais vos suggestions ont été très utiles [