Récupérer des données Sql dans un input...
RésoluMon problème est que j'aimerai récupérer des données qui contiennent des espaces dans un input.
Car j'arrive à récupérer les données (en parti). Voilà un exemple:
ma données stocké est un club: AS karnac
et bien dans le input je ne récupère que AS
Donc voilà si vous avez des solutions.
N'hésiter pas!
Merci d'avance
Configuration: Windows XP Firefox 2.0.0.12
4 réponses
Le problème porte sur la récupération complète de données contenant des espaces via un input, car une valeur comme AS Karnac est affichée partiellement en AS dans le champ input après la requête. Plusieurs solutions techniques ont été évoquées, dont entourer les valeurs dans la requête par des guillemets simples et récupérer le résultat via des indices associatifs (NomClub) plutôt que des indices numériques, afin d'obtenir la chaîne entière. Des vérifications préalables sur la syntaxe PHP/MySQL, comme éviter des points-virgules superflus et tracer les erreurs avec mysql_error(), facilitent le diagnostic et la stabilité de la récupération. En pratique, la solution repose aussi sur la validation et le nettoyage des entrées, par exemple via preg_replace pour autoriser les caractères souhaités.
-
C'est bon j'ai trouvé une bidouille pour le club mais ca ne fonctionne pas avec adresse:
$requete2="SELECT * FROM insc_club WHERE NumClub='".$numclub."'";
//echo $requete2;
$résultat2=mysql_query($requete2,$connexion) or die ("pb avec la requette ".mysql_error()); //si il y a une erreur on arrete le script et on trace l'erreur
if(mysql_num_rows($résultat2)>0)
{ $numclub=$_POST['numclub'];//je récupère la variable par la méthode POST
//echo $numclub;
//si on a trouvé un on continue
$ligne=mysql_fetch_array($résultat2);
$nomclub=$ligne['NomClub'];// si le nom du champ nom du club est bien celui la sinon adaptes
echo' <p class="formulaire">Nom du club :
......
Merci-
-
@DiabloAndSabOk
Mais qd tu dis au debut du code , c'est j'espère entre les balises <form> </form> que tu l'as mis
Mais j'avoue ne pas trop comprendre ce que tu veux faire.
A+
@lain -
@Alain_42Oui, c'est bien entre les balises form.
En fait ce qui s'est passé s'est que ta solution ne fonctionnait pas car j'utilise isset et apparemment ca réinitialise les variables mais bon moi non je comprend pas trop mais j'ai testé et ça fonctionne. Pour ce cas.
Mais pour le cas de l'adresse ça ne fonctionne pas pourtant je fais ça:
$requete2="SELECT * FROM insc_mdc_nouv WHERE IdPart='".$IdPart."'";
//echo $requete2;
$résultat2=mysql_query($requete2,$connexion) or die ("pb avec la requette ".mysql_error()); //si il y a une erreur on arrete le script et on trace l'erreur
if(mysql_num_rows($résultat2)>0)
{
//si on a trouve un on continue
$ligne2=mysql_fetch_array($résultat2);
$adresse=$ligne2[4];// si le nom du champ nom du club est bien celui la sinon adaptes
echo '<p class="formulaire">Adresse :
<input type="text" name="adresse" value='.$adresse.' />';
}else{
echo 'Pas de donnés adresse trouvées !';
echo '<p class="formulaire">Adresse :
<input type="text" name="adresse" />';
}
En sachant qu'il y a déjà une autre requete en cours quand je fais ceci, et que "ligne2[4]"= champs d'adresse.
Merci Alain pour avoir suivi et pour ton aide! -
@Alain_42j'ai toujours pas trouvé donc la je me sers de urlencode() même si c'est pas fait pour ça c la seule chose qui m'affiche quelque chose mais il m'affiche des + à la place des espaces, et j'aimerai bien que la chaine soit retranscrit correctement.
Ce qui est fort c'est que kan je fais un echo je vois "14 rue abel guy" alors qu'avec urlencode() je vois "14+rue+abel+guy". Donc si qu'elqu'un à une solution qu'il ne se prive pas de la partager.
Merci d'avance -
@DiabloAndSabBonjour,
Dans ta base de données quel est l'interclassement de ton champ adresse ? "latin1_bin" ou autre.
Je vais essayer de prendre du temps pour me faire une petite base identique à la tienne pour tester ton code en réel.
@lain
-
-
Oui, d'accord mais pour mon problème de données ou je récupère que le premier segment
exemple:" AS karnac" dans la table me renvoie "AS" dans un input alors qu'en php avec un echo
ca me renvoie "AS karnac". Qui a une solution pour récupérer la donnée entière dans un input.
Merci d'avance à ceux qui me répondront-
Bonjour,
Essayes comme ça:
il faut les balises <form></form>
tu modifies les <p></p> si la présentation ne te va pas
<?php $requete2="SELECT * FROM insc_club WHERE NumClub='".$numclub."'"; //echo $requete2; $résultat2=mysql_query($requete2,$connexion) or die ("pb avec la requette ".mysql_error()); //si il y a une erreur on arrete le script et on trace l'erreur if(mysql_num_rows($résultat2)>0){ //si on a trouve un on continue $ligne=mysql_fetch_array($résultat2); $nomclub=$ligne['NomClub'];// si le nom du champ nom du club est bien celui la sinon adaptes ?> <p class="formulaire">Nom du club : <form name="form1" method="post" action="script_a_appeler.php"> <input type="text" name="nomclub" value="<?php echo $nomclub; ?>"/></p> <p><input type="submit" value="Enregistrer"> <input type="reset" value="Annuler"> </form> </p> <?php }else{ echo 'Pas de donnés trouvées !'; } ?> -
@Alain_42Merci Alain ca fonctionne très bien la seule chose, c'est que j'ai le même problème pour une adresse.
Faut il que je procède le même manière? En sachant que dans la table adresse j'ai 34 champs.
<?php
$IdPart=$_POST['dejaNouvEd'];
//echo $IdPart;
$connexion=mysql_connect("localhost","root","");
if($connexion)
{
mysql_select_db("spip_essai",$connexion);
$requete="select * from insc_mdc_nouv where IdPart=" .$IdPart. ";";
$resultat=mysql_query($requete,$connexion);
$ligne=mysql_fetch_array($resultat);
if ($ligne)
{..........
echo '<p class="formulaire">Adresse :
<input type="text" name="adresse" value='.$adresse.' />
...........................}
Merci Alain pour ta réponse précise et rapide -
@DiabloAndSab34 champs dans une adresse tu fais fort ?
Il faut faire pareil, mais n'interroge pas la base 34 fois.
si tout est dans la même table, tu fais une seule requette
SELECT * FROM....
et tu as dans l'array $ligne tous tes champs $ligne['code_postal'] par exemple etc...
remarque au passage: il faut mettre les SELECT , FROM WHERE en majuscules dans une requette, c'est plus facile à lire,et les nom de table de champ en minuscules si ils sont ainsi dans la base
et n'oublies pas les <form ...> </form> -
@Alain_42Désolé je me suis mal exprimé dans ma table il y a 34 champs mais mon champs adresse n'est que sur un champs.
en faite pour le club ca ne fonctionne pas mais c'est pas ton code.
Dans mon code j'utilise un isset et reset mes variables car quand je veux faire le update et bien il ne trouve plus le $numclub (est vide). Donc si tu sais comment éviter ce désagrément, j'attend ta réponse.
Merci
-
-
ok!
$requete2="Select * from insc_club where NumClub='".$numclub."';";
//echo $requete2;
$résultat2=mysql_query($requete2,$connexion);
$ligne=mysql_fetch_array($résultat2);
$nomclub=$ligne[1];
//echo $nomclub;
if($résultat2)
{
}else
{
echo 'Problème de récupération de donnés';
echo 'Ca ne fonctionne pas<br />';
}
echo ' <p class="formulaire">Nom du club :
<input type="text" name="nomclub" value='.$nomclub.'/></p>
<p><input type="submit" value="Enregistrer">
<input type="reset" value="Annuler"></p>';-
-
@Alain_42Je suis en php donc le 2eme ";"; et pour finir la ligne php.
Comme on fait une trace d'erreur?
Merci de ton aide alain -
@Alain_42Excuse moi je viens de me rendre compte qu'il y a la solution dans ton message.
Mais ça ne change rien car il n'y a aucune erreur puisqu'il récupère quelque chose.
Mon problème est de récupérer tout le contenu de l'enregistrement NomClub.
Merci d'avance à ce qui sauront éclairer ma lanterne. -
@DiabloAndSabPermet moi d'insister mais dans $requette2=... il ne faut pas les deux ;
exemple en php si tu veux faire echo $var;
tu mets $var="Bonjour";
et pas $var="Bonjour;";
essayes en l'enlevant.
essayes aussi avec $ligne['nom_champ_club'] au lieu de $ligne[1]
Sinon dans ta table tu as bien AS Karnac
et le champ il est en varachar latin bin 1 ?
@lain -
@Alain_42C'est une requête SQL. SQL requiert un ; au bout des requêtes si plusieurs se suivent.
S'il n'y a qu'une requête, le ';' n'est pas de trop pour autant.
-
-
Euh.. Salut, un petit bout de code pour qu'on puisse voir de quoi on parle stp ? ;o)