[RESOLU] Mettre le resultat d'une requete SQL dans une variable

Eléphanteau du PHP | 19 Messages

26 déc. 2015, 13:33

Bonjour

j'ai un script php (requete.php) qui interroge une base de donnée, et qui "output" le resultat avec echo:
<?php
$servername = "localhost";
$username = "hamdi";
$password = "motdepasse";
$dbname = "bdd";

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

$recheche = $_POST['id'];
$sql = "SELECT id, nom, numero FROM ami WHERE id = ".$recheche;
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Nom: ". $row["numero"]. "<br>";
    }
} else {
    echo "0 results";
}
$conn->close();
?>
Il fonctionne tres bien, cependant je n'ai besoin pas qu'il m'echo ce resultat mais juste qu'il mette son resultat dans une variable. par exemple "$reponse"

Sur d'autres scripts, par exemple script-a.php, script-b.php... je pourrais alors appeller ce script demande.php avec require; et il doit pouvoir me donner cette variable $reponse qui est le resultat de cette requete:
<?php
require 'demande.php';
echo $reponse;
?>
j'ai donc supprimé la partie qui produit un "echo" :
if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Nom: ". $row["numero"]. "<br>";
    }
} else {
    echo "0 results";
}
et je l'ai remplacé
$reponse = $result;

Lorsque j'essaye d'interroger ce script demande.php , à partir de script-a.php :
<?php
$servername = "localhost";
$username = "hamdi";
$password = "motdepasse";
$dbname = "bdd";

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

$recheche = $_POST['id'];
$sql = "SELECT id, nom, numero FROM ami WHERE id = ".$recheche;
$result = $conn->query($sql);

$reponse = $result;

$conn->close();
?>
j'obtiens toujours une erreur 500 ....
J'ai essayé en deplacant $reponse = $result; a diverse endroits, rien ni fait....

Quelqu'un sait-il pourquoi?

Merci pour votre aide :)

Mammouth du PHP | 2278 Messages

26 déc. 2015, 14:29

Bjr,
$resultats = array();
if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) 
    {
        $resultats[] = $row["numero"]; // ou $row["le champ voulu"];
        //echo "id: " . $row["id"]. " - Nom: ". $row["numero"]. "<br>";
    }
} else {
    echo "0 results";
}
et maintenant tu te sers du tableau resultats
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Mammouth du PHP | 2278 Messages

26 déc. 2015, 14:36

Mieux:
$resultats = array();
if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) 
    {

       $id = $row["id"];
       $numero = $row["numero"];
       $nom = $row["nom"]
        $resultats[$id] ["id"] = $id;
       $resultats[$id] ["numero"] = $numero;
       $resultats[$id] ["nom"] = $nom;
       //ou  simplement = $resultats[] = $row;
        //echo "id: " . $row["id"]. " - Nom: ". $row["numero"]. "<br>";
    }
} else {
    echo "0 results";
}
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 19 Messages

26 déc. 2015, 16:28

merci pour ta reponse mais ou je dois mettr'e ce code exactement?

en fait, j'ai juste besoin de mettre le resultat de la requete dans une variable mais surtout qu'il n'echo rien...

Eléphanteau du PHP | 19 Messages

26 déc. 2015, 16:30

par exemple je lui donne l'id, et au lieu qu'il m'affiche le resultat, il le met dans une variable $reponse que d'autres script php pourront utiliser.

Mammouth du PHP | 2703 Messages

26 déc. 2015, 17:21

$chaine = "";
while($row = $result->fetch_assoc()) {
$chaine .= "id: " . $row["id"]. " - Nom: ". $row["numero"]. "<br>";
}

Mammouth du PHP | 2278 Messages

26 déc. 2015, 19:07

Tu remplaces la ligne echo par ce que je t'indique, tu fais après :
} else {
    echo "0 results";
}
$reponses = serialize ($resultats);
tu mets $reponses dans une session ou tu l'enregistres dans un fichier ou tu la passes en
<input type="hidden" value = "$reponses"  name = "reponses"/>
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 19 Messages

26 déc. 2015, 22:33

Excellent :)
ça marche :)

Merci Or 1 et Sirakawa

bonne journée à vous et merci encore :)